Skip to content

Commit

Permalink
Merge pull request #43 from VoIlAlex/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
VoIlAlex authored Feb 14, 2024
2 parents ab3fd55 + 6062949 commit 2a8b943
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 36 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


## [2.0.5] - 2024-02-14
### Fixes
- Critical bug with requirements overriding


## [2.0.4] - 2024-02-14
### Fixed
- Local packages and git packages installation doesn't add version to the end.
Expand Down
2 changes: 1 addition & 1 deletion aliases/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def run_setup(package_name: str, directory: str = '.'):
packages=find_packages(directory),
# Start with a small number and increase it with
# every change you make https://semver.org
version='2.0.4',
version='2.0.5',
# Chose a license from here: https: //
# help.github.com / articles / licensing - a -
# repository. For example: MIT
Expand Down
64 changes: 39 additions & 25 deletions requirements_txt/utils/pip/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,27 +75,31 @@ def add_installed_packages_to_requirements_txt(args: Iterable):
packages_without_version.append(package_name)
else:
requirements_dict[package_name] = package_version
for package_name in clustered_packages_names["git_packages"]:
requirements_dict[package_name] = None
for package_name in clustered_packages_names["file_system_packages"]:
requirements_dict[package_name] = None

clustered_packages_names = cluster_package_names(list(requirements_dict.keys()))
print(clustered_packages_names)
with open(requirements_txt_path, "w+") as f:
f.writelines([f"{package_name}\n" for package_name in packages_without_version])
f.writelines(
[
f"{package_name}=={requirements_dict[package_name]}\n"
for package_name in clustered_packages_names["pypi_packages"]
]
)
f.writelines(
[
f"{package_name}\n"
for package_name in clustered_packages_names["git_packages"]
]
)
f.writelines(
[
f"{package_name}\n"
for package_name in clustered_packages_names["file_system_packages"]
]
)
lines_to_write = []
lines_to_write += [
f"{package_name}\n" for package_name in packages_without_version
]
lines_to_write += [
f"{package_name}=={requirements_dict[package_name]}\n"
for package_name in clustered_packages_names["pypi_packages"]
]
lines_to_write += [
f"{package_name}\n"
for package_name in clustered_packages_names["git_packages"]
]
lines_to_write += [
f"{package_name}\n"
for package_name in clustered_packages_names["file_system_packages"]
]
f.writelines(lines_to_write)


def remove_uninstalled_packages_from_requirements_txt(args: Iterable):
Expand All @@ -122,13 +126,23 @@ def remove_uninstalled_packages_from_requirements_txt(args: Iterable):
if package_name in args_packages_names and package_name not in packages:
del requirements_dict[package_name]

clustered_packages_names = cluster_package_names(list(requirements_dict.keys()))

with open(requirements_txt_path, "w+") as f:
f.writelines(
[
f"{package_name}=={package_version}\n"
for package_name, package_version in requirements_dict.items()
]
)
lines_to_write = []
lines_to_write += [
f"{package_name}=={requirements_dict[package_name]}\n"
for package_name in clustered_packages_names["pypi_packages"]
]
lines_to_write += [
f"{package_name}\n"
for package_name in clustered_packages_names["git_packages"]
]
lines_to_write += [
f"{package_name}\n"
for package_name in clustered_packages_names["file_system_packages"]
]
f.writelines(lines_to_write)


__all__ = [
Expand Down
24 changes: 14 additions & 10 deletions tests/integrationtests/test_pip.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import re
import sys
import tempfile
import os
Expand Down Expand Up @@ -50,8 +51,9 @@ def test_package_installation(self):
with open(requirements_txt_path, 'r') as requirements_file:
requirements = [x.strip() for x in requirements_file.readlines()]

assert len(requirements) == 1
assert requirements[0] == 'appdata==2.2.1'
assert len(requirements) == 3
assert re.compile('to-requirements\.txt==.*').fullmatch(requirements[0])
assert requirements[1] == 'appdata==2.2.1'
assert is_importable('appdata')

def test_local_package_installation(self):
Expand All @@ -65,9 +67,9 @@ def test_local_package_installation(self):
requirements_txt_path = os.path.join(path, 'requirements.txt')
with open(requirements_txt_path, 'r') as requirements_file:
requirements = [x.strip() for x in requirements_file.readlines()]

assert len(requirements) == 1
assert requirements[0] == path_to_local_package
assert len(requirements) == 3
assert re.compile('to-requirements\.txt==.*').fullmatch(requirements[0])
assert requirements[2] == path_to_local_package
assert is_importable('test_package')

def test_git_package_installation(self):
Expand All @@ -79,8 +81,9 @@ def test_git_package_installation(self):
with open(requirements_txt_path, 'r') as requirements_file:
requirements = [x.strip() for x in requirements_file.readlines()]

assert len(requirements) == 1
assert requirements[0] == package_name
assert len(requirements) == 3
assert re.compile('to-requirements\.txt==.*').fullmatch(requirements[0])
assert requirements[1] == package_name
assert is_importable('appdata')

def test_package_uninstallation(self):
Expand All @@ -91,13 +94,14 @@ def test_package_uninstallation(self):
with open(requirements_txt_path, 'r') as requirements_file:
requirements = [x.strip() for x in requirements_file.readlines()]

assert len(requirements) == 1
assert requirements[0] == 'appdata==2.2.1'
assert len(requirements) == 3
assert re.compile('to-requirements\.txt==.*').fullmatch(requirements[0])
assert requirements[1] == 'appdata==2.2.1'
assert is_importable('appdata')

uninstall_package('appdata')
with open(requirements_txt_path, 'r') as requirements_file:
requirements = [x.strip() for x in requirements_file.readlines()]

assert len(requirements) == 0
assert len(requirements) == 2
assert not is_importable('appdata')

0 comments on commit 2a8b943

Please sign in to comment.