lifecyclelogging 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.
Files changed (35) hide show
  1. lifecyclelogging-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  2. lifecyclelogging-0.1.0/.github/ISSUE_TEMPLATE/documentation.md +23 -0
  3. lifecyclelogging-0.1.0/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  4. lifecyclelogging-0.1.0/.github/workflows/release.yml +118 -0
  5. lifecyclelogging-0.1.0/.github/workflows/test.yml +184 -0
  6. lifecyclelogging-0.1.0/.gitignore +52 -0
  7. lifecyclelogging-0.1.0/CHANGELOG.md +69 -0
  8. lifecyclelogging-0.1.0/LICENSE +21 -0
  9. lifecyclelogging-0.1.0/Makefile +53 -0
  10. lifecyclelogging-0.1.0/PKG-INFO +166 -0
  11. lifecyclelogging-0.1.0/README.md +123 -0
  12. lifecyclelogging-0.1.0/docs/api_reference.rst +8 -0
  13. lifecyclelogging-0.1.0/docs/conf.py +36 -0
  14. lifecyclelogging-0.1.0/docs/contributing.rst +102 -0
  15. lifecyclelogging-0.1.0/docs/getting_started.rst +104 -0
  16. lifecyclelogging-0.1.0/docs/index.rst +23 -0
  17. lifecyclelogging-0.1.0/docs/usage.rst +213 -0
  18. lifecyclelogging-0.1.0/pyproject.toml +137 -0
  19. lifecyclelogging-0.1.0/renovate.json +33 -0
  20. lifecyclelogging-0.1.0/src/lifecyclelogging/__init__.py +12 -0
  21. lifecyclelogging-0.1.0/src/lifecyclelogging/const.py +15 -0
  22. lifecyclelogging-0.1.0/src/lifecyclelogging/handlers.py +55 -0
  23. lifecyclelogging-0.1.0/src/lifecyclelogging/log_types.py +9 -0
  24. lifecyclelogging-0.1.0/src/lifecyclelogging/logging.py +299 -0
  25. lifecyclelogging-0.1.0/src/lifecyclelogging/py.typed +0 -0
  26. lifecyclelogging-0.1.0/src/lifecyclelogging/utils.py +178 -0
  27. lifecyclelogging-0.1.0/tests/__init__.py +5 -0
  28. lifecyclelogging-0.1.0/tests/conftest.py +20 -0
  29. lifecyclelogging-0.1.0/tests/integration/__init__.py +5 -0
  30. lifecyclelogging-0.1.0/tests/integration/test_lifecycle_logging.py +124 -0
  31. lifecyclelogging-0.1.0/tests/test_handlers.py +36 -0
  32. lifecyclelogging-0.1.0/tests/test_logging.py +202 -0
  33. lifecyclelogging-0.1.0/tests/test_properties.py +152 -0
  34. lifecyclelogging-0.1.0/tests/test_utils.py +83 -0
  35. lifecyclelogging-0.1.0/tox.ini +54 -0
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ **Describe the bug**
10
+
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+
15
+ Steps to reproduce the behavior:
16
+
17
+ 1. Initialize logger with '...'
18
+ 2. Call method '....'
19
+ 3. See error
20
+
21
+ **Expected behavior**
22
+
23
+ A clear and concise description of what you expected to happen.
24
+
25
+ **Environment:**
26
+
27
+ - Python version: [e.g. 3.8]
28
+ - Package version: [e.g. 0.1.0]
29
+ - OS: [e.g. Ubuntu 22.04]
30
+
31
+ **Additional context**
32
+
33
+ Add any other context about the problem here.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Documentation
3
+ about: Report an issue or suggest an improvement for documentation
4
+ title: '[DOCS] '
5
+ labels: documentation
6
+ assignees: ''
7
+ ---
8
+
9
+ **Documentation Section**
10
+
11
+ Which part of the documentation needs updating?
12
+
13
+ **Current State**
14
+
15
+ What does the current documentation say?
16
+
17
+ **Suggested Changes**
18
+
19
+ What changes would you like to see?
20
+
21
+ **Additional Context**
22
+
23
+ Add any other context about the documentation request here.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: '[FEATURE] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ **Is your feature request related to a problem? Please describe.**
10
+
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+
15
+ A clear and concise description of what you want to happen.
16
+
17
+ **Describe alternatives you've considered**
18
+
19
+ A clear and concise description of any alternative solutions or features you've considered.
20
+
21
+ **Additional context**
22
+
23
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,118 @@
1
+ name: Continuous Delivery
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+
7
+ jobs:
8
+ initial_build_and_inspect:
9
+ name: Initial Build and Inspect
10
+ runs-on: ubuntu-latest
11
+ outputs:
12
+ artifact_name: ${{ steps.inspect.outputs.artifact-name }}
13
+ dist: ${{ steps.inspect.outputs.dist }}
14
+ supported_pythons: ${{ steps.inspect.outputs.supported_python_classifiers_json_array }}
15
+
16
+ steps:
17
+ - name: Checkout Repository
18
+ uses: actions/checkout@v4
19
+ with:
20
+ fetch-depth: 0
21
+
22
+ - name: Build & Inspect Package
23
+ id: inspect
24
+ uses: hynek/build-and-inspect-python-package@v2
25
+
26
+ test:
27
+ name: Test Package with Tox
28
+ needs: initial_build_and_inspect
29
+ runs-on: ubuntu-latest
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ python-version: ${{ fromJson(needs.initial_build_and_inspect.outputs.supported_pythons) }}
34
+
35
+ steps:
36
+ - name: Download Built Artifact
37
+ uses: actions/download-artifact@v4
38
+ with:
39
+ name: ${{ needs.initial_build_and_inspect.outputs.artifact_name }}
40
+ path: dist
41
+
42
+ - name: Set up Python ${{ matrix.python-version }}
43
+ uses: actions/setup-python@v5
44
+ with:
45
+ python-version: ${{ matrix.python-version }}
46
+
47
+ - name: Install dependencies
48
+ run: pip install tox
49
+
50
+ - name: Run Tests with Tox
51
+ run: |
52
+ tar xf dist/*.tar.gz --strip-components=1
53
+ tox run -e py${{ matrix.python-version }}
54
+
55
+ release:
56
+ name: Semantic Release and Signed Build
57
+ needs: [initial_build_and_inspect, test]
58
+ runs-on: ubuntu-latest
59
+ concurrency: release
60
+ permissions:
61
+ id-token: write
62
+ contents: write
63
+ attestations: write
64
+ outputs:
65
+ released: ${{ steps.release.outputs.released }}
66
+ version: ${{ steps.release.outputs.version }}
67
+ tag: ${{ steps.release.outputs.tag }}
68
+ signed_artifact_name: ${{ steps.signed_inspect.outputs.artifact-name }}
69
+
70
+ steps:
71
+ - name: Checkout Repository
72
+ uses: actions/checkout@v4
73
+ with:
74
+ fetch-depth: 0
75
+
76
+ - name: Semantic Version Release
77
+ id: release
78
+ uses: python-semantic-release/python-semantic-release@v9.16.1
79
+ with:
80
+ github_token: ${{ secrets.GITHUB_TOKEN }}
81
+ git_committer_name: "github-actions"
82
+ git_committer_email: "actions@users.noreply.github.com"
83
+
84
+ - name: Signed Attestation Build & Inspect
85
+ if: steps.release.outputs.released == 'true'
86
+ id: signed_inspect
87
+ uses: hynek/build-and-inspect-python-package@v2
88
+ with:
89
+ attest-build-provenance-github: "true"
90
+ upload-name-suffix: "-signed"
91
+
92
+ - name: Publish to GitHub Releases
93
+ if: steps.release.outputs.released == 'true'
94
+ uses: python-semantic-release/publish-action@v9.16.1
95
+ with:
96
+ github_token: ${{ secrets.GITHUB_TOKEN }}
97
+ tag: ${{ steps.release.outputs.tag }}
98
+
99
+ publish:
100
+ name: Publish to PyPI
101
+ needs: release
102
+ if: needs.release.outputs.released == 'true'
103
+ runs-on: ubuntu-latest
104
+ environment:
105
+ name: pypi
106
+ url: https://pypi.org/project/lifecyclelogging/
107
+ permissions:
108
+ id-token: write
109
+
110
+ steps:
111
+ - name: Download Signed Artifact
112
+ uses: actions/download-artifact@v4
113
+ with:
114
+ name: ${{ needs.release.outputs.signed_artifact_name }}
115
+ path: dist
116
+
117
+ - name: Publish to PyPI
118
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,184 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ env:
10
+ FORCE_COLOR: "1"
11
+ PIP_DISABLE_PIP_VERSION_CHECK: "1"
12
+ PIP_NO_PYTHON_VERSION_WARNING: "1"
13
+
14
+ permissions: {}
15
+
16
+ jobs:
17
+ build-package:
18
+ name: Build & verify package
19
+ runs-on: ubuntu-latest
20
+
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0
25
+ persist-credentials: false
26
+
27
+ - uses: hynek/build-and-inspect-python-package@v2
28
+ id: baipp
29
+
30
+ outputs:
31
+ python-versions: ${{ steps.baipp.outputs.supported_python_classifiers_json_array }}
32
+
33
+ tests:
34
+ name: Tests on ${{ matrix.python-version }}
35
+ runs-on: ubuntu-latest
36
+ needs: build-package
37
+
38
+ strategy:
39
+ fail-fast: false
40
+ matrix:
41
+ python-version: ${{ fromJson(needs.build-package.outputs.python-versions) }}
42
+
43
+ env:
44
+ PYTHON: ${{ matrix.python-version }}
45
+
46
+ steps:
47
+ - name: Download pre-built packages
48
+ uses: actions/download-artifact@v4
49
+ with:
50
+ name: Packages
51
+ path: dist
52
+
53
+ - run: |
54
+ tar xf dist/*.tar.gz --strip-components=1
55
+ rm -rf src
56
+
57
+ - uses: actions/setup-python@v5
58
+ with:
59
+ python-version: ${{ matrix.python-version }}
60
+ allow-prereleases: true
61
+
62
+ - uses: hynek/setup-cached-uv@v2
63
+
64
+ - name: Run tests
65
+ run: >
66
+ uvx --with tox-uv tox run
67
+ --installpkg dist/*.whl
68
+ -f py${PYTHON//./}-tests
69
+
70
+ - name: Upload coverage data
71
+ uses: actions/upload-artifact@v4
72
+ with:
73
+ name: coverage-data-${{ matrix.python-version }}
74
+ path: .coverage.*
75
+ include-hidden-files: true
76
+ if-no-files-found: ignore
77
+
78
+ coverage:
79
+ name: Ensure 100% test coverage
80
+ runs-on: ubuntu-latest
81
+ needs: tests
82
+ if: always()
83
+
84
+ steps:
85
+ - uses: actions/checkout@v4
86
+ with:
87
+ persist-credentials: false
88
+
89
+ - uses: actions/setup-python@v5
90
+ with:
91
+ python-version-file: .python-version-default
92
+
93
+ - uses: hynek/setup-cached-uv@v2
94
+
95
+ - name: Download coverage data
96
+ uses: actions/download-artifact@v4
97
+ with:
98
+ pattern: coverage-data-*
99
+ merge-multiple: true
100
+
101
+ - name: Combine coverage and fail if it's <100%.
102
+ run: |
103
+ uv tool install coverage
104
+
105
+ coverage combine
106
+ coverage html --skip-covered --skip-empty
107
+
108
+ # Report and write to summary.
109
+ coverage report --format=markdown >> $GITHUB_STEP_SUMMARY
110
+
111
+ # Report again and fail if under 100%.
112
+ coverage report --fail-under=100
113
+
114
+ - name: Upload HTML report if check failed.
115
+ uses: actions/upload-artifact@v4
116
+ with:
117
+ name: html-report
118
+ path: htmlcov
119
+ if: ${{ failure() }}
120
+
121
+ typechecking:
122
+ name: Type Checking
123
+ runs-on: ubuntu-latest
124
+ needs: build-package
125
+
126
+ steps:
127
+ - name: Download pre-built packages
128
+ uses: actions/download-artifact@v4
129
+ with:
130
+ name: Packages
131
+ path: dist
132
+
133
+ - run: tar xf dist/*.tar.gz --strip-components=1
134
+
135
+ - uses: actions/setup-python@v5
136
+ with:
137
+ python-version-file: .python-version-default
138
+
139
+ - uses: hynek/setup-cached-uv@v2
140
+
141
+ - run: >
142
+ uvx --with tox-uv
143
+ tox run -e type_check
144
+
145
+ docs:
146
+ name: Build and Verify Documentation
147
+ needs: build-package
148
+ runs-on: ubuntu-latest
149
+
150
+ steps:
151
+ - name: Download pre-built packages
152
+ uses: actions/download-artifact@v4
153
+ with:
154
+ name: Packages
155
+ path: dist
156
+
157
+ - run: tar xf dist/*.tar.gz --strip-components=1
158
+
159
+ - uses: actions/setup-python@v5
160
+ with:
161
+ python-version-file: .python-version-default
162
+
163
+ - uses: hynek/setup-cached-uv@v2
164
+
165
+ - run: >
166
+ uvx --with tox-uv
167
+ tox run -e docs
168
+
169
+ required-checks-pass:
170
+ name: Ensure everything required is passing for branch protection
171
+ if: always()
172
+
173
+ needs:
174
+ - coverage
175
+ - typechecking
176
+ - docs
177
+
178
+ runs-on: ubuntu-latest
179
+
180
+ steps:
181
+ - name: Decide whether the needed jobs succeeded or failed
182
+ uses: re-actors/alls-green@release/v1
183
+ with:
184
+ jobs: ${{ toJSON(needs) }}
@@ -0,0 +1,52 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual Environment
24
+ venv/
25
+ env/
26
+ ENV/
27
+
28
+ # IDE
29
+ .idea/
30
+ .vscode/
31
+ *.swp
32
+ *.swo
33
+
34
+ # Testing
35
+ .nox/
36
+ .tox/
37
+ .coverage
38
+ .coverage.*
39
+ coverage.xml
40
+ htmlcov/
41
+ .pytest_cache/
42
+ .hypothesis/
43
+
44
+ # Logs
45
+ *.log
46
+
47
+ # Sphinx documentation
48
+ docs/_build/
49
+ docs/doctrees/
50
+ docs/apidocs/
51
+ *.doctree
52
+ .aider*
@@ -0,0 +1,69 @@
1
+ # CHANGELOG
2
+
3
+
4
+ ## v0.1.0 (2025-01-25)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Ci
9
+ ([`d9fe7e7`](https://github.com/jbcom/lifecyclelogging/commit/d9fe7e798e9e52667332455276c3a08e24a95117))
10
+
11
+ - Ci
12
+ ([`a01fd22`](https://github.com/jbcom/lifecyclelogging/commit/a01fd22296aeea52b95fb068a767be8fed591389))
13
+
14
+ - Ci
15
+ ([`3896d9c`](https://github.com/jbcom/lifecyclelogging/commit/3896d9c49ceeed7d634e4ee615ff7fc9c1994771))
16
+
17
+ - Ensure file handler is added for logging in lifecyclelogging module
18
+ ([`32904f6`](https://github.com/jbcom/lifecyclelogging/commit/32904f6ed09f49bc7d9ec96e5fd366db3a54a51e))
19
+
20
+ - Orchestration
21
+ ([`88bc9a0`](https://github.com/jbcom/lifecyclelogging/commit/88bc9a0bfb0c9ec9877655c84da0fa2fdd8d05fa))
22
+
23
+ - Renovate [skip actions]
24
+ ([`35a6d1c`](https://github.com/jbcom/lifecyclelogging/commit/35a6d1cfd47bbeda623cde3f0a543f46a3179b8d))
25
+
26
+ - Resolve linting issues in logging utilities
27
+ ([`157b6e4`](https://github.com/jbcom/lifecyclelogging/commit/157b6e4c48085ea46f6c1e4f7804e3ea8b1c8ddb))
28
+
29
+ - Resolve logging issues with verbosity bypass and file output handling
30
+ ([`2e1eee2`](https://github.com/jbcom/lifecyclelogging/commit/2e1eee2d4b51fdf459d5d12a7e3024134b8f26d0))
31
+
32
+ - Resolve test failures by adjusting logging verbosity handling and file output
33
+ ([`8fa195a`](https://github.com/jbcom/lifecyclelogging/commit/8fa195a84f8b35ff3c05ff17c6041b68dab26688))
34
+
35
+ - Resolve testing suite issues
36
+ ([`64ee345`](https://github.com/jbcom/lifecyclelogging/commit/64ee34589292238c89b321e32d2e37a4a07e1bc1))
37
+
38
+ - Resolve verbosity bypass handling in logged_statement method
39
+ ([`80bb2e7`](https://github.com/jbcom/lifecyclelogging/commit/80bb2e7073475ed3a75d719f9cdbafd87c3f1376))
40
+
41
+ ### Chores
42
+
43
+ - Add tox to gitignore [skip actions]
44
+ ([`5995d57`](https://github.com/jbcom/lifecyclelogging/commit/5995d57b7a6ca986d7f9a685910497ca596194f6))
45
+
46
+ - Aider to gitignore
47
+ ([`d1e8cf0`](https://github.com/jbcom/lifecyclelogging/commit/d1e8cf01cbd5c1cf8a01e8706f8347850bfd9930))
48
+
49
+ - Update renovate config [skip actions]
50
+ ([`5183f74`](https://github.com/jbcom/lifecyclelogging/commit/5183f74f4cdef7cce21374bb2bd52f9822da5299))
51
+
52
+ - Updates to documentation
53
+ ([`90fe687`](https://github.com/jbcom/lifecyclelogging/commit/90fe6873147883c7740f013dba7df2d4f9250bbc))
54
+
55
+ ### Continuous Integration
56
+
57
+ - Add uv support
58
+ ([`6c80570`](https://github.com/jbcom/lifecyclelogging/commit/6c80570f0f1e97208ae9b197739f513298c1f382))
59
+
60
+ - Fixes
61
+ ([`3853fba`](https://github.com/jbcom/lifecyclelogging/commit/3853fba8deeef97f2a99a2574ec6213a69235115))
62
+
63
+ - Split up workflows
64
+ ([`cffad5b`](https://github.com/jbcom/lifecyclelogging/commit/cffad5b650a3327118d8f3ba14ccca485000d896))
65
+
66
+ ### Features
67
+
68
+ - First release version of LifecycleLogger
69
+ ([`93661ae`](https://github.com/jbcom/lifecyclelogging/commit/93661aec3229451d69e9fa75022e5f1c310523b3))
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Jon Bogaty
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.
@@ -0,0 +1,53 @@
1
+ .PHONY: help clean test lint format check docs build env all
2
+ .DEFAULT_GOAL := help
3
+
4
+ help: ## Display this help message
5
+ @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} \
6
+ /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } \
7
+ /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) }' $(MAKEFILE_LIST)
8
+
9
+ ##@ Primary Commands
10
+ all: clean check test docs build ## Run all checks and tests
11
+
12
+ ##@ Development
13
+ env: ## Create the development environment (with all extras)
14
+ pip install -e '.[dev,test,docs]'
15
+ pip install tox tox-gh-actions
16
+
17
+ clean: ## Clean up build artifacts and caches
18
+ tox -e clean
19
+
20
+ ##@ Testing
21
+ test: ## Run tests
22
+ tox
23
+
24
+ test-coverage: ## Run tests with coverage report
25
+ tox -e coverage_report
26
+
27
+ ##@ Code Quality
28
+ lint: ## Run linting
29
+ tox -e lint
30
+
31
+ format: ## Format code and sort imports
32
+ tox -e format
33
+
34
+ type: ## Run type checking
35
+ tox -e type_check
36
+
37
+ check: lint type ## Run all code quality checks
38
+
39
+ ##@ Documentation
40
+ docs: ## Build documentation
41
+ mkdir -p docs/_build
42
+ tox -e docs
43
+
44
+ docs-serve: ## Serve documentation locally
45
+ python -m http.server --directory docs/_build/html
46
+
47
+ docs-clean: ## Clean documentation build
48
+ tox -e clean
49
+
50
+ ##@ Building
51
+ build: clean ## Build the package
52
+ pip install build
53
+ python -m build