Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,11 @@ jobs:
with:
python-version: "${{ matrix.python-version }}"
architecture: x64
- name: Set up uv
uses: astral-sh/setup-uv@v7
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel
pip install -e .[test]
uv pip install --system -e ".[test]"
- name: Test with pytest
run: |
pytest upgrade/tests
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ share/python-wheels/
*.egg
MANIFEST

# setuptools_scm generated version file (created during editable installs)
upgrade/_version.py

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
Expand Down
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,18 @@
# upgrade-python-package
Small script for updating a python package and its dependencies and running setup cmds
Small script for updating a python package (and its dependencies) and running post-install commands.

## Development

Install in editable mode with test dependencies:

```sh
uv pip install -e ".[test]"
```

Run tests:

```sh
pytest upgrade/tests
```

Note: the upgrade scripts prefer `uv pip` for install/uninstall operations when `uv` is available, and fall back to `python -m pip` otherwise.
72 changes: 72 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
[build-system]
requires = [
"setuptools>=68",
"setuptools_scm>=8",
"wheel",
]
build-backend = "setuptools.build_meta"

[project]
name = "upgrade-python-package"
description = "A script for upgrading python packages"
readme = "README.md"
requires-python = ">=3.8"
license = { file = "LICENSE" }
authors = [
{ name = "Open Law Library", email = "info@openlawlib.org" },
]
keywords = ["upgrade", "python", "package"]
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Topic :: Software Development :: Build Tools",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Operating System :: OS Independent",
]
dependencies = [
"lxml>=4.9",
"requests==2.*",
"packaging>=24.1",
]
dynamic = ["version"]

[project.optional-dependencies]
dev = [
"wheel",
]
test = [
"build",
"flake8",
"pytest",
"mock",
"setuptools",
]

[project.scripts]
upgrade = "upgrade.scripts.upgrade_python_package:main"
managevenv = "upgrade.scripts.manage_venv:main"
find-compatible-version = "upgrade.scripts.find_compatible_versions:main"

[project.urls]
Homepage = "https://github.com/openlawlibrary/upgrade-python-package"
Changelog = "https://github.com/openlawlibrary/upgrade-python-package/blob/main/CHANGELOG.md"

[tool.setuptools]
include-package-data = true

[tool.setuptools.packages.find]
where = ["."]
include = ["upgrade*"]

[tool.setuptools_scm]
write_to = "upgrade/_version.py"
write_to_template = "__version__ = \"{version}\"\n"
56 changes: 0 additions & 56 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,60 +1,4 @@
[metadata]
name = upgrade-python-package
author = Open Law Library
author_email = info@openlawlib.org
description = A script for upgrading python packages
keywords = upgrade python package
url = https://github.com/openlawlibrary/upgrade-python-package
long_description = file: README.md
classifiers =
Development Status :: 2 - Pre-Alpha
Intended Audience :: Developers
Intended Audience :: Information Technology
Topic :: Software Development :: Build Tools
License :: OSI Approved :: Apache Software License
Natural Language :: English
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
Programming Language :: Python :: Implementation :: CPython
Operating System :: OS Independent

[options]
install_requires =
lxml >= 4.9
requests == 2.*
packaging >= 24.1
packages = upgrade.scripts
zip_safe = False
include_package_data = True
package_dir =
upgrade = upgrade
test_suite = tests
setup_requires = setuptools_scm

[options.extras_require]
dev =
wheel
test =
flake8
pytest
mock
setuptools


[bdist_wheel]
universal = 1

[flake8]
max-line-length = 100
exclude = .git/*,.eggs/*,
build/*,venv/*

[options.entry_points]
console_scripts =
upgrade = upgrade.scripts.upgrade_python_package:main
managevenv = upgrade.scripts.manage_venv:main
find-compatible-version = upgrade.scripts.find_compatible_versions:main
11 changes: 0 additions & 11 deletions setup.py

This file was deleted.

4 changes: 4 additions & 0 deletions upgrade/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
try:
from ._version import __version__ # type: ignore
except Exception:
__version__ = "0+unknown"
11 changes: 6 additions & 5 deletions upgrade/scripts/manage_venv.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
is_development_cloudsmith,
run,
pip,
installer,
create_directory,
get_venv_executable,
on_rm_error,
Expand Down Expand Up @@ -52,7 +53,7 @@ def venv(*args, **kwargs):
def install_system_dependencies(venv_executable: str) -> None:
for dependency in SYSTEM_DEPENDENCIES:
try:
pip(
installer(
"install",
"--upgrade",
f"{dependency}",
Expand All @@ -76,14 +77,14 @@ def install_upgrade_python_package(
try:
if local_installation_path:
# for local testing of unreleased upgrade-python-package
pip(
installer(
"install",
"-e",
str(Path(local_installation_path)),
py_executable=venv_executable,
)
else:
pip(
installer(
"install",
"--upgrade",
upgrade_python_package,
Expand Down Expand Up @@ -139,7 +140,7 @@ def upgrade_venv(
if update_from_local_wheels:
upgrade_args.append("--update-from-local-wheels")

result += run(*(upgrade_args), check=False)
result += run(*(upgrade_args), check=False) or ""

return result
except Exception as e:
Expand Down Expand Up @@ -225,7 +226,7 @@ def temporary_upgrade_venv(venv_path: str, blue_green_deployment: bool) -> str:
if backup_venv_path.exists():
shutil.rmtree(backup_venv_path, onerror=on_rm_error)

shutil.copytree(venv_path, str(backup_venv_path))
shutil.copytree(venv_path, str(backup_venv_path), symlinks=True)
yield get_venv_executable(backup_venv_path)
except Exception as e:
logging.error(f"Error occurred while creating temporary venv: {str(e)}")
Expand Down
Loading
Loading