Skip to content

Commit

Permalink
Find next version robust to dash or underscore (#27)
Browse files Browse the repository at this point in the history
* find latest version is now robust to use of "-" and "_" without distinction

* update changelog

* readme typo

---------

Co-authored-by: Ádám Juhász <91451893+ajuhasz10@users.noreply.github.com>
  • Loading branch information
francesco086 and ajuhasz10 authored Feb 13, 2024
1 parent d546d5d commit 62b65e5
Show file tree
Hide file tree
Showing 6 changed files with 279 additions and 2 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
Anything MAY change at any time. The public API SHOULD NOT be considered stable.").
While in this phase, we will denote breaking changes with a minor increase.

## 0.4.2

### Fixed

* `dac next-version` is able to find the existing version of a package irrespectively of the use of `-` or `_` as a separator.

## 0.4.1

### Added
Expand Down
5 changes: 3 additions & 2 deletions src/dac/_version_management.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ def find_latest_version(pkg_name: str, major: Optional[int] = None) -> str:
],
stderr=subprocess.DEVNULL,
)
last_line = output.decode("utf-8").splitlines()[-1]
output_lines = output.decode("utf-8").splitlines()
would_install_line = [line for line in output_lines if "Would install" in line][0]
regex_rule = f"{pkg_name.replace('_', '-')}-{major if major is not None else ''}.[^ ]+"
match = re.search(regex_rule, last_line)
match = re.search(regex_rule, would_install_line.replace("_", "-"))
assert match is not None
return match[0][len(f"{pkg_name}-") :]

Expand Down
8 changes: 8 additions & 0 deletions test/data/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,14 @@ def get_sample_pandas_df() -> pd.DataFrame:
)


def get_pip_log_with_dash() -> str:
return (Path(__file__).parent / "pip_log" / "log_for_investing_algorithm_framework_with_dash.txt").read_text()


def get_pip_log_with_underscore() -> str:
return (Path(__file__).parent / "pip_log" / "log_for_investing_algorithm_framework_with_underscore.txt").read_text()


def generate_random_project_name() -> str:
return "".join(random.choice(string.ascii_lowercase) for _ in range(16))

Expand Down
104 changes: 104 additions & 0 deletions test/data/pip_log/log_for_investing_algorithm_framework_with_dash.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
Looking in indexes: https://****:****@****/simple, https://pypi.org/simple
Collecting investing-algorithm-framework
Downloading investing_algorithm_framework-2.3.2-py3-none-any.whl.metadata (29 kB)
Requirement already satisfied: wrapt>=1.11.2 in ./venv/lib/python3.10/site-packages (from investing-algorithm-framework) (1.15.0)
Collecting Flask>=2.3.2 (from investing-algorithm-framework)
Downloading flask-3.0.2-py3-none-any.whl.metadata (3.6 kB)
Collecting Flask-Migrate>=2.6.0 (from investing-algorithm-framework)
Downloading Flask_Migrate-4.0.5-py3-none-any.whl.metadata (3.1 kB)
Collecting Flask-Cors>=3.0.9 (from investing-algorithm-framework)
Downloading Flask_Cors-4.0.0-py2.py3-none-any.whl.metadata (5.4 kB)
Collecting SQLAlchemy>=2.0.18 (from investing-algorithm-framework)
Downloading SQLAlchemy-2.0.26-cp310-cp310-macosx_11_0_arm64.whl.metadata (9.6 kB)
Collecting marshmallow>=3.5.0 (from investing-algorithm-framework)
Using cached marshmallow-3.20.2-py3-none-any.whl.metadata (7.5 kB)
Requirement already satisfied: setuptools>=60.9.0 in ./venv/lib/python3.10/site-packages (from investing-algorithm-framework) (68.0.0)
Collecting ccxt>=3.0.57 (from investing-algorithm-framework)
Downloading ccxt-4.2.44-py2.py3-none-any.whl.metadata (107 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.6/107.6 kB 8.1 MB/s eta 0:00:00
Requirement already satisfied: python-dateutil>=2.8.2 in ./venv/lib/python3.10/site-packages (from investing-algorithm-framework) (2.8.2)
Requirement already satisfied: MarkupSafe>=2.1.2 in ./venv/lib/python3.10/site-packages (from investing-algorithm-framework) (2.1.3)
Collecting dependency-injector>=4.40.0 (from investing-algorithm-framework)
Downloading dependency-injector-4.41.0.tar.gz (913 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 913.2/913.2 kB 29.1 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Collecting schedule>=1.1.0 (from investing-algorithm-framework)
Downloading schedule-1.2.1-py2.py3-none-any.whl.metadata (3.3 kB)
Requirement already satisfied: pandas>=2.0.0 in ./venv/lib/python3.10/site-packages (from investing-algorithm-framework) (2.1.4)
Collecting tqdm>=4.66.1 (from investing-algorithm-framework)
Downloading tqdm-4.66.2-py3-none-any.whl.metadata (57 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.6/57.6 kB 7.5 MB/s eta 0:00:00
Collecting tabulate>=0.9.0 (from investing-algorithm-framework)
Using cached tabulate-0.9.0-py3-none-any.whl (35 kB)
Collecting polars==0.20.5 (from polars[numpy,pandas]==0.20.5->investing-algorithm-framework)
Downloading polars-0.20.5-cp38-abi3-macosx_11_0_arm64.whl.metadata (15 kB)
Requirement already satisfied: numpy>=1.16.0 in ./venv/lib/python3.10/site-packages (from polars[numpy,pandas]==0.20.5->investing-algorithm-framework) (1.26.1)
Requirement already satisfied: pyarrow>=7.0.0 in ./venv/lib/python3.10/site-packages (from polars[numpy,pandas]==0.20.5->investing-algorithm-framework) (11.0.0)
Requirement already satisfied: certifi>=2018.1.18 in ./venv/lib/python3.10/site-packages (from ccxt>=3.0.57->investing-algorithm-framework) (2023.7.22)
Requirement already satisfied: requests>=2.18.4 in ./venv/lib/python3.10/site-packages (from ccxt>=3.0.57->investing-algorithm-framework) (2.28.2)
Requirement already satisfied: cryptography>=2.6.1 in ./venv/lib/python3.10/site-packages (from ccxt>=3.0.57->investing-algorithm-framework) (41.0.7)
Requirement already satisfied: typing-extensions>=4.4.0 in ./venv/lib/python3.10/site-packages (from ccxt>=3.0.57->investing-algorithm-framework) (4.8.0)
Requirement already satisfied: aiohttp>=3.8 in ./venv/lib/python3.10/site-packages (from ccxt>=3.0.57->investing-algorithm-framework) (3.9.1)
Collecting aiodns>=1.1.1 (from ccxt>=3.0.57->investing-algorithm-framework)
Downloading aiodns-3.1.1-py3-none-any.whl.metadata (4.0 kB)
Requirement already satisfied: yarl>=1.7.2 in ./venv/lib/python3.10/site-packages (from ccxt>=3.0.57->investing-algorithm-framework) (1.9.4)
Requirement already satisfied: six<=1.16.0,>=1.7.0 in ./venv/lib/python3.10/site-packages (from dependency-injector>=4.40.0->investing-algorithm-framework) (1.16.0)
Collecting Werkzeug>=3.0.0 (from Flask>=2.3.2->investing-algorithm-framework)
Downloading werkzeug-3.0.1-py3-none-any.whl.metadata (4.1 kB)
Requirement already satisfied: Jinja2>=3.1.2 in ./venv/lib/python3.10/site-packages (from Flask>=2.3.2->investing-algorithm-framework) (3.1.2)
Collecting itsdangerous>=2.1.2 (from Flask>=2.3.2->investing-algorithm-framework)
Using cached itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Requirement already satisfied: click>=8.1.3 in ./venv/lib/python3.10/site-packages (from Flask>=2.3.2->investing-algorithm-framework) (8.1.6)
Collecting blinker>=1.6.2 (from Flask>=2.3.2->investing-algorithm-framework)
Downloading blinker-1.7.0-py3-none-any.whl.metadata (1.9 kB)
Collecting Flask-SQLAlchemy>=1.0 (from Flask-Migrate>=2.6.0->investing-algorithm-framework)
Downloading flask_sqlalchemy-3.1.1-py3-none-any.whl.metadata (3.4 kB)
Collecting alembic>=1.9.0 (from Flask-Migrate>=2.6.0->investing-algorithm-framework)
Using cached alembic-1.13.1-py3-none-any.whl.metadata (7.4 kB)
Requirement already satisfied: packaging>=17.0 in ./venv/lib/python3.10/site-packages (from marshmallow>=3.5.0->investing-algorithm-framework) (23.2)
Requirement already satisfied: pytz>=2020.1 in ./venv/lib/python3.10/site-packages (from pandas>=2.0.0->investing-algorithm-framework) (2023.3.post1)
Requirement already satisfied: tzdata>=2022.1 in ./venv/lib/python3.10/site-packages (from pandas>=2.0.0->investing-algorithm-framework) (2023.4)
Collecting pycares>=4.0.0 (from aiodns>=1.1.1->ccxt>=3.0.57->investing-algorithm-framework)
Downloading pycares-4.4.0-cp310-cp310-macosx_10_9_universal2.whl.metadata (4.1 kB)
Requirement already satisfied: attrs>=17.3.0 in ./venv/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt>=3.0.57->investing-algorithm-framework) (23.2.0)
Requirement already satisfied: multidict<7.0,>=4.5 in ./venv/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt>=3.0.57->investing-algorithm-framework) (6.0.4)
Requirement already satisfied: frozenlist>=1.1.1 in ./venv/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt>=3.0.57->investing-algorithm-framework) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in ./venv/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt>=3.0.57->investing-algorithm-framework) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0 in ./venv/lib/python3.10/site-packages (from aiohttp>=3.8->ccxt>=3.0.57->investing-algorithm-framework) (4.0.3)
Collecting Mako (from alembic>=1.9.0->Flask-Migrate>=2.6.0->investing-algorithm-framework)
Downloading Mako-1.3.2-py3-none-any.whl.metadata (2.9 kB)
Requirement already satisfied: cffi>=1.12 in ./venv/lib/python3.10/site-packages (from cryptography>=2.6.1->ccxt>=3.0.57->investing-algorithm-framework) (1.16.0)
Requirement already satisfied: charset-normalizer<4,>=2 in ./venv/lib/python3.10/site-packages (from requests>=2.18.4->ccxt>=3.0.57->investing-algorithm-framework) (3.2.0)
Requirement already satisfied: idna<4,>=2.5 in ./venv/lib/python3.10/site-packages (from requests>=2.18.4->ccxt>=3.0.57->investing-algorithm-framework) (3.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./venv/lib/python3.10/site-packages (from requests>=2.18.4->ccxt>=3.0.57->investing-algorithm-framework) (1.26.18)
Requirement already satisfied: pycparser in ./venv/lib/python3.10/site-packages (from cffi>=1.12->cryptography>=2.6.1->ccxt>=3.0.57->investing-algorithm-framework) (2.21)
Downloading investing_algorithm_framework-2.3.2-py3-none-any.whl (115 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 115.4/115.4 kB 17.1 MB/s eta 0:00:00
Downloading polars-0.20.5-cp38-abi3-macosx_11_0_arm64.whl (24.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.4/24.4 MB 25.2 MB/s eta 0:00:00
Downloading ccxt-4.2.44-py2.py3-none-any.whl (4.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 27.0 MB/s eta 0:00:00
Downloading flask-3.0.2-py3-none-any.whl (101 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.3/101.3 kB 12.5 MB/s eta 0:00:00
Downloading Flask_Cors-4.0.0-py2.py3-none-any.whl (14 kB)
Downloading Flask_Migrate-4.0.5-py3-none-any.whl (21 kB)
Using cached marshmallow-3.20.2-py3-none-any.whl (49 kB)
Downloading schedule-1.2.1-py2.py3-none-any.whl (11 kB)
Downloading SQLAlchemy-2.0.26-cp310-cp310-macosx_11_0_arm64.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 25.2 MB/s eta 0:00:00
Downloading tqdm-4.66.2-py3-none-any.whl (78 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.3/78.3 kB 11.9 MB/s eta 0:00:00
Downloading aiodns-3.1.1-py3-none-any.whl (5.4 kB)
Using cached alembic-1.13.1-py3-none-any.whl (233 kB)
Downloading blinker-1.7.0-py3-none-any.whl (13 kB)
Downloading flask_sqlalchemy-3.1.1-py3-none-any.whl (25 kB)
Downloading werkzeug-3.0.1-py3-none-any.whl (226 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 226.7/226.7 kB 17.4 MB/s eta 0:00:00
Downloading pycares-4.4.0-cp310-cp310-macosx_10_9_universal2.whl (136 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 136.8/136.8 kB 18.0 MB/s eta 0:00:00
Downloading Mako-1.3.2-py3-none-any.whl (78 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.7/78.7 kB 10.4 MB/s eta 0:00:00
Would install Flask-3.0.2 Flask-Cors-4.0.0 Flask-Migrate-4.0.5 Flask-SQLAlchemy-3.1.1 Mako-1.3.2 SQLAlchemy-2.0.26 Werkzeug-3.0.1 aiodns-3.1.1 alembic-1.13.1 blinker-1.7.0 ccxt-4.2.44 dependency-injector-4.41.0 investing-algorithm-framework-2.3.2 itsdangerous-2.1.2 marshmallow-3.20.2 polars-0.20.5 pycares-4.4.0 schedule-1.2.1 tabulate-0.9.0 tqdm-4.66.2

[notice] A new release of pip is available: 23.3.2 -> 24.0
[notice] To update, run: pip install --upgrade pip
Loading

0 comments on commit 62b65e5

Please sign in to comment.