enum-properties 2.7.0__tar.gz → 2.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.github/dependabot.yml +0 -12
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.github/workflows/lint.yml +13 -7
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.github/workflows/release.yml +17 -18
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.github/workflows/scorecard.yml +16 -7
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.github/workflows/test.yml +47 -43
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.github/workflows/zizmor.yml +10 -6
- enum_properties-2.8.1/.github/zizmor.yml +3 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.gitignore +3 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/PKG-INFO +3 -2
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/source/changelog.rst +11 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/justfile +8 -3
- {enum_properties-2.7.0 → enum_properties-2.8.1}/pyproject.toml +3 -1
- {enum_properties-2.7.0 → enum_properties-2.8.1}/src/enum_properties/__init__.py +58 -54
- {enum_properties-2.7.0 → enum_properties-2.8.1}/src/enum_properties/__init__.pyi +4 -5
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test.py +1 -1
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_flags.py +90 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test.py +2 -2
- enum_properties-2.7.0/uv.lock +0 -1977
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.codecov.yml +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.github/CODEOWNERS +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/.pre-commit-config.yaml +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/CODE_OF_CONDUCT.md +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/CONTRIBUTING.md +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/LICENSE +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/README.md +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/SECURITY.md +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/conftest.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/.readthedocs.yaml +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/source/_static/style.css +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/source/conf.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/source/howto.rst +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/source/index.rst +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/source/reference.rst +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/doc/source/tutorial.rst +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/src/enum_properties/py.typed +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/__init__.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_aliases.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_future_annotations.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_interface_eq.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_nestedclass.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_none_coercion.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_perf.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_pickle.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_specialize.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_symmetric.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/annotations/test_type_hints.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/big_enum.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/big_enum_annotations.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/__init__.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/address.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/color_example.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/hash_equiv_def.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_add_props.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_dataclass.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_dataclass_integration.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_flag.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_flag_boundaries.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_flags_no_iterable.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_functional.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_hash_equiv.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_hash_equiv_def.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_legacy.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_members_and_aliases.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_metaclass.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_nested_classes.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_nested_classes_313.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_specialized.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_specialized_default.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_specialized_list.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_specialized_missing.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_symmetric_builtins.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_symmetric_decorator.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_symmetric_metaclass.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_symmetric_overload.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_symmetry.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/howto_verify_unique.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/mapbox.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/specialization_example.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/symmetric_example.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/examples/test_examples.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/__init__.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_flags.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_interface_eq.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_multi_primitives.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_nestedclass.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_none_coercion.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_perf.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_pickle.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_specialize.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/legacy/test_type_hints.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/pickle_enums.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/pickle_enums_annotations.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/test_functional.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/type_hints/__init__.py +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/type_hints/pyright.json +0 -0
- {enum_properties-2.7.0 → enum_properties-2.8.1}/tests/type_hints/test.py +0 -0
|
@@ -2,7 +2,11 @@ name: Lint
|
|
|
2
2
|
|
|
3
3
|
permissions:
|
|
4
4
|
contents: read
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
concurrency:
|
|
7
|
+
group: lint-${{ github.event.pull_request.number || github.ref }}
|
|
8
|
+
cancel-in-progress: true
|
|
9
|
+
|
|
6
10
|
on:
|
|
7
11
|
push:
|
|
8
12
|
branches:
|
|
@@ -24,23 +28,25 @@ jobs:
|
|
|
24
28
|
strategy:
|
|
25
29
|
matrix:
|
|
26
30
|
# run static analysis on bleeding and trailing edges
|
|
27
|
-
python-version: [ '3.10', '3.
|
|
31
|
+
python-version: [ '3.10', '3.15' ]
|
|
28
32
|
steps:
|
|
29
|
-
- uses: actions/checkout@
|
|
33
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
30
34
|
with:
|
|
31
35
|
persist-credentials: false
|
|
32
36
|
- name: Set up Python ${{ matrix.python-version }}
|
|
33
37
|
id: sp
|
|
34
|
-
uses: actions/setup-python@
|
|
38
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
35
39
|
with:
|
|
36
40
|
python-version: ${{ matrix.python-version }}
|
|
37
41
|
allow-prereleases: true
|
|
38
42
|
- name: Install uv
|
|
39
|
-
uses: astral-sh/setup-uv@
|
|
43
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d
|
|
40
44
|
with:
|
|
41
45
|
enable-cache: true
|
|
42
46
|
- name: Install Just
|
|
43
|
-
uses: extractions/setup-just@
|
|
47
|
+
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
|
|
48
|
+
with:
|
|
49
|
+
just-version: 1.58.0
|
|
44
50
|
- name: Install Dependencies
|
|
45
51
|
env:
|
|
46
52
|
PYTHON_PATH: ${{ steps.sp.outputs.python-path }}
|
|
@@ -52,7 +58,7 @@ jobs:
|
|
|
52
58
|
sudo apt install emacs
|
|
53
59
|
- name: Setup tmate session
|
|
54
60
|
if: ${{ github.event.inputs.debug == 'true' }}
|
|
55
|
-
uses: mxschmitt/action-tmate@
|
|
61
|
+
uses: mxschmitt/action-tmate@35b54afac29c97fb54faba5b513f8fbd1882f113
|
|
56
62
|
with:
|
|
57
63
|
detached: true
|
|
58
64
|
timeout-minutes: 60
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
name: Publish Release
|
|
3
3
|
|
|
4
|
-
permissions:
|
|
4
|
+
permissions:
|
|
5
|
+
contents: read
|
|
5
6
|
|
|
6
7
|
concurrency:
|
|
7
8
|
# stop previous release runs if tag is recreated
|
|
@@ -18,42 +19,40 @@ jobs:
|
|
|
18
19
|
lint:
|
|
19
20
|
permissions:
|
|
20
21
|
contents: read
|
|
21
|
-
|
|
22
|
-
uses: ./.github/workflows/lint.yml
|
|
22
|
+
uses: $/.github/workflows/lint.yml
|
|
23
23
|
|
|
24
24
|
test:
|
|
25
25
|
permissions:
|
|
26
26
|
contents: read
|
|
27
|
-
|
|
28
|
-
uses:
|
|
29
|
-
secrets:
|
|
30
|
-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
27
|
+
id-token: write # to allow codecov oidc upload
|
|
28
|
+
uses: $/.github/workflows/test.yml
|
|
31
29
|
|
|
32
30
|
build:
|
|
33
31
|
name: Build Package
|
|
34
32
|
runs-on: ubuntu-latest
|
|
35
33
|
permissions:
|
|
36
34
|
contents: read
|
|
37
|
-
actions: write
|
|
38
35
|
outputs:
|
|
39
36
|
PACKAGE_NAME: ${{ steps.set-package.outputs.package_name }}
|
|
40
37
|
RELEASE_VERSION: ${{ steps.set-package.outputs.release_version }}
|
|
41
38
|
steps:
|
|
42
|
-
- uses: actions/checkout@
|
|
39
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
43
40
|
with:
|
|
44
|
-
persist-credentials:
|
|
41
|
+
persist-credentials: false
|
|
45
42
|
- name: Set up Python
|
|
46
|
-
uses: actions/setup-python@
|
|
43
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
47
44
|
with:
|
|
48
45
|
python-version: ">=3.11" # for tomlib
|
|
49
46
|
- name: Install uv
|
|
50
|
-
uses: astral-sh/setup-uv@
|
|
47
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d
|
|
51
48
|
with:
|
|
52
49
|
enable-cache: false
|
|
53
50
|
restore-cache: false
|
|
54
51
|
save-cache: false
|
|
55
52
|
- name: Setup Just
|
|
56
|
-
uses: extractions/setup-just@
|
|
53
|
+
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
|
|
54
|
+
with:
|
|
55
|
+
just-version: 1.58.0
|
|
57
56
|
- name: Verify Tag
|
|
58
57
|
run: |
|
|
59
58
|
TAG_NAME=${GITHUB_REF#refs/tags/}
|
|
@@ -74,7 +73,7 @@ jobs:
|
|
|
74
73
|
- name: Build the binary wheel and a source tarball
|
|
75
74
|
run: just build
|
|
76
75
|
- name: Store the distribution packages
|
|
77
|
-
uses: actions/upload-artifact@
|
|
76
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
78
77
|
with:
|
|
79
78
|
name: python-package-distributions
|
|
80
79
|
path: dist/
|
|
@@ -98,12 +97,12 @@ jobs:
|
|
|
98
97
|
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
99
98
|
steps:
|
|
100
99
|
- name: Download all the dists
|
|
101
|
-
uses: actions/download-artifact@
|
|
100
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
|
102
101
|
with:
|
|
103
102
|
name: python-package-distributions
|
|
104
103
|
path: dist/
|
|
105
104
|
- name: Publish distribution 📦 to PyPI
|
|
106
|
-
uses: pypa/gh-action-pypi-publish@
|
|
105
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33
|
|
107
106
|
|
|
108
107
|
github-release:
|
|
109
108
|
name: Publish GitHub Release
|
|
@@ -118,12 +117,12 @@ jobs:
|
|
|
118
117
|
|
|
119
118
|
steps:
|
|
120
119
|
- name: Download all the dists
|
|
121
|
-
uses: actions/download-artifact@
|
|
120
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
|
122
121
|
with:
|
|
123
122
|
name: python-package-distributions
|
|
124
123
|
path: dist/
|
|
125
124
|
- name: Sign the dists with Sigstore
|
|
126
|
-
uses: sigstore/gh-action-sigstore-python@
|
|
125
|
+
uses: sigstore/gh-action-sigstore-python@790bc6befb9d733738f18d8f895854b453640ec9
|
|
127
126
|
with:
|
|
128
127
|
inputs: >-
|
|
129
128
|
./dist/*.tar.gz
|
|
@@ -9,24 +9,33 @@ on:
|
|
|
9
9
|
branches: [ main ]
|
|
10
10
|
workflow_dispatch:
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
concurrency:
|
|
13
|
+
group: scorecard-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
13
18
|
|
|
14
19
|
jobs:
|
|
15
20
|
analysis:
|
|
16
21
|
name: Scorecard analysis
|
|
17
22
|
runs-on: ubuntu-latest
|
|
23
|
+
environment:
|
|
24
|
+
name: scorecard
|
|
25
|
+
deployment: false # Prevents creating a GitHub deployment object
|
|
26
|
+
|
|
18
27
|
permissions:
|
|
19
|
-
security-events: write
|
|
20
|
-
id-token: write
|
|
28
|
+
security-events: write # allow uploading code scanning results
|
|
29
|
+
id-token: write # to allow OIDC authentication for publishing results to OpenSSF REST API
|
|
21
30
|
|
|
22
31
|
steps:
|
|
23
32
|
- name: "Checkout code"
|
|
24
|
-
uses: actions/checkout@
|
|
33
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
25
34
|
with:
|
|
26
35
|
persist-credentials: false
|
|
27
36
|
|
|
28
37
|
- name: "Run analysis"
|
|
29
|
-
uses: ossf/scorecard-action@
|
|
38
|
+
uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc
|
|
30
39
|
with:
|
|
31
40
|
results_file: results.sarif
|
|
32
41
|
results_format: sarif
|
|
@@ -48,7 +57,7 @@ jobs:
|
|
|
48
57
|
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
|
49
58
|
# format to the repository Actions tab.
|
|
50
59
|
- name: "Upload artifact"
|
|
51
|
-
uses: actions/upload-artifact@
|
|
60
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
52
61
|
with:
|
|
53
62
|
name: SARIF file
|
|
54
63
|
path: results.sarif
|
|
@@ -57,6 +66,6 @@ jobs:
|
|
|
57
66
|
# Upload the results to GitHub's code scanning dashboard (optional).
|
|
58
67
|
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
|
|
59
68
|
- name: "Upload to code-scanning"
|
|
60
|
-
uses: github/codeql-action/upload-sarif@
|
|
69
|
+
uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938
|
|
61
70
|
with:
|
|
62
71
|
sarif_file: results.sarif
|
|
@@ -2,7 +2,11 @@ name: Test
|
|
|
2
2
|
|
|
3
3
|
permissions:
|
|
4
4
|
contents: read
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
concurrency:
|
|
7
|
+
group: test-${{ github.event.pull_request.number || github.ref }}
|
|
8
|
+
cancel-in-progress: true
|
|
9
|
+
|
|
6
10
|
on:
|
|
7
11
|
push:
|
|
8
12
|
branches:
|
|
@@ -10,9 +14,6 @@ on:
|
|
|
10
14
|
pull_request:
|
|
11
15
|
merge_group:
|
|
12
16
|
workflow_call:
|
|
13
|
-
secrets:
|
|
14
|
-
CODECOV_TOKEN:
|
|
15
|
-
required: true
|
|
16
17
|
workflow_dispatch:
|
|
17
18
|
inputs:
|
|
18
19
|
debug:
|
|
@@ -28,12 +29,9 @@ on:
|
|
|
28
29
|
jobs:
|
|
29
30
|
linux:
|
|
30
31
|
runs-on: ubuntu-latest
|
|
31
|
-
permissions:
|
|
32
|
-
contents: read
|
|
33
|
-
actions: write
|
|
34
32
|
strategy:
|
|
35
33
|
matrix:
|
|
36
|
-
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
|
|
34
|
+
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14', '3.15']
|
|
37
35
|
env:
|
|
38
36
|
COVERAGE_FILE: linux-py${{ matrix.python-version }}.coverage
|
|
39
37
|
|
|
@@ -42,19 +40,21 @@ jobs:
|
|
|
42
40
|
if: ${{ github.event.inputs.clear_cache == 'true' }}
|
|
43
41
|
run: sudo rm -rf /opt/hostedtoolcache
|
|
44
42
|
|
|
45
|
-
- uses: actions/checkout@
|
|
43
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
46
44
|
with:
|
|
47
45
|
persist-credentials: false
|
|
48
46
|
- name: Set up Python ${{ matrix.python-version }}
|
|
49
47
|
id: sp
|
|
50
|
-
uses: actions/setup-python@
|
|
48
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
51
49
|
with:
|
|
52
50
|
python-version: ${{ matrix.python-version }}
|
|
53
51
|
allow-prereleases: true
|
|
54
52
|
- name: Install Just
|
|
55
|
-
uses: extractions/setup-just@
|
|
53
|
+
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
|
|
54
|
+
with:
|
|
55
|
+
just-version: 1.58.0
|
|
56
56
|
- name: Install uv
|
|
57
|
-
uses: astral-sh/setup-uv@
|
|
57
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d
|
|
58
58
|
with:
|
|
59
59
|
enable-cache: true
|
|
60
60
|
- name: Install Emacs
|
|
@@ -63,7 +63,7 @@ jobs:
|
|
|
63
63
|
sudo apt install emacs
|
|
64
64
|
- name: Setup tmate session
|
|
65
65
|
if: ${{ github.event.inputs.debug == 'true' }}
|
|
66
|
-
uses: mxschmitt/action-tmate@
|
|
66
|
+
uses: mxschmitt/action-tmate@35b54afac29c97fb54faba5b513f8fbd1882f113
|
|
67
67
|
with:
|
|
68
68
|
detached: true
|
|
69
69
|
- name: Install Dependencies
|
|
@@ -76,19 +76,16 @@ jobs:
|
|
|
76
76
|
just test
|
|
77
77
|
|
|
78
78
|
- name: Store coverage files
|
|
79
|
-
uses: actions/upload-artifact@
|
|
79
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
80
80
|
with:
|
|
81
81
|
name: ${{ env.COVERAGE_FILE }}
|
|
82
82
|
path: ${{ env.COVERAGE_FILE }}
|
|
83
83
|
|
|
84
84
|
macos:
|
|
85
85
|
runs-on: macos-latest
|
|
86
|
-
permissions:
|
|
87
|
-
contents: read
|
|
88
|
-
actions: write
|
|
89
86
|
strategy:
|
|
90
87
|
matrix:
|
|
91
|
-
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
|
|
88
|
+
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14', '3.15']
|
|
92
89
|
env:
|
|
93
90
|
COVERAGE_FILE: macos-py${{ matrix.python-version }}.coverage
|
|
94
91
|
|
|
@@ -97,19 +94,21 @@ jobs:
|
|
|
97
94
|
if: ${{ github.event.inputs.clear_cache == 'true' }}
|
|
98
95
|
run: sudo rm -rf /Users/runner/hostedtoolcache
|
|
99
96
|
|
|
100
|
-
- uses: actions/checkout@
|
|
97
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
101
98
|
with:
|
|
102
99
|
persist-credentials: false
|
|
103
100
|
- name: Set up Python ${{ matrix.python-version }}
|
|
104
101
|
id: sp
|
|
105
|
-
uses: actions/setup-python@
|
|
102
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
106
103
|
with:
|
|
107
104
|
python-version: ${{ matrix.python-version }}
|
|
108
105
|
allow-prereleases: true
|
|
109
106
|
- name: Install Just
|
|
110
|
-
uses: extractions/setup-just@
|
|
107
|
+
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
|
|
108
|
+
with:
|
|
109
|
+
just-version: 1.58.0
|
|
111
110
|
- name: Install uv
|
|
112
|
-
uses: astral-sh/setup-uv@
|
|
111
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d
|
|
113
112
|
with:
|
|
114
113
|
enable-cache: true
|
|
115
114
|
- name: install-emacs-macos
|
|
@@ -118,7 +117,7 @@ jobs:
|
|
|
118
117
|
brew install emacs
|
|
119
118
|
- name: Setup tmate session
|
|
120
119
|
if: ${{ github.event.inputs.debug == 'true' }}
|
|
121
|
-
uses: mxschmitt/action-tmate@
|
|
120
|
+
uses: mxschmitt/action-tmate@35b54afac29c97fb54faba5b513f8fbd1882f113
|
|
122
121
|
with:
|
|
123
122
|
detached: true
|
|
124
123
|
- name: Install Dependencies
|
|
@@ -131,19 +130,16 @@ jobs:
|
|
|
131
130
|
just test
|
|
132
131
|
|
|
133
132
|
- name: Store coverage files
|
|
134
|
-
uses: actions/upload-artifact@
|
|
133
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
135
134
|
with:
|
|
136
135
|
name: ${{ env.COVERAGE_FILE }}
|
|
137
136
|
path: ${{ env.COVERAGE_FILE }}
|
|
138
137
|
|
|
139
138
|
windows:
|
|
140
139
|
runs-on: windows-latest
|
|
141
|
-
permissions:
|
|
142
|
-
contents: read
|
|
143
|
-
actions: write
|
|
144
140
|
strategy:
|
|
145
141
|
matrix:
|
|
146
|
-
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
|
|
142
|
+
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14', '3.15']
|
|
147
143
|
env:
|
|
148
144
|
COVERAGE_FILE: windows-py${{ matrix.python-version }}.coverage
|
|
149
145
|
|
|
@@ -151,27 +147,29 @@ jobs:
|
|
|
151
147
|
- name: Clear GitHub Actions cache
|
|
152
148
|
if: ${{ github.event.inputs.clear_cache == 'true' }}
|
|
153
149
|
run: Remove-Item -Recurse -Force C:\hostedtoolcache
|
|
154
|
-
- uses: actions/checkout@
|
|
150
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
155
151
|
with:
|
|
156
152
|
persist-credentials: false
|
|
157
153
|
- name: Set up Python ${{ matrix.python-version }}
|
|
158
154
|
id: sp
|
|
159
|
-
uses: actions/setup-python@
|
|
155
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
160
156
|
with:
|
|
161
157
|
python-version: ${{ matrix.python-version }}
|
|
162
158
|
allow-prereleases: true
|
|
163
159
|
- name: Install Just
|
|
164
|
-
uses: extractions/setup-just@
|
|
160
|
+
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
|
|
161
|
+
with:
|
|
162
|
+
just-version: 1.58.0
|
|
165
163
|
- name: Install uv
|
|
166
|
-
uses: astral-sh/setup-uv@
|
|
164
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d
|
|
167
165
|
with:
|
|
168
166
|
enable-cache: true
|
|
169
167
|
- name: install-vim-windows
|
|
170
168
|
if: ${{ github.event.inputs.debug == 'true' }}
|
|
171
|
-
uses: rhysd/action-setup-vim@
|
|
169
|
+
uses: rhysd/action-setup-vim@febef33995d6649302e9d88dda81e071b68f16a7
|
|
172
170
|
- name: Setup tmate session
|
|
173
171
|
if: ${{ github.event.inputs.debug == 'true' }}
|
|
174
|
-
uses: mxschmitt/action-tmate@
|
|
172
|
+
uses: mxschmitt/action-tmate@35b54afac29c97fb54faba5b513f8fbd1882f113
|
|
175
173
|
with:
|
|
176
174
|
detached: true
|
|
177
175
|
- name: Install Dependencies
|
|
@@ -184,7 +182,7 @@ jobs:
|
|
|
184
182
|
just test
|
|
185
183
|
|
|
186
184
|
- name: Store coverage files
|
|
187
|
-
uses: actions/upload-artifact@
|
|
185
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
188
186
|
with:
|
|
189
187
|
name: ${{ env.COVERAGE_FILE }}
|
|
190
188
|
path: ${{ env.COVERAGE_FILE }}
|
|
@@ -192,22 +190,27 @@ jobs:
|
|
|
192
190
|
coverage-combine:
|
|
193
191
|
needs: [linux, macos, windows]
|
|
194
192
|
runs-on: ubuntu-latest
|
|
193
|
+
permissions:
|
|
194
|
+
contents: read
|
|
195
|
+
id-token: write # for oidc authentication to codecov
|
|
195
196
|
|
|
196
197
|
steps:
|
|
197
|
-
- uses: actions/checkout@
|
|
198
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
198
199
|
with:
|
|
199
200
|
persist-credentials: false
|
|
200
|
-
- uses: actions/setup-python@
|
|
201
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
|
|
201
202
|
id: sp
|
|
202
203
|
with:
|
|
203
204
|
python-version: '3.14'
|
|
204
205
|
|
|
205
206
|
- name: Install uv
|
|
206
|
-
uses: astral-sh/setup-uv@
|
|
207
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d
|
|
207
208
|
with:
|
|
208
209
|
enable-cache: true
|
|
209
210
|
- name: Setup Just
|
|
210
|
-
uses: extractions/setup-just@
|
|
211
|
+
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
|
|
212
|
+
with:
|
|
213
|
+
just-version: 1.58.0
|
|
211
214
|
- name: Install Release Dependencies
|
|
212
215
|
env:
|
|
213
216
|
PYTHON_PATH: ${{ steps.sp.outputs.python-path }}
|
|
@@ -215,7 +218,7 @@ jobs:
|
|
|
215
218
|
just setup "$PYTHON_PATH"
|
|
216
219
|
|
|
217
220
|
- name: Get coverage files
|
|
218
|
-
uses: actions/download-artifact@
|
|
221
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
|
219
222
|
with:
|
|
220
223
|
pattern: "*.coverage"
|
|
221
224
|
merge-multiple: true
|
|
@@ -223,7 +226,8 @@ jobs:
|
|
|
223
226
|
- run: just coverage
|
|
224
227
|
|
|
225
228
|
- name: Upload coverage to Codecov
|
|
226
|
-
uses: codecov/codecov-action@
|
|
229
|
+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f
|
|
227
230
|
with:
|
|
228
|
-
|
|
229
|
-
|
|
231
|
+
use_oidc: true
|
|
232
|
+
files:
|
|
233
|
+
./coverage.xml
|
|
@@ -12,22 +12,26 @@ on:
|
|
|
12
12
|
permissions:
|
|
13
13
|
contents: read
|
|
14
14
|
|
|
15
|
+
concurrency:
|
|
16
|
+
group: zizmor-${{ github.event.pull_request.number || github.ref }}
|
|
17
|
+
cancel-in-progress: true
|
|
18
|
+
|
|
15
19
|
jobs:
|
|
16
20
|
zizmor-analysis:
|
|
17
21
|
name: Run Zizmor
|
|
18
22
|
runs-on: ubuntu-latest
|
|
19
23
|
permissions:
|
|
20
24
|
contents: read
|
|
21
|
-
security-events: write
|
|
25
|
+
security-events: write # for post to GH security
|
|
22
26
|
|
|
23
27
|
steps:
|
|
24
28
|
- name: Checkout repository
|
|
25
|
-
uses: actions/checkout@
|
|
29
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
26
30
|
with:
|
|
27
31
|
persist-credentials: false
|
|
28
32
|
|
|
29
33
|
- name: Set up Rust
|
|
30
|
-
uses: actions-rust-lang/setup-rust-toolchain@
|
|
34
|
+
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659
|
|
31
35
|
- name: Install jq
|
|
32
36
|
run: |
|
|
33
37
|
sudo apt-get update
|
|
@@ -38,17 +42,17 @@ jobs:
|
|
|
38
42
|
|
|
39
43
|
- name: Run Zizmor analysis
|
|
40
44
|
run: |
|
|
41
|
-
zizmor --format sarif .github/workflows/ > results.sarif
|
|
45
|
+
zizmor --persona auditor --format sarif .github/workflows/ > results.sarif
|
|
42
46
|
|
|
43
47
|
- name: Upload analysis results
|
|
44
|
-
uses: actions/upload-artifact@
|
|
48
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
|
45
49
|
with:
|
|
46
50
|
name: zizmor-results
|
|
47
51
|
path: results.sarif
|
|
48
52
|
retention-days: 7
|
|
49
53
|
|
|
50
54
|
- name: Upload to code-scanning
|
|
51
|
-
uses: github/codeql-action/upload-sarif@
|
|
55
|
+
uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938
|
|
52
56
|
with:
|
|
53
57
|
sarif_file: results.sarif
|
|
54
58
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: enum-properties
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.8.1
|
|
4
4
|
Summary: Add properties and method specializations to Python enumeration values with a simple declarative syntax.
|
|
5
5
|
Project-URL: Homepage, https://github.com/bckohan/enum-properties
|
|
6
6
|
Project-URL: Documentation, https://enum-properties.readthedocs.io
|
|
@@ -24,6 +24,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.13
|
|
26
26
|
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
27
28
|
Classifier: Topic :: Software Development :: Libraries
|
|
28
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
30
|
Classifier: Typing :: Typed
|
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
Change Log
|
|
3
3
|
==========
|
|
4
4
|
|
|
5
|
+
v2.8.1 (2026-09-02)
|
|
6
|
+
===================
|
|
7
|
+
|
|
8
|
+
* Add missing Python 3.15 classifier.
|
|
9
|
+
|
|
10
|
+
v2.8.0 (2026-08-03)
|
|
11
|
+
===================
|
|
12
|
+
|
|
13
|
+
* Throw TypeError instead of ValueError when wrong types are encountered in enum class definitions.
|
|
14
|
+
* Fix linting issues with latest versions of ruff.
|
|
15
|
+
|
|
5
16
|
v2.7.0 (2026-03-04)
|
|
6
17
|
===================
|
|
7
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
set windows-shell := ["powershell.exe", "-NoLogo", "-Command"]
|
|
2
|
-
set unstable
|
|
3
|
-
set script-interpreter := ['uv', 'run', '--script']
|
|
2
|
+
set unstable
|
|
3
|
+
set script-interpreter := ['uv', 'run', '--project', '.', '--script']
|
|
4
4
|
|
|
5
5
|
export PYTHONPATH := source_directory()
|
|
6
6
|
|
|
@@ -181,11 +181,16 @@ lint: sort-imports
|
|
|
181
181
|
# fix formatting, linting issues and import sorting
|
|
182
182
|
fix: lint format
|
|
183
183
|
|
|
184
|
+
# run zizmor security analysis of CI
|
|
185
|
+
zizmor:
|
|
186
|
+
cargo install --locked zizmor
|
|
187
|
+
zizmor --persona auditor --format sarif .github/workflows/ > zizmor.sarif
|
|
188
|
+
|
|
184
189
|
# run all static checks
|
|
185
190
|
check: check-lint check-format check-types check-package check-docs check-readme
|
|
186
191
|
|
|
187
192
|
# run all checks including documentation link checking (slow)
|
|
188
|
-
check-all: check check-docs-links
|
|
193
|
+
check-all: check zizmor check-docs-links
|
|
189
194
|
|
|
190
195
|
# run tests
|
|
191
196
|
test *TESTS:
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "enum-properties"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.8.1"
|
|
8
8
|
description = "Add properties and method specializations to Python enumeration values with a simple declarative syntax."
|
|
9
9
|
requires-python = ">=3.10,<4.0"
|
|
10
10
|
authors = [
|
|
@@ -30,6 +30,7 @@ classifiers = [
|
|
|
30
30
|
"Programming Language :: Python :: 3.12",
|
|
31
31
|
"Programming Language :: Python :: 3.13",
|
|
32
32
|
"Programming Language :: Python :: 3.14",
|
|
33
|
+
"Programming Language :: Python :: 3.15",
|
|
33
34
|
"Topic :: Software Development :: Libraries",
|
|
34
35
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
35
36
|
"Typing :: Typed"
|
|
@@ -139,6 +140,7 @@ exclude = [
|
|
|
139
140
|
"examples",
|
|
140
141
|
"tests/resources/bad_code.py"
|
|
141
142
|
]
|
|
143
|
+
extend-exclude = ["*.md"]
|
|
142
144
|
|
|
143
145
|
[tool.ruff.lint]
|
|
144
146
|
exclude = [
|