z4j 1.0.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.
@@ -0,0 +1,2 @@
1
+ # All changes default to the project maintainer.
2
+ * @z4jdev
@@ -0,0 +1,74 @@
1
+ name: Bug report
2
+ description: Report a problem with z4j
3
+ title: "[bug] "
4
+ labels: ["bug", "triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for reporting a bug in `z4j`.
10
+
11
+ **Security bugs do NOT belong here.** If you believe you've
12
+ found a security issue, please email `security@z4j.com` -
13
+ see [SECURITY.md](../blob/main/SECURITY.md).
14
+
15
+ - type: input
16
+ id: package-version
17
+ attributes:
18
+ label: z4j version
19
+ description: Output of `pip show z4j | grep -E 'Name|Version'`
20
+ placeholder: z4j 1.0.0
21
+ validations:
22
+ required: true
23
+
24
+ - type: input
25
+ id: python-version
26
+ attributes:
27
+ label: Python version
28
+ placeholder: 3.14.4
29
+ validations:
30
+ required: true
31
+
32
+ - type: dropdown
33
+ id: module
34
+ attributes:
35
+ label: Affected module
36
+ description: (Customize this dropdown's options per package.)
37
+ options:
38
+ - Unsure / multiple
39
+ validations:
40
+ required: false
41
+
42
+ - type: textarea
43
+ id: repro
44
+ attributes:
45
+ label: Minimal reproduction
46
+ description: A standalone script is ideal.
47
+ validations:
48
+ required: true
49
+
50
+ - type: textarea
51
+ id: expected
52
+ attributes:
53
+ label: Expected behavior
54
+ validations:
55
+ required: true
56
+
57
+ - type: textarea
58
+ id: actual
59
+ attributes:
60
+ label: Actual behavior
61
+ description: Include the full traceback if applicable. Please redact secrets.
62
+ render: shell
63
+ validations:
64
+ required: true
65
+
66
+ - type: checkboxes
67
+ id: terms
68
+ attributes:
69
+ label: Confirmation
70
+ options:
71
+ - label: I searched existing issues and this is not a duplicate
72
+ required: true
73
+ - label: This is NOT a security issue (those go to security@z4j.com)
74
+ required: true
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: mailto:security@z4j.com
5
+ about: Report a security issue privately
6
+ - name: Question or discussion
7
+ url: https://github.com/z4jdev/z4j/discussions
8
+ about: General questions about z4j go to the project-wide Discussions
@@ -0,0 +1,33 @@
1
+ name: Feature request
2
+ description: Suggest a capability for z4j
3
+ title: "[feature] "
4
+ labels: ["enhancement", "triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for suggesting a feature for `z4j`. Please describe
10
+ the problem you're trying to solve, not just the solution you
11
+ have in mind.
12
+
13
+ - type: textarea
14
+ id: problem
15
+ attributes:
16
+ label: Problem
17
+ description: What are you trying to do that z4j does not currently support?
18
+ validations:
19
+ required: true
20
+
21
+ - type: textarea
22
+ id: proposed
23
+ attributes:
24
+ label: Proposed solution
25
+ validations:
26
+ required: false
27
+
28
+ - type: textarea
29
+ id: alternatives
30
+ attributes:
31
+ label: Alternatives considered
32
+ validations:
33
+ required: false
@@ -0,0 +1,35 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: uv
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ day: monday
8
+ time: "04:00"
9
+ timezone: UTC
10
+ open-pull-requests-limit: 5
11
+ labels:
12
+ - dependencies
13
+ - python
14
+ commit-message:
15
+ prefix: chore
16
+ include: scope
17
+ groups:
18
+ minor-and-patch:
19
+ update-types:
20
+ - minor
21
+ - patch
22
+
23
+ - package-ecosystem: github-actions
24
+ directory: /
25
+ schedule:
26
+ interval: weekly
27
+ day: monday
28
+ time: "04:00"
29
+ timezone: UTC
30
+ open-pull-requests-limit: 3
31
+ labels:
32
+ - dependencies
33
+ - ci
34
+ commit-message:
35
+ prefix: ci
@@ -0,0 +1,109 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ concurrency:
10
+ group: ci-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ env:
17
+ UV_VERSION: "0.5.11"
18
+ FORCE_COLOR: "1"
19
+ PIP_DISABLE_PIP_VERSION_CHECK: "1"
20
+
21
+ jobs:
22
+ lint:
23
+ name: Lint and format
24
+ runs-on: ubuntu-24.04
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v5
30
+ with:
31
+ python-version: "3.14"
32
+
33
+ - name: Install uv
34
+ uses: astral-sh/setup-uv@v4
35
+ with:
36
+ version: ${{ env.UV_VERSION }}
37
+ enable-cache: true
38
+
39
+ - name: Sync dependencies
40
+ run: uv sync --all-extras --dev
41
+
42
+ - name: Ruff check
43
+ run: uv run ruff check .
44
+
45
+ - name: Ruff format check
46
+ run: uv run ruff format --check .
47
+
48
+ - name: Mypy
49
+ run: uv run mypy src
50
+
51
+ test:
52
+ name: Tests (Python ${{ matrix.python-version }})
53
+ runs-on: ubuntu-24.04
54
+ needs: [lint]
55
+ strategy:
56
+ fail-fast: false
57
+ matrix:
58
+ python-version: ["3.13", "3.14"]
59
+ steps:
60
+ - uses: actions/checkout@v4
61
+
62
+ - name: Set up Python
63
+ uses: actions/setup-python@v5
64
+ with:
65
+ python-version: ${{ matrix.python-version }}
66
+
67
+ - name: Install uv
68
+ uses: astral-sh/setup-uv@v4
69
+ with:
70
+ version: ${{ env.UV_VERSION }}
71
+ enable-cache: true
72
+
73
+ - name: Sync dependencies
74
+ run: uv sync --all-extras --dev
75
+
76
+ - name: Run tests
77
+ run: uv run pytest -xvs tests/
78
+
79
+ build:
80
+ name: Build wheel + sdist
81
+ runs-on: ubuntu-24.04
82
+ needs: [test]
83
+ steps:
84
+ - uses: actions/checkout@v4
85
+
86
+ - name: Set up Python
87
+ uses: actions/setup-python@v5
88
+ with:
89
+ python-version: "3.14"
90
+
91
+ - name: Install uv
92
+ uses: astral-sh/setup-uv@v4
93
+ with:
94
+ version: ${{ env.UV_VERSION }}
95
+
96
+ - name: Build
97
+ run: uv build
98
+
99
+ - name: Validate metadata
100
+ run: |
101
+ uv tool install twine
102
+ uv tool run twine check dist/*
103
+
104
+ - name: Upload artefacts
105
+ uses: actions/upload-artifact@v4
106
+ with:
107
+ name: dist
108
+ path: dist/
109
+ retention-days: 7
@@ -0,0 +1,65 @@
1
+ name: Release
2
+
3
+ # Manual-publish phase: this workflow builds the package and attaches
4
+ # the wheel + sdist to a GitHub Release. It does NOT upload to PyPI.
5
+ # PyPI uploads are hand-picked from a local staging folder via twine,
6
+ # under the maintainer's direct control. See docs/RELEASE.md.
7
+
8
+ on:
9
+ push:
10
+ tags:
11
+ - "v*.*.*"
12
+
13
+ permissions:
14
+ contents: write
15
+ id-token: read
16
+
17
+ env:
18
+ UV_VERSION: "0.5.11"
19
+
20
+ jobs:
21
+ build-and-release:
22
+ name: Build and attach to GitHub Release
23
+ runs-on: ubuntu-24.04
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - name: Verify tag matches pyproject version
28
+ run: |
29
+ TAG_VERSION="${GITHUB_REF_NAME#v}"
30
+ PKG_VERSION=$(grep -E '^version = ' pyproject.toml | head -1 | sed -E 's/version = "(.*)"/\1/')
31
+ if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then
32
+ echo "::error::Tag $GITHUB_REF_NAME does not match pyproject version $PKG_VERSION"
33
+ exit 1
34
+ fi
35
+
36
+ - name: Set up Python
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: "3.14"
40
+
41
+ - name: Install uv
42
+ uses: astral-sh/setup-uv@v4
43
+ with:
44
+ version: ${{ env.UV_VERSION }}
45
+
46
+ - name: Sync dependencies
47
+ run: uv sync --all-extras --dev
48
+
49
+ - name: Run tests
50
+ run: uv run pytest -xvs tests/
51
+
52
+ - name: Build wheel + sdist
53
+ run: uv build
54
+
55
+ - name: Validate metadata
56
+ run: |
57
+ uv tool install twine
58
+ uv tool run twine check dist/*
59
+
60
+ - name: Create GitHub Release with artefacts
61
+ uses: softprops/action-gh-release@v2
62
+ with:
63
+ files: dist/*
64
+ generate_release_notes: true
65
+ fail_on_unmatched_files: true
z4j-1.0.1/.gitignore ADDED
@@ -0,0 +1,100 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ *.egg
8
+ *.egg-info/
9
+ .eggs/
10
+ dist/
11
+ build/
12
+ wheels/
13
+ *.egg-info/
14
+ .installed.cfg
15
+ .pytest_cache/
16
+ .mypy_cache/
17
+ .ruff_cache/
18
+ .coverage
19
+ .coverage.*
20
+ coverage.xml
21
+ *.cover
22
+ htmlcov/
23
+ .tox/
24
+ .nox/
25
+ .hypothesis/
26
+ .pytest_cache/
27
+
28
+ # Virtual envs
29
+ .venv/
30
+ venv/
31
+ env/
32
+ ENV/
33
+ .python-version-local
34
+
35
+ # uv
36
+ .uv/
37
+
38
+ # Node / pnpm
39
+ node_modules/
40
+ .pnpm-store/
41
+ pnpm-debug.log*
42
+ npm-debug.log*
43
+ yarn-debug.log*
44
+ yarn-error.log*
45
+
46
+ # TanStack Router auto-generated routes
47
+ routeTree.gen.ts
48
+ routeTree.gen.ts.timestamp-*
49
+
50
+ # Next.js / Vite build outputs (defensive — future proofing)
51
+ .next/
52
+ .vite/
53
+ dist/
54
+ out/
55
+
56
+ # IDE / editor
57
+ .idea/
58
+ .vscode/
59
+ *.swp
60
+ *.swo
61
+ *~
62
+ .DS_Store
63
+ Thumbs.db
64
+ desktop.ini
65
+
66
+ # Claude Code workspace state — local-machine permissions cache,
67
+ # scheduled-task locks, and an allowlist that often embeds dev
68
+ # tokens. Each developer regenerates their own.
69
+ .claude/
70
+
71
+ # OS
72
+ .AppleDouble
73
+ .LSOverride
74
+
75
+ # Env files — never commit secrets. Match every .env* by default,
76
+ # then explicitly allow-list the templates / examples that are
77
+ # safe to share publicly.
78
+ .env
79
+ .env.*
80
+ !.env.example
81
+ !.env.template
82
+ !.env.sample
83
+
84
+ # z4j local data
85
+ /var/
86
+ *.sqlite
87
+ *.sqlite-journal
88
+ z4j-*.dump
89
+
90
+ # Docker
91
+ docker-compose.override.yml
92
+
93
+ # Logs
94
+ *.log
95
+ logs/
96
+
97
+ # Misc build artifacts
98
+ *.bak
99
+ *.orig
100
+ *.rej
z4j-1.0.1/CHANGELOG.md ADDED
@@ -0,0 +1,39 @@
1
+ # Changelog
2
+
3
+ All notable changes to `z4j` are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.0.1] - 2026-04-22
11
+
12
+ First public release of the z4j umbrella package. Synchronized with z4j-brain 1.0.1.
13
+
14
+ ### Features
15
+
16
+ - **Meta-install for the z4j control plane.** `pip install z4j` resolves to `z4j-brain>=1.0.1` + `z4j-core>=1.0.1`, giving a fully working brain server (dashboard, REST API, WebSocket gateway, SQLite DB, Alembic migrations, CLI) in one command. Mirrors the `docker run z4jdev/z4j` experience for Python-first operators.
17
+ - **Clean extras surface for adapter selection**: `[celery]`, `[django]`, `[flask]`, `[fastapi]`, `[rq]`, `[dramatiq]`, `[huey]`, `[arq]`, `[taskiq]`, `[apscheduler]`, `[bare]`. Each extra pulls the engine adapter plus its companion scheduler (where applicable) in one shot, covering the 95% case.
18
+ - **Infra pass-through extra** `[postgres]` defers to `z4j-brain[postgres]`, so asyncpg's version floor stays owned by the brain package rather than being duplicated here.
19
+ - **Convenience bundles**: `[agents]` (every engine adapter at once) and `[all]` (= `[agents,postgres]`, the kitchen sink for CI / dev rigs).
20
+ - **Agent-only install recipe documented** for organizations whose policy forbids AGPL code: `pip install z4j-core z4j-<adapter>` keeps Apache-2.0 purity without touching the brain.
21
+
22
+ ### Notes
23
+
24
+ - **OpenTelemetry is not shipped.** The umbrella intentionally does not expose an `[otel]` extra. z4j-brain 1.0.1 simultaneously drops its own `[otel]` extra because the packages were installed but the integration code was never wired (no `TracerProvider` init, no FastAPI instrumentation, no OTLP export path). OpenTelemetry support will return as a real working feature in a future release, at which point both packages will reintroduce the extra. Until then, the working observability story is Prometheus `/metrics` + structlog JSON logs, both wired in z4j-brain since 1.0.0.
25
+
26
+ ### Compatibility
27
+
28
+ - Python 3.11, 3.12, 3.13, 3.14.
29
+ - Operating-system independent (Linux, macOS, Windows).
30
+ - Depends on `z4j-brain>=1.0.1` (AGPL v3) and `z4j-core>=1.0.1` (Apache 2.0).
31
+
32
+ ## Links
33
+
34
+ - Repository: <https://github.com/z4jdev/z4j>
35
+ - Issues: <https://github.com/z4jdev/z4j/issues>
36
+ - PyPI: <https://pypi.org/project/z4j/>
37
+
38
+ [Unreleased]: https://github.com/z4jdev/z4j/compare/v1.0.0...HEAD
39
+ [1.0.0]: https://github.com/z4jdev/z4j/releases/tag/v1.0.0