From 165ed3f2a3b5595d4071f754db298baa079f7177 Mon Sep 17 00:00:00 2001 From: d33bs Date: Mon, 18 Dec 2023 15:22:07 -0700 Subject: [PATCH 1/9] add version detection utility --- cytotable/utils.py | 21 +++++++++++++++++++++ poetry.lock | 20 +++++++++++++++----- pyproject.toml | 1 + tests/test_convert.py | 9 +++++++++ 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/cytotable/utils.py b/cytotable/utils.py index 371e575e..89981493 100644 --- a/cytotable/utils.py +++ b/cytotable/utils.py @@ -6,6 +6,9 @@ import multiprocessing import os import pathlib + +import pkg_resources +import dunamai from typing import Any, Dict, Union, cast import duckdb @@ -453,3 +456,21 @@ def _expand_path( modifed_path = modifed_path.expanduser() return modifed_path.resolve() + + +def _get_cytotable_version() -> str: + """ + Seeks the current version of CytoTable using either pkg_resources + or dunamai to determine the current version being used. + + Returns: + str + A string representing the version of CytoTable currently being used. + """ + try: + # attempt to gather the pkg_resources version (for PyPI) + return pkg_resources.get_distribution(__name__).version + except pkg_resources.DistributionNotFound: + # else grab the version-control-based version + return dunamai.Version.from_any_vcs().serialize() + diff --git a/poetry.lock b/poetry.lock index c0b2d282..0f7ab72c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -848,6 +848,20 @@ files = [ {file = "duckdb-0.9.0.tar.gz", hash = "sha256:3a52c975cc13b965580cd00af1538b2d9f6b896431f97121dbee7ce715edcd2a"}, ] +[[package]] +name = "dunamai" +version = "1.19.0" +description = "Dynamic version generation" +optional = false +python-versions = ">=3.5,<4.0" +files = [ + {file = "dunamai-1.19.0-py3-none-any.whl", hash = "sha256:1ed948676bbf0812bfaafe315a134634f8d6eb67138513c75aa66e747404b9c6"}, + {file = "dunamai-1.19.0.tar.gz", hash = "sha256:6ad99ae34f7cd290550a2ef1305d2e0292e6e6b5b1b830dfc07ceb7fd35fec09"}, +] + +[package.dependencies] +packaging = ">=20.9" + [[package]] name = "ecdsa" version = "0.18.0" @@ -1217,7 +1231,6 @@ files = [ {file = "greenlet-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74"}, {file = "greenlet-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343"}, {file = "greenlet-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae"}, - {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c"}, {file = "greenlet-2.0.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df"}, {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088"}, {file = "greenlet-2.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb"}, @@ -1226,7 +1239,6 @@ files = [ {file = "greenlet-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91"}, {file = "greenlet-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645"}, {file = "greenlet-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c"}, - {file = "greenlet-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47"}, {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca"}, {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0"}, {file = "greenlet-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2"}, @@ -1256,7 +1268,6 @@ files = [ {file = "greenlet-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7"}, {file = "greenlet-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3"}, {file = "greenlet-2.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30"}, - {file = "greenlet-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1"}, {file = "greenlet-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b"}, {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526"}, {file = "greenlet-2.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b"}, @@ -1265,7 +1276,6 @@ files = [ {file = "greenlet-2.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a"}, {file = "greenlet-2.0.2-cp38-cp38-win32.whl", hash = "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249"}, {file = "greenlet-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40"}, - {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417"}, {file = "greenlet-2.0.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8"}, {file = "greenlet-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6"}, {file = "greenlet-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df"}, @@ -3545,4 +3555,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.13" -content-hash = "72708f924862e4de1a0a11f8717896cc54f99e4a363335f7c5592e37b245822c" +content-hash = "f6e9629bdaa0165902afcf5388b082f69d216277beedf7b42bd7fbb315dce0f7" diff --git a/pyproject.toml b/pyproject.toml index 08eeb06e..a962e880 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ pyarrow = ">=13.0.0" cloudpathlib = {extras = ["all"], version = "^0.15.0"} duckdb = ">=0.8.0" parsl = ">=2023.9.25" +dunamai = "^1.19.0" [tool.poetry.dev-dependencies] pytest = "^7.4.0" diff --git a/tests/test_convert.py b/tests/test_convert.py index 50d78a88..ca774ed5 100644 --- a/tests/test_convert.py +++ b/tests/test_convert.py @@ -38,6 +38,7 @@ _duckdb_reader, _expand_path, _sqlite_mixed_type_query_to_parquet, + _get_cytotable_version ) @@ -59,6 +60,12 @@ def test_config(): ] ) == sorted(config_preset.keys()) +def test_get_cytotable_version(): + """ + Tests get_cytotable_version + """ + + assert isinstance(_get_cytotable_version(), str) def test_existing_dest_path(fx_tempdir: str, data_dir_cellprofiler_sqlite_nf1: str): """ @@ -1024,3 +1031,5 @@ def test_cell_health_cellprofiler_to_cytominer_database_legacy( ] ) ) + + From 4edfbb9f7b9dadc1f0e9b09229c3b0648f3f2fb9 Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 07:21:58 -0700 Subject: [PATCH 2/9] manage semver with poetry-dynamic-versioning --- cytotable/__init__.py | 4 ++++ cytotable/utils.py | 8 ++++---- pyproject.toml | 16 ++++++++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/cytotable/__init__.py b/cytotable/__init__.py index 2e18234c..fae02463 100644 --- a/cytotable/__init__.py +++ b/cytotable/__init__.py @@ -1,6 +1,10 @@ """ __init__.py for cytotable """ + +# note: version data here is maintained by poetry-dynamic-versioning +__version__ = "0.0.0" + from .convert import convert from .exceptions import ( CytoTableException, diff --git a/cytotable/utils.py b/cytotable/utils.py index 89981493..7687775c 100644 --- a/cytotable/utils.py +++ b/cytotable/utils.py @@ -468,9 +468,9 @@ def _get_cytotable_version() -> str: A string representing the version of CytoTable currently being used. """ try: - # attempt to gather the pkg_resources version (for PyPI) - return pkg_resources.get_distribution(__name__).version - except pkg_resources.DistributionNotFound: - # else grab the version-control-based version + # attempt to gather the development version from dunamai return dunamai.Version.from_any_vcs().serialize() + except RuntimeError: + # else grab the static version from __init__.py + return diff --git a/pyproject.toml b/pyproject.toml index a962e880..099d396e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "CytoTable" -version = "0.0.3" +version = "0.0.0" description = "Transform CellProfiler and DeepProfiler data for processing image-based profiling readouts with Pycytominer and other Cytomining tools." authors = ["Cytomining Community"] license = "BSD-3-Clause License" @@ -10,6 +10,15 @@ repository = "https://github.com/cytomining/CytoTable" documentation = "https://cytomining.github.io/CytoTable/" keywords = ["python", "cellprofiler","single-cell-analysis", "way-lab"] +[tool.poetry-dynamic-versioning] +enable = true +style = "pep440" +vcs = "git" + +[build-system] +requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"] +build-backend = "poetry_dynamic_versioning.backend" + [tool.poetry.dependencies] python = ">=3.8,<3.13" pyarrow = ">=13.0.0" @@ -29,9 +38,7 @@ cffconvert = "^2.0.0" cytominer-database = "^0.3.4" pycytominer = { git = "https://github.com/cytomining/pycytominer.git", rev = "09b2c79aa94908e3520f0931a844db4fba7fd3fb" } -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" + [tool.vulture] min_confidence = 80 @@ -48,3 +55,4 @@ skips = ["B608"] [tool.codespell] ignore-words=".codespell-ignore" + From 71735b22434ef7bb236a6599fef7e07b5d4c7211 Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 07:55:23 -0700 Subject: [PATCH 3/9] comments to further describe what's happening --- cytotable/__init__.py | 2 +- cytotable/utils.py | 8 ++++---- pyproject.toml | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cytotable/__init__.py b/cytotable/__init__.py index fae02463..fa0cb4f4 100644 --- a/cytotable/__init__.py +++ b/cytotable/__init__.py @@ -2,7 +2,7 @@ __init__.py for cytotable """ -# note: version data here is maintained by poetry-dynamic-versioning +# note: version data is maintained by poetry-dynamic-versioning __version__ = "0.0.0" from .convert import convert diff --git a/cytotable/utils.py b/cytotable/utils.py index 7687775c..1f9933a8 100644 --- a/cytotable/utils.py +++ b/cytotable/utils.py @@ -7,7 +7,6 @@ import os import pathlib -import pkg_resources import dunamai from typing import Any, Dict, Union, cast @@ -469,8 +468,9 @@ def _get_cytotable_version() -> str: """ try: # attempt to gather the development version from dunamai + # for scenarios where cytotable from source is used. return dunamai.Version.from_any_vcs().serialize() except RuntimeError: - # else grab the static version from __init__.py - return - + # else grab a static version from __init__.py + # for scenarios where the built/packaged cytotable is used. + return cytotable.__version__ diff --git a/pyproject.toml b/pyproject.toml index 099d396e..d8e916bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,6 @@ [tool.poetry] name = "CytoTable" +# note: version data is maintained by poetry-dynamic-versioning version = "0.0.0" description = "Transform CellProfiler and DeepProfiler data for processing image-based profiling readouts with Pycytominer and other Cytomining tools." authors = ["Cytomining Community"] From 3dd639448014f12621e02581580eb110111315b2 Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 07:55:48 -0700 Subject: [PATCH 4/9] update github actions workflows and simplify --- .github/workflows/actions/setup-poetry.yml | 11 +++++++++++ .github/workflows/publish-docs.yml | 6 ++---- .github/workflows/publish-pypi.yml | 6 ++---- .github/workflows/test.yml | 4 ++-- 4 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/actions/setup-poetry.yml diff --git a/.github/workflows/actions/setup-poetry.yml b/.github/workflows/actions/setup-poetry.yml new file mode 100644 index 00000000..271c2a9a --- /dev/null +++ b/.github/workflows/actions/setup-poetry.yml @@ -0,0 +1,11 @@ +name: Setup Environment and Cache +description: | + Setup poetry for use with GitHub Actions workflows. + Note: presumes pre-installed Python. +runs: + using: "composite" + steps: + - name: Setup poetry and poetry-dynamic-versioning + shell: bash + run: | + python -m pip install poetry poetry-dynamic-versioning diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 6fb8a9a1..ff4bfda2 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -19,10 +19,8 @@ jobs: - uses: actions/setup-python@v4 with: python-version: "3.10" - - name: install poetry - uses: abatilo/actions-poetry@v2 - with: - poetry-version: "1.6.1" + - name: Setup for poetry + uses: ./.github/actions/setup-poetry - name: poetry deps run: poetry install - name: Build documentation diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml index 05ee1a42..d684e4be 100644 --- a/.github/workflows/publish-pypi.yml +++ b/.github/workflows/publish-pypi.yml @@ -22,10 +22,8 @@ jobs: - uses: actions/setup-python@v4 with: python-version: "3.10" - - name: install poetry - uses: abatilo/actions-poetry@v2 - with: - poetry-version: "1.6.1" + - name: Setup for poetry + uses: ./.github/actions/setup-poetry - name: poetry deps run: poetry install - name: poetry build distribution content diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 98c38c7f..b37db8ee 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,8 +24,8 @@ jobs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python_version }} - - name: Install poetry - run: pip install poetry + - name: Setup for poetry + uses: ./.github/actions/setup-poetry - name: Install environment run: poetry install --no-interaction --no-ansi - name: Run sphinx-docs build test From af31b07663f2d30382da80e29265071efaa3d1b6 Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 08:01:35 -0700 Subject: [PATCH 5/9] remove version util and lint --- cytotable/utils.py | 21 --------------------- pyproject.toml | 1 - tests/test_convert.py | 9 --------- 3 files changed, 31 deletions(-) diff --git a/cytotable/utils.py b/cytotable/utils.py index 1f9933a8..371e575e 100644 --- a/cytotable/utils.py +++ b/cytotable/utils.py @@ -6,8 +6,6 @@ import multiprocessing import os import pathlib - -import dunamai from typing import Any, Dict, Union, cast import duckdb @@ -455,22 +453,3 @@ def _expand_path( modifed_path = modifed_path.expanduser() return modifed_path.resolve() - - -def _get_cytotable_version() -> str: - """ - Seeks the current version of CytoTable using either pkg_resources - or dunamai to determine the current version being used. - - Returns: - str - A string representing the version of CytoTable currently being used. - """ - try: - # attempt to gather the development version from dunamai - # for scenarios where cytotable from source is used. - return dunamai.Version.from_any_vcs().serialize() - except RuntimeError: - # else grab a static version from __init__.py - # for scenarios where the built/packaged cytotable is used. - return cytotable.__version__ diff --git a/pyproject.toml b/pyproject.toml index d8e916bc..7fa8649f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,4 +56,3 @@ skips = ["B608"] [tool.codespell] ignore-words=".codespell-ignore" - diff --git a/tests/test_convert.py b/tests/test_convert.py index ca774ed5..50d78a88 100644 --- a/tests/test_convert.py +++ b/tests/test_convert.py @@ -38,7 +38,6 @@ _duckdb_reader, _expand_path, _sqlite_mixed_type_query_to_parquet, - _get_cytotable_version ) @@ -60,12 +59,6 @@ def test_config(): ] ) == sorted(config_preset.keys()) -def test_get_cytotable_version(): - """ - Tests get_cytotable_version - """ - - assert isinstance(_get_cytotable_version(), str) def test_existing_dest_path(fx_tempdir: str, data_dir_cellprofiler_sqlite_nf1: str): """ @@ -1031,5 +1024,3 @@ def test_cell_health_cellprofiler_to_cytominer_database_legacy( ] ) ) - - From 7008d8a9389335d1ee4d7c982ad8e42ac7589279 Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 09:21:36 -0700 Subject: [PATCH 6/9] update pre-commit check versions --- .pre-commit-config.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f00217c1..c25e6787 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ default_language_version: python: python3.10 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -12,7 +12,7 @@ repos: - id: check-added-large-files - id: check-toml - repo: https://github.com/codespell-project/codespell - rev: v2.2.5 + rev: v2.2.6 hooks: - id: codespell exclude: > @@ -29,11 +29,11 @@ repos: - mdformat-myst - mdformat-gfm - repo: https://github.com/adrienverge/yamllint - rev: v1.32.0 + rev: v1.33.0 hooks: - id: yamllint - repo: https://github.com/psf/black - rev: 23.9.1 + rev: 23.12.0 hooks: - id: black - repo: https://github.com/asottile/blacken-docs @@ -41,25 +41,25 @@ repos: hooks: - id: blacken-docs - repo: https://github.com/PyCQA/bandit - rev: 1.7.5 + rev: 1.7.6 hooks: - id: bandit args: ["-c", "pyproject.toml"] additional_dependencies: ["bandit[toml]"] - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort - repo: https://github.com/jendrikseipp/vulture - rev: v2.9.1 + rev: v2.10 hooks: - id: vulture - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.5.1 + rev: v1.7.1 hooks: - id: mypy - repo: https://github.com/PyCQA/pylint - rev: v3.0.0a7 + rev: v3.0.3 hooks: - id: pylint name: pylint From 325f4fa203dfb70d642d189e271787859ad1f6ae Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 09:36:10 -0700 Subject: [PATCH 7/9] add docs on semver for release publishing process --- docs/source/contributing.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/source/contributing.md b/docs/source/contributing.md index 3d2b5acf..2b5f3e91 100644 --- a/docs/source/contributing.md +++ b/docs/source/contributing.md @@ -180,13 +180,16 @@ We utilize [semantic versioning](https://en.wikipedia.org/wiki/Software_versioni We publish source code by using [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases) available [here](https://github.com/cytomining/CytoTable/releases). We publish Python packages through the [Python Packaging Index (PyPI)](https://pypi.org/) available [here](https://pypi.org/project/cytotable/). -### Publishing Process +### Release Publishing Process There are several manual and automated steps involved with publishing CytoTable releases. See below for an overview of how this works. -1. Prepare a release in a code contribution which utilizes the command [`poetry version ...`](https://python-poetry.org/docs/cli/#version) to update the version (this updates `pyproject.toml` with automatically incremented versions under `version = "..."`). +Notes about [semantic version](https://en.wikipedia.org/wiki/Software_versioning#Semantic_versioning) (semver) specifications: +CytoTable semvers are controlled through [`poetry-dynamic-versioning`](https://github.com/mtkennerly/poetry-dynamic-versioning) which leverages [`dunamai`](https://github.com/mtkennerly/dunamai) to create version data based on [git tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging) and and commits. +CytoTable release git tags are automatically applied through [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases) and related inferred changes from [`release-drafter`](https://github.com/release-drafter/release-drafter). + 1. Open a pull request and use a repository label for `release-` to label the pull request for visibility with [`release-drafter`](https://github.com/release-drafter/release-drafter) (for example, see [CytoTable#108](https://github.com/cytomining/CytoTable/pull/108) as a reference of a semver patch update). -1. On merging the pull request for the release, a [GitHub Actions workflow](https://docs.github.com/en/actions/using-workflows) defined in `draft-release.yml` leveraging [`release-drafter`](https://github.com/release-drafter/release-drafter) will draft a release for maintainers to modify. +1. On merging the pull request for the release, a [GitHub Actions workflow](https://docs.github.com/en/actions/using-workflows) defined in `draft-release.yml` leveraging [`release-drafter`](https://github.com/release-drafter/release-drafter) will draft a release for maintainers to modify as needed (double checking on the prepared git tag and content). 1. Make modifications as necessary to the draft GitHub release, then publish the release. 1. On publishing the release, another GitHub Actions workflow defined in `publish-pypi.yml` will run to build and deploy the Python package to PyPI (utilizing the earlier modified `pyproject.toml` semantic version reference for labeling the release). From 933ff198c4bfca1a91dbdaf6ff618daabf636380 Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 09:54:35 -0700 Subject: [PATCH 8/9] move setup-poetry appropriately --- .github/{workflows => }/actions/setup-poetry.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/{workflows => }/actions/setup-poetry.yml (100%) diff --git a/.github/workflows/actions/setup-poetry.yml b/.github/actions/setup-poetry.yml similarity index 100% rename from .github/workflows/actions/setup-poetry.yml rename to .github/actions/setup-poetry.yml From a522559a78b8f87c5a07c76174653cd0ab9ddf30 Mon Sep 17 00:00:00 2001 From: d33bs Date: Tue, 19 Dec 2023 10:37:26 -0700 Subject: [PATCH 9/9] correct action location --- .github/actions/{setup-poetry.yml => setup-poetry/action.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/actions/{setup-poetry.yml => setup-poetry/action.yml} (100%) diff --git a/.github/actions/setup-poetry.yml b/.github/actions/setup-poetry/action.yml similarity index 100% rename from .github/actions/setup-poetry.yml rename to .github/actions/setup-poetry/action.yml