Skip to content

Commit 8b53e07

Browse files
author
semantic-release
committed
chore(release): v1.7.0
1 parent fbc4cfb commit 8b53e07

3 files changed

Lines changed: 206 additions & 31 deletions

File tree

CHANGELOG.md

Lines changed: 204 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,77 @@
11
# CHANGELOG
22

33

4-
## Unreleased
4+
## v1.7.0 (2026-07-21)
5+
6+
### Bug Fixes
7+
8+
- **security**: Skip JWT audience check when audience is empty
9+
([`267978c`](https://github.com/UnicoLab/agentomatic/commit/267978c21b3b5bcc60792d457239341973c13107))
10+
11+
Keycloak often issues aud=account unless a mapper is configured; empty JWTConfig.audience must not
12+
enable verify_aud.
13+
14+
Co-authored-by: Cursor <cursoragent@cursor.com>
15+
16+
- **security**: Skip OPTIONS in JWT and API-key auth
17+
([`950358b`](https://github.com/UnicoLab/agentomatic/commit/950358bfe8c8017b64f9378efec5bc6f4456c3a8))
18+
19+
CORS preflight has no Authorization header; blocking it with 401 broke browser calls from the Vite
20+
SPA to JWT-protected ai_platform APIs.
21+
22+
Co-authored-by: Cursor <cursoragent@cursor.com>
23+
24+
### Code Style
25+
26+
- **security**: Apply ruff format for CI
27+
([`fbc4cfb`](https://github.com/UnicoLab/agentomatic/commit/fbc4cfb19bf7292ef404c898d3f3db63e46d29d3))
28+
29+
Co-authored-by: Cursor <cursoragent@cursor.com>
530

631
### Features
732

8-
- **security**: OIDC claim normalization (`extract_roles` / `extract_scopes`)
9-
for Keycloak-style `realm_access`, `resource_access`, `scope`, and `scp`.
10-
- **security**: Optional DPoP (RFC 9449) validation on `JWTAuthMiddleware`
11-
(`JWTConfig.require_dpop`, `DPoP` header, `cnf.jkt` binding, `jti` replay
12-
cache). In-memory replay cache — use a shared store for multi-replica HA.
13-
- **security**: `ZeroTrustEnforcer` uses normalized roles/scopes from request
14-
state or claim extraction (not only flat `roles` / `scopes` arrays).
33+
- **security**: Add OIDC claim normalization and optional DPoP
34+
([`11c8343`](https://github.com/UnicoLab/agentomatic/commit/11c83433e3f64de77252210d9c04b40b9de01e2d))
1535

16-
## v1.6.0 (2026-07-20)
36+
Align JWT middleware with Keycloak/AXA-style tokens (realm_access, scope, resource_access) and
37+
validate DPoP proofs when required or when tokens are cnf.jkt-bound, so platforms can enforce full
38+
OIDC resource-server semantics.
39+
40+
Co-authored-by: Cursor <cursoragent@cursor.com>
41+
42+
43+
## v1.6.0 (2026-07-21)
1744

1845
### Bug Fixes
1946

2047
- Clear mypy errors and ruff format drift
21-
([`0e2c85d`](https://github.com/UnicoLab/agentomatic/commit/0e2c85d245d8438417461bfccf75d3d0050e1231))
48+
([`799bb84`](https://github.com/UnicoLab/agentomatic/commit/799bb840e5c2134a63b121be62f6aa01ebabb9ff))
2249

2350
Narrow class-agent streaming to a typed BaseGraphAgent binding so mypy passes, and reformat drifted
2451
optimize/test files for CI format-check.
2552

2653
Co-authored-by: Cursor <cursoragent@cursor.com>
2754

28-
### Features (prior)
55+
- **optimize**: Make prompt fit/train mechanics work with oMLX
56+
([`80772a9`](https://github.com/UnicoLab/agentomatic/commit/80772a99281b4842c6cc36561fc990a23e9d981a))
57+
58+
Ensure fitted prompts and overrides actually apply, keep LLM-as-judge failures honest, add
59+
oMLX-friendly caller routing, and cover the pipeline with extensive unit plus live oMLX tests.
60+
61+
Co-authored-by: Cursor <cursoragent@cursor.com>
62+
63+
### Features
2964

3065
- **optimize**: Add gemini/ provider and live Gemini fit tests
31-
([`955eb31`](https://github.com/UnicoLab/agentomatic/commit/955eb3111228a3817b349f9e9a8bb9dc7c7421d5))
66+
([`abc1ab5`](https://github.com/UnicoLab/agentomatic/commit/abc1ab50e5ede29518db27d786425e633f5a857a))
3267

3368
Route gemini/* through the Generative Language API, keep cloud models out of SLM multipass
3469
heuristics, and cover rewrite/GEPA/judge with a live suite gated on GEMINI_API_KEY.
3570

3671
Co-authored-by: Cursor <cursoragent@cursor.com>
3772

3873
- **optimize**: Harden openai/ cloud routing for reliable fit/rewrite
39-
([`a8302fc`](https://github.com/UnicoLab/agentomatic/commit/a8302fcd962bd8cee1e85983512abee77a39b61d))
74+
([`3b48d57`](https://github.com/UnicoLab/agentomatic/commit/3b48d5704bf7e75e3c54d443492fe4bdb087df09))
4075

4176
Keep gpt-*/o1/o3 models on api.openai.com even when OPENAI_BASE_URL points at a local server,
4277
require a real API key for cloud calls, handle max_completion_tokens for reasoning models, and add
@@ -45,7 +80,7 @@ Keep gpt-*/o1/o3 models on api.openai.com even when OPENAI_BASE_URL points at a
4580
Co-authored-by: Cursor <cursoragent@cursor.com>
4681

4782
- **optimize**: Multi-pass rewrite with full briefing for SLMs and LLMs
48-
([`a07adc0`](https://github.com/UnicoLab/agentomatic/commit/a07adc0597a63e8fd02c185b52585cdfb396f03b))
83+
([`56b2c71`](https://github.com/UnicoLab/agentomatic/commit/56b2c7192ebcf68c6b176f888ec3a400376fc809))
4984

5085
Give rewrite/GEPA/MIPRO the full fit context (prompt, params, dataset, eval I/O, metrics, history)
5186
and auto-run draft→revise for frontier LLMs plus draft→critique→revise for SLMs, with docs and
@@ -56,10 +91,10 @@ Co-authored-by: Cursor <cursoragent@cursor.com>
5691
### Testing
5792

5893
- Adding tests
59-
([`1b9c4ae`](https://github.com/UnicoLab/agentomatic/commit/1b9c4ae53197fe9eb8420627e4f204fd70f668a7))
94+
([`8a891c3`](https://github.com/UnicoLab/agentomatic/commit/8a891c312a608c06e2622baf75978c493f464f77))
6095

6196
- **endpoints**: 93 comprehensive API endpoint tests
62-
([`38aac2d`](https://github.com/UnicoLab/agentomatic/commit/38aac2d50591f6ca217247db60d76052dabef01f))
97+
([`39d99a7`](https://github.com/UnicoLab/agentomatic/commit/39d99a754ba7d0664c5757f01c101ab9ed67afc6))
6398

6499
tests/test_agent_endpoints.py — covers every auto-generated route:
65100

@@ -94,7 +129,7 @@ Studio: /studio/agents/{name}/runs/stream returns 200 + [DONE] class agent: no r
94129
Full thread lifecycle: chat(persist=True) → get messages → clear → delete
95130

96131
- **optimize**: 54 regression tests for all 6 confirmed bugs
97-
([`1660038`](https://github.com/UnicoLab/agentomatic/commit/1660038404be3dffabe1a53a4bead47a158aaa74))
132+
([`29d7cab`](https://github.com/UnicoLab/agentomatic/commit/29d7caba2611a27532ba14217684f0fe27bdff11))
98133

99134
Also fixes two source bugs uncovered by the new tests:
100135

@@ -140,12 +175,12 @@ TestEndToEndLocalTraining (3 tests) - full PromptFitter.fit() with local callabl
140175
MetricLoss end-to-end - CompositeMetric → MetricLoss with multiple sub-metrics
141176

142177

143-
## v1.5.1 (2026-07-17)
178+
## v1.5.1 (2026-07-21)
144179

145180
### Bug Fixes
146181

147182
- **lint+types+docs**: Ruff clean, mypy clean, docs improved
148-
([`7d25480`](https://github.com/UnicoLab/agentomatic/commit/7d254800946d503f5483b53cee7988e3aa3a88af))
183+
([`461b783`](https://github.com/UnicoLab/agentomatic/commit/461b78332ebf2cdaab184373d39a215b243830d3))
149184

150185
lint: remove unused json import from runner.py (F401/F811) sort imports in test_fitter.py (I001)
151186
ruff format runner.py (1 file reformatted)
@@ -164,7 +199,7 @@ docs(optimization): add comprehensive 'Local-mode Training' guide section - full
164199
result.history documented with list[float] example
165200

166201
- **optimize**: Local-mode training — 6 confirmed bugs fixed
167-
([`1b07416`](https://github.com/UnicoLab/agentomatic/commit/1b074164d132a199e8e338fd0f307053588a38e8))
202+
([`4815d80`](https://github.com/UnicoLab/agentomatic/commit/4815d80ee073fb8c63e0ce291b695560a100c1b9))
168203

169204
BUG-1: AgentRunner.agent_callable — local callable bypasses HTTP - Add agent_callable param to
170205
AgentRunner.__init__ - Add _run_local() dispatching async/sync callables via asyncio.to_thread -
@@ -204,54 +239,100 @@ feat(tests): 19 new tests for local-mode (AgentRunner, _wrap_local_agent, Prompt
204239
docs: local-mode examples in optimization.md and class-agents.md
205240

206241

207-
## v1.5.0 (2026-07-16)
242+
## v1.5.0 (2026-07-21)
208243

209244
### Bug Fixes
210245

246+
- **deploy**: Use absolute compose paths for out-of-tree --out
247+
([`a7c890a`](https://github.com/UnicoLab/agentomatic/commit/a7c890a5bf24cce5ce95521143007a8e1387bfb6))
248+
249+
When deploy artefacts are written outside the project, relative dockerfile paths escaped the Docker
250+
build context and broke compose builds. Fall back to absolute context/dockerfile/volume paths
251+
instead.
252+
253+
Co-authored-by: Cursor <cursoragent@cursor.com>
254+
211255
- **invoke**: Expose structured agent output on AgentInvokeResponse
212-
([`e8a6c33`](https://github.com/UnicoLab/agentomatic/commit/e8a6c3333704f76900f324f9f57cc8813216e0c8))
256+
([`3c67b0b`](https://github.com/UnicoLab/agentomatic/commit/3c67b0b542894bca996ddc5e563a3dcfe35741d5))
213257

214258
Class-agent state_to_output dicts were stringified into response via str(result), breaking frontend
215259
parsers. Add an output field and coerce payloads so sync/chat/A2A paths return JSON-friendly
216260
structured data.
217261

218262
- **pipelines**: Discover flat YAML when scanning pipelines/ itself
219-
([`0ea8def`](https://github.com/UnicoLab/agentomatic/commit/0ea8defb92ecbd2e28a0432a4405297ff6735f49))
263+
([`4767a3f`](https://github.com/UnicoLab/agentomatic/commit/4767a3f6feb54085cb6a2b594f4fbc8a13543e0d))
220264

221265
AgentPlatform.build passes the pipelines/ directory into discover_pipelines, which previously only
222266
loaded pipelines/pipelines/*.yaml or pipeline.yaml.
223267

224268
Co-authored-by: Cursor <cursoragent@cursor.com>
225269

270+
- **platform**: Restore OpenAPI schema and class-agent async invoke path
271+
([`5be8f1c`](https://github.com/UnicoLab/agentomatic/commit/5be8f1cf5c8f33581157764a7857bcd945866939))
272+
273+
Move StudioResumeRequest to module scope so /openapi.json stays complete; route async tasks through
274+
invoke_registered_agent; prefer main:app on run; flatten invoke context for input_to_state;
275+
document correct /api/v1 paths.
276+
277+
Co-authored-by: Cursor <cursoragent@cursor.com>
278+
226279
### Continuous Integration
227280

228281
- Fix lint, typing, and commit message display
229-
([`718b031`](https://github.com/UnicoLab/agentomatic/commit/718b03156b4cf1564b951ced58d0a1cc8a1dc1f9))
282+
([`2e8a90a`](https://github.com/UnicoLab/agentomatic/commit/2e8a90a41a89cbc0dac63001aa766a408c241404))
230283

231284
Reformat files that failed ruff format check; narrow OptimizeInvokeResponse field types for mypy.
232285
Add a commit-msg hook that strips ANSI/bat line numbers when cat is aliased to bat, and document
233286
using /bin/cat in HEREDOCs.
234287

235288
Co-authored-by: Cursor <cursoragent@cursor.com>
236289

290+
### Documentation
291+
292+
- **cursor**: Add Agentomatic agent primer skill
293+
([`96bde0d`](https://github.com/UnicoLab/agentomatic/commit/96bde0d66685d749e585b1c53b8eb4bd867660ba))
294+
295+
Ship the generated Cursor skill so agents working in this repo have install/dev/deploy guidance for
296+
the Agentomatic platform.
297+
298+
Co-authored-by: Cursor <cursoragent@cursor.com>
299+
237300
### Features
238301

239302
- **plugins**: Add reload API and full invoke context passthrough
240-
([`a42a7bf`](https://github.com/UnicoLab/agentomatic/commit/a42a7bf3a55bf1ced2cadbf709c4b8ec1aaf17c1))
303+
([`656c3d4`](https://github.com/UnicoLab/agentomatic/commit/656c3d4df0ec7149cc611e2ef5d60f89d9a92a99))
241304

242305
Expose POST /api/v1/plugins[/name]/reload so platforms can refresh in-memory weights after artifact
243306
promotion, and preserve the entire client payload (rich context + top-level extras) through to
244307
input_to_state.
245308

246309
Co-authored-by: Cursor <cursoragent@cursor.com>
247310

311+
- **providers**: Support thinking/reasoning on modern OpenAI-compatible LLMs
312+
([`13fe5ca`](https://github.com/UnicoLab/agentomatic/commit/13fe5ca467a71101f414e09a91ec477707f5e111))
313+
314+
Normalize Qwen/Gemma-style thinking tags and reasoning fields so agents get answer-only content by
315+
default, while stack extra: knobs (enable_thinking, chat_template_kwargs, response_format) pass
316+
through to oMLX without breaking other providers.
317+
318+
Co-authored-by: Cursor <cursoragent@cursor.com>
319+
320+
- **stack**: Make stacks drive fit/eval and async graph invoke
321+
([`6d33df4`](https://github.com/UnicoLab/agentomatic/commit/6d33df41637be52aeb81d62ca82dcc06803b2e73))
322+
323+
Load .env by default from stacks, resolve agent llm_config roles, forward metadata.invoke in
324+
AgentRunner, prefer data-level splits in PromptFitterBridge, and await async nodes in sync invoke
325+
so compile/fit/evaluate work with class agents.
326+
327+
Co-authored-by: Cursor <cursoragent@cursor.com>
328+
248329

249-
## v1.4.0 (2026-07-16)
330+
## v1.4.0 (2026-07-21)
250331

251332
### Features
252333

253334
- **connections**: Support arbitrary custom DB/vector clients + docs
254-
([`1ec9d0a`](https://github.com/UnicoLab/agentomatic/commit/1ec9d0a21d36590a0d27c3151966585ea36b168c))
335+
([`ede1460`](https://github.com/UnicoLab/agentomatic/commit/ede1460977bf5efbca04d66e8b23fd57af49372a))
255336

256337
Make the connection abstraction robustly accept ANY custom Python client (async or sync SDK,
257338
graph/time-series DB, in-house package) with correct lifecycle, and document the setup end-to-end.
@@ -287,12 +368,106 @@ Part of the unreleased 1.3.0 (no version bump). Provider-agnostic: no first-part
287368
Co-authored-by: Cursor <cursoragent@cursor.com>
288369

289370

290-
## v1.3.0 (2026-07-15)
371+
## v1.3.0 (2026-07-21)
372+
373+
### Bug Fixes
374+
375+
- **deploy**: Make scaffolded main.py app fully-featured for uvicorn parity with agentomatic run
376+
([`8eba7c0`](https://github.com/UnicoLab/agentomatic/commit/8eba7c03c62a38d231bc92044dda20e2b442aa7a))
377+
378+
- main.py now builds an env-driven, fully-featured module-level `app` so a deployed container
379+
(`uvicorn main:app`) serves the same surface as `agentomatic run`: discovers all component dirs
380+
and enables Studio, docs, health, and metrics by default - feature flags read from AGENTOMATIC_*
381+
env vars (ENABLE_STUDIO, ENABLE_METRICS, ENABLE_AUTH, ENABLE_JWT, REQUIRE_AUTH -> implies JWT +
382+
zero-trust, ENABLE_CONTROL_PLANE, ENABLE_RATE_LIMIT, TITLE, LOG_LEVEL) so the same file works in
383+
dev and in the container without code edits - .env.example documents the deploy feature flags -
384+
deployment guide + 1.2.1 changelog (docs/changelog.md + CHANGELOG.md) note the uvicorn main:app
385+
parity - new parity tests: build the scaffolded app and assert run-equivalent routes (/health,
386+
/readiness, /docs, /openapi.json, /, /studio); env flags drive features (studio toggle + title)
387+
ruff/format/mypy/pytest(1187)/mkdocs --strict/uv build all green.
388+
389+
Co-authored-by: Cursor <cursoragent@cursor.com>
390+
391+
- **platform**: Wire class agents through input_to_state on REST + Studio; harden deploy, auth, and
392+
run --reload for 1.2.1
393+
([`8bdef79`](https://github.com/UnicoLab/agentomatic/commit/8bdef79f8b81e2eb7a48a8f235df2c75877a328d))
394+
395+
- Class agents work on every server path (REST invoke/chat/invoke/stream/ optimize/A2A/approve +
396+
Studio streaming): route through invoke_registered_agent / input_to_state instead of
397+
graph.ainvoke(dict), so dataclass-state agents no longer 500 - agentomatic deploy builds in real
398+
projects: Dockerfile installs agentomatic[all]==1.2.1 from PyPI, copies project dirs, runs uvicorn
399+
main:app; init --project emits a pinned requirements.txt - agentomatic run --reload / workers>1
400+
uses a factory import string instead of exiting with code 1 (programmatic platforms degrade
401+
gracefully) - --require-auth-globally refuses to start without JWKS/API-key auth instead of
402+
accepting forged/unsigned JWTs; expiry is always verified - AGENTOMATIC_AGENTS env var scopes
403+
agent discovery (deploy stubs isolate a single agent per replica) - honest plugin eval (real
404+
metric or clear failure); provider-agnostic deepagent model; endpoint health_check; optimize
405+
status observable via agent._last_optimize_status - version 1.2.1 + changelog updates; new tests
406+
(class agent server paths, deploy CLI, run --reload factory, allow-list, scaffold, and more)
407+
mypy/ruff/pytest(1183)/mkdocs/build all green.
408+
409+
Co-authored-by: Cursor <cursoragent@cursor.com>
410+
411+
- **security**: Disable CORS credentials with wildcard origins; correct deploy docstring
412+
([`8a3324f`](https://github.com/UnicoLab/agentomatic/commit/8a3324f8d4f216074f7183cd8e9d39cd113a73a7))
413+
414+
- CORS: when cors_origins == ["*"], set allow_credentials=False (with a one-time warning) so the
415+
platform no longer reflects credentialed cross-origin requests from any site. Explicit
416+
cors_origins=[...] keeps allow_credentials=True (backward-compatible). - deploy: correct the
417+
module docstring to state the generated image launches the project via `uvicorn main:app`
418+
(matching the rendered Dockerfile CMD), not the stale `agentomatic run` entrypoint. - docs: 1.2.1
419+
changelog bullet for the CORS hardening (docs/changelog.md + CHANGELOG.md); add tests asserting
420+
wildcard -> credentials disabled and explicit origins -> credentials enabled.
421+
422+
Co-authored-by: Cursor <cursoragent@cursor.com>
291423

292424
### Features
293425

426+
- **cli**: Add agents-guide command; agent knowledge + docs + 1.3.0 release prep
427+
([`a37482c`](https://github.com/UnicoLab/agentomatic/commit/a37482cee2abacbb55222a3e9eb253b83c0c303c))
428+
429+
- add `agentomatic agents-guide` command: prints an Agentomatic primer or writes it into a project
430+
via `--write AGENTS.md|CLAUDE.md|.cursor/skills/agentomatic/SKILL.md` (refuses to overwrite
431+
without `--force`). Content is a single source of truth in `agentomatic.cli.agent_guide` so
432+
CLI/docs/agent files stay in sync - refresh agent knowledge: regenerate repo-root CLAUDE.md from
433+
the primer; extend `.agents/AGENTS.md` with a 1.3.0 capabilities section (class-agent server
434+
wiring, deploy parity + profiles, env toggles, security defaults, provider-agnostic principle,
435+
optimization, agents-guide). (The user-level skill at ~/.cursor/skills/agentomatic/SKILL.md was
436+
also refreshed in place — outside this repo, not committed here.) - docs: add deploy +
437+
agents-guide sections and profile table to docs/cli/commands.md; update command listing - release
438+
prep (1.3.0): bump pyproject + _version + uv.lock to 1.3.0 (matches semantic-release's
439+
version_toml/version_variables source of truth); reorganize changelogs into a 1.3.0 feature
440+
section (deploy profiles, env-driven main.py parity, agents-guide) while keeping genuine patch
441+
fixes under 1.2.1 - tests: 10 new tests for the primer source + agents-guide CLI (print, --write,
442+
--force, refuse-without-force, all targets, unknown target/skill frontmatter)
443+
ruff/format/mypy/pytest(1210)/mkdocs --strict/uv build(1.3.0 wheel w/ py.typed + studio static +
444+
templates) all green.
445+
446+
Co-authored-by: Cursor <cursoragent@cursor.com>
447+
448+
- **deploy**: Add full/minimal deploy profiles (swagger always on)
449+
([`a4964a5`](https://github.com/UnicoLab/agentomatic/commit/a4964a59235a00fcd5b6063910f441d5d4ac528f))
450+
451+
- `agentomatic deploy --profile full|minimal` (+ `--minimal` shorthand). full (default) runs
452+
everything; minimal is production-lean: disables the Studio debug UI and quiets logging while
453+
keeping the core REST API, health/readiness, metrics, and auth - Swagger/OpenAPI (`/docs`,
454+
`/redoc`, `/openapi.json`) is NEVER gated by the profile — always available in both, per explicit
455+
requirement - profiles drive the SAME env-driven main.py via baked-in AGENTOMATIC_* env vars
456+
(AGENTOMATIC_ENABLE_STUDIO=0, AGENTOMATIC_LOG_LEVEL=WARNING) in the rendered
457+
Dockerfile/distroless/compose — one code path, not two images - kept `agentomatic[all]` for
458+
minimal so no required functionality is dropped (Studio just isn't mounted); documented the choice
459+
- deployment guide gets a profile comparison table + "Swagger always on" warning; 1.2.1 changelog
460+
bullets (docs/changelog.md + CHANGELOG.md) - tests: profile_env helper + unknown-profile
461+
ValueError; minimal Dockerfile/distroless/compose disable Studio but keep docs; generate_deploy +
462+
CLI --minimal/--profile; scaffolded app under minimal env keeps
463+
/docs+/redoc+/openapi.json+/health+/api/v1/agents, drops /studio; a built platform with minimal
464+
settings exposes /api/v1/<agent>/invoke + Swagger, no /studio ruff/format/mypy/pytest(1200)/mkdocs
465+
--strict/uv build all green.
466+
467+
Co-authored-by: Cursor <cursoragent@cursor.com>
468+
294469
- **deploy**: Production deploy profiles, uvicorn parity, and agents-guide (1.3.0)
295-
([`bad9cea`](https://github.com/UnicoLab/agentomatic/commit/bad9cea7bb38fa5c050302ca9083caf45eb4bee2))
470+
([`6f77046`](https://github.com/UnicoLab/agentomatic/commit/6f77046a62d2ca9233dd3dfaf8c21cbaf138d62a))
296471

297472
This is the 1.3.0 release-driving commit. It carries a Conventional Commit subject that Python
298473
Semantic Release can parse; the preceding commits in v1.2.0..HEAD were committed with

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "agentomatic"
3-
version = "1.6.0"
3+
version = "1.7.0"
44
description = "Drop agents, not code — zero-code multi-agent API platform framework"
55
readme = "README.md"
66
license = {text = "MIT"}

src/agentomatic/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
from __future__ import annotations
44

5-
__version__ = "1.6.0"
5+
__version__ = "1.7.0"

0 commit comments

Comments
 (0)