From a5838c3b30051d12136840b6b630b24a8e83622e Mon Sep 17 00:00:00 2001 From: Branch Vincent Date: Tue, 1 Jul 2025 20:26:09 -0700 Subject: [PATCH 1/2] embed version in sdist and migrate to pyproject.toml --- .github/workflows/publish.yaml | 5 ++--- src/pyproject.toml | 22 ++++++++++++++++++++++ src/setup.py | 22 ---------------------- 3 files changed, 24 insertions(+), 25 deletions(-) create mode 100644 src/pyproject.toml delete mode 100644 src/setup.py diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index a17d38e..424e789 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -12,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up Python 3.10 + - name: Set up Python 3.10 uses: actions/setup-python@v2 with: python-version: "3.10" @@ -24,9 +24,8 @@ jobs: - name: Build a binary wheel and a source tarball run: | cd src + sed -i 's/^version = ".*"$/version = "'${GITHUB_REF_NAME#v}'"/' pyproject.toml python -m build --sdist --wheel --outdir dist/ . - env: - BUILD_TAG: ${{ github.ref_name }} - name: Publish distribution 📦 to Test PyPI uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/src/pyproject.toml b/src/pyproject.toml new file mode 100644 index 0000000..ad06866 --- /dev/null +++ b/src/pyproject.toml @@ -0,0 +1,22 @@ +[project] +name = "pycomposefile" +version = "0.0.1a1" +description = "Structured deserialization of Docker Compose files." +readme = "README.md" +authors = [ + { name = "Steven Murawski", email = "steven.murawski@microsoft.com" }, +] +requires-python = ">=3.6" +dependencies = ["pyyaml"] +keywords = ["docker", "compose"] +license = "MIT" + +[project.urls] +Homepage = "https://github.com/smurawski/pycomposefile" + +[tool.flit.sdist] +include = ["tests/"] + +[build-system] +requires = ["flit_core >=3.11,<4"] +build-backend = "flit_core.buildapi" diff --git a/src/setup.py b/src/setup.py deleted file mode 100644 index 9ee0d83..0000000 --- a/src/setup.py +++ /dev/null @@ -1,22 +0,0 @@ -import setuptools -import os - -long_desc = open("README.md").read() -required = ['pyyaml'] # Comma seperated dependent libraries name -version = os.environ.get("BUILD_TAG", "0.0.1a1").lstrip("v") - -setuptools.setup( - name="pycomposefile", - version=version, - author="Steven Murawski", - author_email="steven.murawski@microsoft.com", - license="MIT", - description="Structured deserialization of Docker Compose files.", - long_description=long_desc, - long_description_content_type="text/markdown", - url="https://github.com/smurawski/pycomposefile", - packages=setuptools.find_packages(), - key_words="docker compose", - install_requires=required, - python_requires=">=3.6", -) From 859c059086b9d1165c09bb28b1fb76342856a2b0 Mon Sep 17 00:00:00 2001 From: Branch Vincent Date: Tue, 22 Jul 2025 09:04:41 -0700 Subject: [PATCH 2/2] fix lint and add python 3.13 --- .github/workflows/build.yaml | 1 + .../compose_element/compose_datatype_transformer.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a4b27d2..5777573 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -18,6 +18,7 @@ jobs: include: - python-version: "3.11" - python-version: "3.12" + - python-version: "3.13" - python-version: "3.10" steps: - uses: actions/checkout@v2 diff --git a/src/pycomposefile/compose_element/compose_datatype_transformer.py b/src/pycomposefile/compose_element/compose_datatype_transformer.py index 2baf4ac..5ca31e3 100644 --- a/src/pycomposefile/compose_element/compose_datatype_transformer.py +++ b/src/pycomposefile/compose_element/compose_datatype_transformer.py @@ -68,7 +68,7 @@ def replace_environment_variables_with_empty_unset(self, value): default_value = matches.group("defaultvalue") if env_var is None or len(env_var) == 0: env_var = default_value - escaped = re.sub(r"([*+?{}])", r"\\\1", matches[0]) # escape special characters + escaped = re.sub(r"([*+?{}])", r"\\\1", matches[0]) # escape special characters value = self.update_value_with_resolved_environment(f"\\{escaped}", env_var, value) matches = capture.search(value) return value