zerodict 0.1.0__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.
@@ -0,0 +1,100 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main, develop ]
8
+
9
+ # Cancel in-progress runs when a new workflow with the same group name is triggered
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ commit-messages:
19
+ name: Validate Commit Messages
20
+ if: github.event_name == 'pull_request'
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+ with:
25
+ fetch-depth: 0
26
+
27
+ - name: Check commits are Conventional Commits
28
+ uses: webiny/action-conventional-commits@v1.3.0
29
+
30
+ lint:
31
+ name: Lint and Type Check
32
+ runs-on: ubuntu-latest
33
+
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+
37
+ - name: Set up Python
38
+ uses: actions/setup-python@v5
39
+ with:
40
+ python-version: "3.12"
41
+
42
+ - name: Install uv
43
+ uses: astral-sh/setup-uv@v3
44
+ with:
45
+ enable-cache: false
46
+
47
+ - name: Install dependencies
48
+ run: uv sync
49
+
50
+ - name: Lint with ruff
51
+ run: |
52
+ uv run ruff check .
53
+ uv run ruff format --check .
54
+
55
+ - name: Type check with mypy
56
+ run: uv run mypy --package zerodict
57
+
58
+ - name: Security check with bandit
59
+ run: uv run bandit -c pyproject.toml -r .
60
+
61
+ - name: Dead code check with vulture
62
+ run: uv run vulture src/
63
+
64
+ test:
65
+ name: Test Suite
66
+ runs-on: ${{ matrix.os }}
67
+ strategy:
68
+ fail-fast: false
69
+ matrix:
70
+ os: [ubuntu-latest, windows-latest, macos-latest]
71
+ python-version: ["3.11", "3.12", "3.13"]
72
+
73
+ steps:
74
+ - uses: actions/checkout@v4
75
+
76
+ - name: Set up Python ${{ matrix.python-version }}
77
+ uses: actions/setup-python@v5
78
+ with:
79
+ python-version: ${{ matrix.python-version }}
80
+
81
+ - name: Install uv
82
+ uses: astral-sh/setup-uv@v3
83
+ with:
84
+ enable-cache: false
85
+
86
+ - name: Install dependencies
87
+ run: uv sync
88
+
89
+ - name: Run tests with coverage
90
+ run: uv run pytest --cov --cov-report=xml --cov-report=term --cov-report=html
91
+
92
+ - name: Upload coverage reports
93
+ uses: actions/upload-artifact@v4
94
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
95
+ with:
96
+ name: coverage-reports
97
+ path: |
98
+ coverage.xml
99
+ htmlcov/
100
+ retention-days: 30
@@ -0,0 +1,55 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build:
8
+ name: Build distribution
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - uses: actions/setup-python@v5
16
+ with:
17
+ python-version: "3.11"
18
+
19
+ - name: Install uv
20
+ uses: astral-sh/setup-uv@v3
21
+ with:
22
+ enable-cache: false
23
+
24
+ - name: Build package
25
+ run: uv build
26
+
27
+ - name: Show dist contents
28
+ run: ls -lah dist/
29
+
30
+ - name: Upload dist artifacts
31
+ uses: actions/upload-artifact@v4
32
+ with:
33
+ name: dist
34
+ path: dist/
35
+
36
+ publish:
37
+ name: Publish to PyPI
38
+ needs: build
39
+ runs-on: ubuntu-latest
40
+ environment: pypi
41
+ permissions:
42
+ contents: read
43
+ id-token: write
44
+ steps:
45
+ - name: Download dist artifacts
46
+ uses: actions/download-artifact@v4
47
+ with:
48
+ name: dist
49
+ path: dist/
50
+
51
+ - name: Show dist contents
52
+ run: ls -lah dist/
53
+
54
+ - name: Publish to PyPI
55
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,18 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+
7
+ permissions:
8
+ contents: write
9
+ pull-requests: write
10
+
11
+ jobs:
12
+ release-please:
13
+ name: Release Please
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: googleapis/release-please-action@v4
17
+ with:
18
+ release-type: python
@@ -0,0 +1,40 @@
1
+ # Python artifacts
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+
6
+ # Build artifacts
7
+ dist/
8
+ build/
9
+ .coverage
10
+ htmlcov/
11
+
12
+ # All hidden directories (starts with .)
13
+ .*/
14
+
15
+ # Keep .gitignore and .github
16
+ !.gitignore
17
+ !.github/
18
+
19
+ # Hidden files to ignore
20
+ .DS_Store
21
+ .coverage
22
+ .env
23
+ .run.sh
24
+ .setup.sh
25
+ .setup.bat
26
+ .check_quality.py
27
+
28
+ # Other files
29
+ *.swp
30
+ *.swo
31
+ *.log
32
+ *.bak
33
+
34
+ # Virtual environments (non-hidden)
35
+ env/
36
+ venv/
37
+ /.scripts/
38
+
39
+ # Lock files (library, not application)
40
+ uv.lock
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0"
3
+ }
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0 (2026-03-01)
4
+
5
+
6
+ ### Features
7
+
8
+ * initial release ([68c3596](https://github.com/francescofavi/zerodict/commit/68c3596389a5fdc0392def551d6bd00bbea7bc65))
zerodict-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Francesco Favi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.