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.
- z4j-1.0.1/.github/CODEOWNERS +2 -0
- z4j-1.0.1/.github/ISSUE_TEMPLATE/bug_report.yml +74 -0
- z4j-1.0.1/.github/ISSUE_TEMPLATE/config.yml +8 -0
- z4j-1.0.1/.github/ISSUE_TEMPLATE/feature_request.yml +33 -0
- z4j-1.0.1/.github/dependabot.yml +35 -0
- z4j-1.0.1/.github/workflows/ci.yml +109 -0
- z4j-1.0.1/.github/workflows/release.yml +65 -0
- z4j-1.0.1/.gitignore +100 -0
- z4j-1.0.1/CHANGELOG.md +39 -0
- z4j-1.0.1/LICENSE +662 -0
- z4j-1.0.1/PKG-INFO +222 -0
- z4j-1.0.1/README.md +123 -0
- z4j-1.0.1/SECURITY.md +37 -0
- z4j-1.0.1/pyproject.toml +102 -0
- z4j-1.0.1/src/z4j/__init__.py +31 -0
- z4j-1.0.1/src/z4j/py.typed +0 -0
|
@@ -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
|