hexaqual 0.0.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,110 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ permissions: read-all
10
+
11
+ jobs:
12
+ # =========================================================================
13
+ # Stage 1: Fast Quality Gate (Fail-Fast Static Checks & Linting)
14
+ # =========================================================================
15
+ quality-gate:
16
+ name: Pre-Commit Quality Gate
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
20
+ with:
21
+ fetch-depth: 0
22
+
23
+ - name: Install uv
24
+ uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
25
+ with:
26
+ enable-cache: true
27
+
28
+ - name: Set up Python
29
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
30
+ with:
31
+ python-version: "3.13"
32
+
33
+ - name: Install dependencies
34
+ run: uv sync --all-extras --dev
35
+
36
+ - name: Run Pre-Commit Quality Checks
37
+ run: uv run pre-commit run --all-files
38
+
39
+ # =========================================================================
40
+ # Stage 2: Unit / Integration Tests & Code Coverage
41
+ # Only executes if Stage 1 static quality checks succeed
42
+ # =========================================================================
43
+ test-suite:
44
+ name: Unit & Integration Tests
45
+ needs: [quality-gate]
46
+ runs-on: ubuntu-latest
47
+ steps:
48
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
49
+ with:
50
+ fetch-depth: 0
51
+
52
+ - name: Install uv
53
+ uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
54
+ with:
55
+ enable-cache: true
56
+
57
+ - name: Set up Python
58
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
59
+ with:
60
+ python-version: "3.13"
61
+
62
+ - name: Install dependencies
63
+ run: uv sync --all-extras --dev
64
+
65
+ - name: Run Unit & Integration Tests
66
+ run: uv run pytest tests/unit tests/integration --cov=src/hexaqual --cov-report=xml --cov-report=term-missing --junitxml=junit.xml -o junit_family=legacy
67
+
68
+ - name: Upload coverage to Codecov
69
+ uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7
70
+ with:
71
+ token: ${{ secrets.CODECOV_TOKEN }}
72
+ files: coverage.xml
73
+ fail_ci_if_error: false
74
+
75
+ - name: Upload test results to Codecov
76
+ if: ${{ !cancelled() }}
77
+ uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1
78
+ with:
79
+ token: ${{ secrets.CODECOV_TOKEN }}
80
+ file: junit.xml
81
+
82
+ # =========================================================================
83
+ # Stage 3: Invariant & Hypothesis Fuzzing
84
+ # Only executes on PRs if Unit & Integration test suite passed cleanly
85
+ # =========================================================================
86
+ hypothesis-fuzzing:
87
+ name: Property-Based State Machine Fuzzing
88
+ needs: [test-suite]
89
+ if: github.event_name == 'pull_request'
90
+ runs-on: ubuntu-latest
91
+ steps:
92
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
93
+ with:
94
+ fetch-depth: 0
95
+
96
+ - name: Install uv
97
+ uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
98
+ with:
99
+ enable-cache: true
100
+
101
+ - name: Set up Python
102
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
103
+ with:
104
+ python-version: "3.13"
105
+
106
+ - name: Install dependencies
107
+ run: uv sync --all-extras --dev
108
+
109
+ - name: Run Hypothesis Fuzzing
110
+ run: uv run pytest tests/properties
@@ -0,0 +1,39 @@
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 environments
24
+ .venv/
25
+ venv/
26
+ ENV/
27
+
28
+ # Testing & Quality
29
+ .coverage
30
+ .coverage.*
31
+ htmlcov/
32
+ .pytest_cache/
33
+ .hypothesis/
34
+ .ruff_cache/
35
+ .mypy_cache/
36
+ .ty_cache/
37
+
38
+ # Hexaflow state & artifacts
39
+ .hexaflow/
@@ -0,0 +1,41 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.6.0
4
+ hooks:
5
+ - id: check-added-large-files
6
+ args: [--maxkb=1024]
7
+ exclude: uv\.lock$
8
+ - id: check-ast
9
+ - id: check-case-conflict
10
+ - id: check-json
11
+ - id: check-merge-conflict
12
+ - id: check-symlinks
13
+ - id: check-toml
14
+ - id: check-yaml
15
+ - id: debug-statements
16
+ - id: detect-private-key
17
+ - id: end-of-file-fixer
18
+ - id: name-tests-test
19
+ args: [--pytest-test-first]
20
+ - id: trailing-whitespace
21
+
22
+ - repo: https://github.com/astral-sh/ruff-pre-commit
23
+ rev: v0.16.2
24
+ hooks:
25
+ - id: ruff
26
+ args: [--fix]
27
+ - id: ruff-format
28
+
29
+ - repo: https://github.com/abravalheri/validate-pyproject
30
+ rev: v0.23
31
+ hooks:
32
+ - id: validate-pyproject
33
+
34
+ - repo: local
35
+ hooks:
36
+ - id: ty-check
37
+ name: ty check
38
+ entry: uv run ty check src
39
+ language: system
40
+ types: [python]
41
+ pass_filenames: false
@@ -0,0 +1 @@
1
+ 3.13
hexaqual-0.0.0/LICENSE ADDED
@@ -0,0 +1,197 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship made available under
36
+ the License, as indicated by a copyright notice that is included in
37
+ or attached to the work (an example is provided in the Appendix below).
38
+
39
+ "Derivative Works" shall mean any work, whether in Source or Object
40
+ form, that is based on (or derived from) the Work and for which the
41
+ editorial revisions, annotations, elaborations, or other modifications
42
+ represent, as a whole, an original work of authorship. For the purposes
43
+ of this License, Derivative Works shall not include works that remain
44
+ separable from, or merely link (or bind by name) to the interfaces of,
45
+ the Work and Derivative Works thereof.
46
+
47
+ "Contribution" shall mean, as defined by the copyright owner
48
+ or by an individual or Legal Entity authorized to submit on behalf of
49
+ the copyright owner, any form of expression (including written, visual,
50
+ or other artistic, technical, or other contributions) submitted to the
51
+ Licensor for inclusion in the Work by the copyright owner or by an
52
+ individual or Legal Entity authorized to submit on behalf of the
53
+ copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any Legal Entity on behalf of
63
+ whom a Contribution has been received by the Licensor and subsequently
64
+ incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, You must include a readable copy of the
108
+ attribution notices contained within such NOTICE file, in
109
+ at least one of the following places: within a NOTICE text
110
+ file distributed as part of the Derivative Works; within
111
+ the Source form or documentation, if provided along with the
112
+ Derivative Works; or, within a display generated by the
113
+ Derivative Works, if and wherever such third-party notices
114
+ normally appear. The contents of the NOTICE file are for
115
+ informational purposes only and do not modify the License.
116
+ You may add Your own attribution notices within Derivative
117
+ Works that You distribute, alongside or as an addendum to
118
+ the NOTICE text from the Work, provided that such additional
119
+ attribution notices cannot be construed as modifying the
120
+ License.
121
+
122
+ You may add Your own license statement for Your modifications and
123
+ may provide additional grant of rights to use, reproduce, modify,
124
+ and distribute Your modifications, or for such Derivative Works as
125
+ a whole, under the terms of this License, provided Your use,
126
+ reproduction, modification, and distribution of the Work otherwise
127
+ complies with the conditions stated in this License.
128
+
129
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
130
+ any Contribution intentionally submitted for inclusion in the Work
131
+ by You to the Licensor shall be under the terms and conditions of
132
+ this License, without any additional terms or conditions.
133
+ Notwithstanding the above, nothing herein shall supersede or modify
134
+ the terms of any separate license agreement you may have executed
135
+ with Licensor regarding such Contributions.
136
+
137
+ 6. Trademarks. This License does not grant permission to use the trade
138
+ names, trademarks, service marks, or product names of the Licensor,
139
+ except as required for reasonable and customary use in describing the
140
+ origin of the Work and reproducing the content of the NOTICE file.
141
+
142
+ 7. Disclaimer of Warranty. Unless required by applicable law or
143
+ agreed to in writing, Licensor provides the Work (and each
144
+ Contributor provides its Contributions) on an "AS IS" BASIS,
145
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
146
+ implied, including, without limitation, any warranties or conditions
147
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
148
+ PARTICULAR PURPOSE. You are solely responsible for determining the
149
+ appropriateness of using or redistributing the Work and assume any
150
+ risks associated with Your exercise of permissions under this License.
151
+
152
+ 8. Limitation of Liability. In no event and under no legal theory,
153
+ whether in tort (including negligence), contract, or otherwise,
154
+ unless required by applicable law (such as deliberate and grossly
155
+ negligent acts) or agreed to in writing, shall any Contributor be
156
+ liable to You for damages, including any direct, indirect, special,
157
+ incidental, or exemplary damages of any character arising as a
158
+ result of this License or out of the use or inability to use the
159
+ Work (including but not limited to damages for loss of goodwill,
160
+ work stoppage, computer failure or malfunction, or all other
161
+ commercial damages or losses), even if such Contributor has been
162
+ advised of the possibility of such damages.
163
+
164
+ 9. Accepting Warranty or Additional Liability. While redistributing
165
+ the Work or Derivative Works thereof, You may choose to offer,
166
+ and charge a fee for, acceptance of support, warranty, indemnity,
167
+ or other liability obligations and/or rights consistent with this
168
+ License. However, in accepting such obligations, You may act only
169
+ on Your own behalf and on Your sole responsibility, not on behalf
170
+ of any other Contributor, and only if You agree to indemnify,
171
+ defend, and hold each Contributor harmless for any liability
172
+ incurred by, or claims asserted against, such Contributor by reason
173
+ of your accepting any such warranty or additional liability.
174
+
175
+ END OF TERMS AND CONDITIONS
176
+
177
+ APPENDIX: How to apply the Apache License to your work.
178
+
179
+ To apply the Apache License to your work, attach the following
180
+ boilerplate notice, with the fields enclosed by brackets "[]"
181
+ replaced with your own identifying information. (Don't include
182
+ the brackets!) The text should be enclosed in the appropriate
183
+ comment syntax for the file format.
184
+
185
+ Copyright 2026 The Hexastack Authors
186
+
187
+ Licensed under the Apache License, Version 2.0 (the "License");
188
+ you may not use this file except in compliance with the License.
189
+ You may obtain a copy of the License at
190
+
191
+ http://www.apache.org/licenses/LICENSE-2.0
192
+
193
+ Unless required by applicable law or agreed to in writing, software
194
+ distributed under the License is distributed on an "AS IS" BASIS,
195
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
196
+ implied. See the License for the specific language governing
197
+ permissions and limitations under the License.
@@ -0,0 +1,76 @@
1
+ Metadata-Version: 2.5
2
+ Name: hexaqual
3
+ Version: 0.0.0
4
+ Summary: Universal Python quality gates, architectural boundary enforcement, and release engineering toolchain.
5
+ Project-URL: Homepage, https://github.com/TheTrueSCU/hexaqual
6
+ Project-URL: Repository, https://github.com/TheTrueSCU/hexaqual
7
+ Project-URL: Documentation, https://dopplereffect.us/hexaqual/
8
+ Author-email: Richard West <dopplereffect.us@gmail.com>
9
+ License-Expression: Apache-2.0
10
+ License-File: LICENSE
11
+ Classifier: Development Status :: 2 - Pre-Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Topic :: Software Development :: Quality Assurance
17
+ Classifier: Topic :: Software Development :: Testing
18
+ Requires-Python: >=3.13
19
+ Requires-Dist: hexaflow>=0.1.0
20
+ Requires-Dist: pydantic>=2.10.0
21
+ Requires-Dist: rich>=13.9.0
22
+ Requires-Dist: typer>=0.15.0
23
+ Description-Content-Type: text/markdown
24
+
25
+ # 🛡️ Hexaqual
26
+
27
+ [![PyPI version](https://img.shields.io/pypi/v/hexaqual.svg)](https://pypi.org/project/hexaqual/)
28
+ [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
29
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
30
+
31
+ > **Universal Python quality gates, architectural boundary enforcement, and release engineering toolchain.**
32
+
33
+ Hexaqual provides an opinionated, high-velocity quality harness designed for modular Python architectures, monorepos, and single-package projects. It unifies linting, type-checking, cognitive complexity enforcement, `__all__` integrity, 1:1 test symmetry, and automated PyPI release workflows into a cohesive, workflow-driven developer CLI.
34
+
35
+ ---
36
+
37
+ ## 🚀 Key Features
38
+
39
+ * **Workflow-Driven Sanity Checks**: Multi-stage DAG pipeline powered by [Hexaflow](https://pypi.org/project/hexaflow/) for parallel linting, typechecking, and testing.
40
+ * **Architectural Invariants**: First-class support for hexagonal layer enforcement (`domain`, `ports`, `adapters`, `infra`).
41
+ * **Test Parity Enforcement**: 1:1 symmetry verification between source modules and unit test suites.
42
+ * **Public API Integrity**: Automatic sorting, deduplication, and AST validation of `__all__` exports.
43
+ * **Smart PyPI Publishing**: Dependency-ordered, reproducible builds with automatic skip-if-exists checks.
44
+
45
+ ---
46
+
47
+ ## 📦 Installation
48
+
49
+ ```bash
50
+ # Add as a development dependency
51
+ uv add --dev hexaqual
52
+
53
+ # Or install globally
54
+ uv tool install hexaqual
55
+ ```
56
+
57
+ ---
58
+
59
+ ## 🛠️ Basic Usage
60
+
61
+ ```bash
62
+ # Run the complete sanity check pipeline
63
+ hexaqual check
64
+
65
+ # Audit and auto-format __all__ statements
66
+ hexaqual statements fix
67
+
68
+ # Audit test suite parity
69
+ hexaqual parity check
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 📄 License
75
+
76
+ Apache-2.0. See [LICENSE](LICENSE) for details.
@@ -0,0 +1,52 @@
1
+ # 🛡️ Hexaqual
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/hexaqual.svg)](https://pypi.org/project/hexaqual/)
4
+ [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
5
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
6
+
7
+ > **Universal Python quality gates, architectural boundary enforcement, and release engineering toolchain.**
8
+
9
+ Hexaqual provides an opinionated, high-velocity quality harness designed for modular Python architectures, monorepos, and single-package projects. It unifies linting, type-checking, cognitive complexity enforcement, `__all__` integrity, 1:1 test symmetry, and automated PyPI release workflows into a cohesive, workflow-driven developer CLI.
10
+
11
+ ---
12
+
13
+ ## 🚀 Key Features
14
+
15
+ * **Workflow-Driven Sanity Checks**: Multi-stage DAG pipeline powered by [Hexaflow](https://pypi.org/project/hexaflow/) for parallel linting, typechecking, and testing.
16
+ * **Architectural Invariants**: First-class support for hexagonal layer enforcement (`domain`, `ports`, `adapters`, `infra`).
17
+ * **Test Parity Enforcement**: 1:1 symmetry verification between source modules and unit test suites.
18
+ * **Public API Integrity**: Automatic sorting, deduplication, and AST validation of `__all__` exports.
19
+ * **Smart PyPI Publishing**: Dependency-ordered, reproducible builds with automatic skip-if-exists checks.
20
+
21
+ ---
22
+
23
+ ## 📦 Installation
24
+
25
+ ```bash
26
+ # Add as a development dependency
27
+ uv add --dev hexaqual
28
+
29
+ # Or install globally
30
+ uv tool install hexaqual
31
+ ```
32
+
33
+ ---
34
+
35
+ ## 🛠️ Basic Usage
36
+
37
+ ```bash
38
+ # Run the complete sanity check pipeline
39
+ hexaqual check
40
+
41
+ # Audit and auto-format __all__ statements
42
+ hexaqual statements fix
43
+
44
+ # Audit test suite parity
45
+ hexaqual parity check
46
+ ```
47
+
48
+ ---
49
+
50
+ ## 📄 License
51
+
52
+ Apache-2.0. See [LICENSE](LICENSE) for details.
@@ -0,0 +1,72 @@
1
+ [project]
2
+ name = "hexaqual"
3
+ version = "0.0.0"
4
+ description = "Universal Python quality gates, architectural boundary enforcement, and release engineering toolchain."
5
+ readme = "README.md"
6
+ license = "Apache-2.0"
7
+ authors = [
8
+ { name = "Richard West", email = "dopplereffect.us@gmail.com" }
9
+ ]
10
+ requires-python = ">=3.13"
11
+ dependencies = [
12
+ "hexaflow>=0.1.0",
13
+ "pydantic>=2.10.0",
14
+ "rich>=13.9.0",
15
+ "typer>=0.15.0",
16
+ ]
17
+
18
+ classifiers = [
19
+ "Development Status :: 2 - Pre-Alpha",
20
+ "Intended Audience :: Developers",
21
+ "License :: OSI Approved :: Apache Software License",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3.13",
24
+ "Topic :: Software Development :: Quality Assurance",
25
+ "Topic :: Software Development :: Testing",
26
+ ]
27
+
28
+ [project.urls]
29
+ Homepage = "https://github.com/TheTrueSCU/hexaqual"
30
+ Repository = "https://github.com/TheTrueSCU/hexaqual"
31
+ Documentation = "https://dopplereffect.us/hexaqual/"
32
+
33
+ [build-system]
34
+ requires = ["hatchling"]
35
+ build-backend = "hatchling.build"
36
+
37
+ [dependency-groups]
38
+ dev = [
39
+ "hypothesis>=6.168.0",
40
+ "pre-commit>=4.6.2",
41
+ "pytest>=9.1.1",
42
+ "pytest-asyncio>=1.4.0",
43
+ "pytest-cov>=7.1.0",
44
+ "ruff>=0.16.2",
45
+ "ty>=0.0.75",
46
+ ]
47
+
48
+ [tool.pytest.ini_options]
49
+ minversion = "8.0"
50
+ testpaths = ["tests"]
51
+ python_files = ["test_*.py"]
52
+ python_classes = ["Test*"]
53
+ python_functions = ["test_*"]
54
+ asyncio_mode = "auto"
55
+ addopts = "-ra -q --strict-markers"
56
+
57
+ [tool.ruff]
58
+ line-length = 100
59
+ target-version = "py313"
60
+
61
+ [tool.ruff.lint]
62
+ select = [
63
+ "E", "F", "W", "I", "UP", "B", "C4", "SIM", "RUF"
64
+ ]
65
+ ignore = ["E501"]
66
+
67
+ [tool.ruff.lint.isort]
68
+ known-first-party = ["hexaqual"]
69
+
70
+ [project.scripts]
71
+ hexaqual = "hexaqual.cli.main:app"
72
+ hq = "hexaqual.cli.main:app"
@@ -0,0 +1,14 @@
1
+ """Hexaqual - Universal Python Quality, Governance, and Release Engineering Suite.
2
+
3
+ Notes/Architectural Intent:
4
+ Root package export for Hexaqual. Provides version identification and canonical
5
+ entrypoints for quality verification pipelines.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ __version__ = "0.0.0"
11
+
12
+ __all__ = [
13
+ "__version__",
14
+ ]
@@ -0,0 +1,9 @@
1
+ """Concrete adapters implementing Hexaqual port interfaces.
2
+
3
+ Notes/Architectural Intent:
4
+ Houses concrete integrations for subprocess runners, file inspection, and terminal output.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ __all__: list[str] = []
@@ -0,0 +1,13 @@
1
+ """CLI package exports for Hexaqual.
2
+
3
+ Notes/Architectural Intent:
4
+ Provides Typer CLI entrypoints for developer interactive usage and CI automation.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from hexaqual.cli.main import app
10
+
11
+ __all__ = [
12
+ "app",
13
+ ]
@@ -0,0 +1,49 @@
1
+ """Main CLI entrypoint for Hexaqual.
2
+
3
+ Notes/Architectural Intent:
4
+ Driving adapter exposing command groups for sanity checks, statements,
5
+ parity audits, and release engineering.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import typer
11
+ from rich.console import Console
12
+
13
+ from hexaqual import __version__
14
+
15
+ app = typer.Typer(
16
+ name="hexaqual",
17
+ help="Hexaqual - Universal Python Quality, Governance, and Release Engineering Suite.",
18
+ no_args_is_help=True,
19
+ )
20
+
21
+ console = Console()
22
+
23
+
24
+ @app.command()
25
+ def version() -> None:
26
+ """Display the current Hexaqual version.
27
+
28
+ Notes/Architectural Intent:
29
+ Quick diagnostic command to confirm package installation and version info.
30
+ """
31
+ console.print(f"[bold cyan]Hexaqual[/bold cyan] version [bold green]{__version__}[/bold green]")
32
+
33
+
34
+ @app.command()
35
+ def check() -> None:
36
+ """Execute the sanity check pipeline.
37
+
38
+ Notes/Architectural Intent:
39
+ Primary entrypoint for local pre-commit verification and CI pipelines.
40
+ """
41
+ console.print("[bold yellow]Running Hexaqual Sanity Pipeline...[/bold yellow]")
42
+ console.print("[green]✓[/green] Environment initialized successfully.")
43
+
44
+
45
+ __all__ = [
46
+ "app",
47
+ "check",
48
+ "version",
49
+ ]