Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ on:
branches: main
pull_request:
branches: main
env:
FORCE_COLOR: 1
jobs:
tests:
name: Run Tests
Expand Down
4 changes: 4 additions & 0 deletions packages/amgi-aiobotocore/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ entry-points.amgi_server.amgi-aiobotocore-sqs = "amgi_aiobotocore.sqs:_run_cli"

[dependency-groups]
dev = [
"pytest>=8.4.1",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
"test-utils",
"testcontainers[localstack]>=4.13.0",
]
Expand Down
4 changes: 4 additions & 0 deletions packages/amgi-aiokafka/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ entry-points.amgi_server.amgi-aiokafka = "amgi_aiokafka:_run_cli"

[dependency-groups]
dev = [
"pytest>=8.4.1",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
"test-utils",
"testcontainers[kafka]>=4.13.0",
]
Expand Down
20 changes: 19 additions & 1 deletion packages/amgi-common/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,27 @@ classifiers = [
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [ ]
dependencies = [
"amgi-types==0.25.1",
"typing-extensions>=4.15.0; python_full_version<'3.13'",
]

urls.Changelog = "https://github.com/asyncfast/amgi/blob/main/CHANGELOG.md"
urls.Homepage = "https://github.com/asyncfast/amgi/tree/main/packages/amgi-common"
urls.Issues = "https://github.com/asyncfast/amgi/issues/"
urls.Repository = "https://github.com/asyncfast/amgi/"

[dependency-groups]
dev = [
"pytest>=8.4.1",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
"test-utils",
]

[tool.uv.sources.test-utils]
workspace = true

[tool.uv.sources.amgi-types]
workspace = true
7 changes: 6 additions & 1 deletion packages/amgi-common/src/amgi_common/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import asyncio
import logging
import sys
from asyncio import AbstractEventLoop
from asyncio import Event
from asyncio import Future
Expand Down Expand Up @@ -30,7 +31,11 @@
from amgi_types import LifespanScope
from amgi_types import LifespanShutdownEvent
from amgi_types import LifespanStartupEvent
from typing_extensions import ParamSpec

if sys.version_info >= (3, 13):
from typing import ParamSpec
else:
from typing_extensions import ParamSpec

P = ParamSpec("P")
T = TypeVar("T")
Expand Down
4 changes: 4 additions & 0 deletions packages/amgi-paho-mqtt/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ entry-points.amgi_server.amgi-paho-mqtt = "amgi_paho_mqtt:run"

[dependency-groups]
dev = [
"pytest>=8.4.1",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
"test-utils",
"testcontainers[mqtt]>=4.13.0",
]
Expand Down
4 changes: 4 additions & 0 deletions packages/amgi-redis/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ entry-points.amgi_server.amgi-redis = "amgi_redis:_run_cli"

[dependency-groups]
dev = [
"pytest>=8.4.1",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
"test-utils",
"testcontainers[redis]>=4.13.0",
]
Expand Down
10 changes: 9 additions & 1 deletion packages/amgi-sqs-event-source-mapping/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,19 @@ classifiers = [
dependencies = [
"amgi-common==0.25.1",
"amgi-types==0.25.1",
"typing-extensions>=4.15.0; python_full_version<'3.11'",
]

optional-dependencies.boto3 = [
"boto3>=1.40.70",
]

[dependency-groups]
dev = [
"boto3>=1.40.70",
"pytest>=8.4.1",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
"test-utils",
"testcontainers[localstack]>=4.13.0",
]
Expand Down
4 changes: 3 additions & 1 deletion packages/amgi-types/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ classifiers = [
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [ ]
dependencies = [
"typing-extensions>=4.15.0; python_full_version<'3.11'",
]

urls.Changelog = "https://github.com/asyncfast/amgi/blob/main/CHANGELOG.md"
urls.Homepage = "https://github.com/asyncfast/amgi/tree/main/packages/amgi-types"
Expand Down
2 changes: 2 additions & 0 deletions packages/asyncfast/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ scripts.asyncfast = "asyncfast.cli:main"
dev = [
"pytest>=8.4.1",
"pytest-asyncio>=1.1",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
]

[tool.uv.sources.amgi-types]
Expand Down
2 changes: 0 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ dev = [
"mypy>=1.17.1",
"myst-parser>=3.0.1",
"pre-commit-uv>=4.1.4",
"pytest-cov>=7.0.0",
"pytest-timeout>=2.4.0",
"sphinx>=7.4.7",
"sphinx-copybutton>=0.5.2",
"sphinx-inline-tabs>=2023.4.21",
Expand Down
108 changes: 101 additions & 7 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
requires =
tox>=4.2
env_list =
py313
py312
py311
py310
clean
pre-commit
py3{10-13}-{amgi-aiobotocore, amgi-aiokafka, amgi-common, amgi-paho-mqtt, amgi-redis, amgi-sqs-event-source-mapping, asyncfast}
py3{10-13}-{amgi-aiobotocore, amgi-aiokafka, amgi-common, amgi-paho-mqtt, amgi-redis, amgi-sqs-event-source-mapping, amgi-types, asyncfast, asyncfast-cli}-import

[testenv]
runner = uv-venv-lock-runner
Expand All @@ -26,15 +24,111 @@ depends =
uv_sync_flags = --all-packages

[testenv:clean]
runner = uv-venv-lock-runner
description = clean coverage report
commands =
coverage erase
uv_sync_flags = --all-packages

[testenv:pre-commit]
runner = uv-venv-lock-runner
description = run pre-commit
commands =
pre-commit run --all-files --show-diff-on-failure
uv_sync_flags = --all-packages

[testenv:py3{10-13}-amgi-aiobotocore]
commands =
{[testenv]commands} packages/amgi-aiobotocore
uv_sync_flags = --package=amgi-aiobotocore

[testenv:py3{10-13}-amgi-aiokafka]
commands =
{[testenv]commands} packages/amgi-aiokafka
uv_sync_flags = --package=amgi-aiokafka

[testenv:py3{10-13}-amgi-common]
commands =
{[testenv]commands} packages/amgi-common
uv_sync_flags = --package=amgi-common

[testenv:py3{10-13}-amgi-paho-mqtt]
commands =
{[testenv]commands} packages/amgi-paho-mqtt
uv_sync_flags = --package=amgi-paho-mqtt

[testenv:py3{10-13}-amgi-redis]
commands =
{[testenv]commands} packages/amgi-redis
uv_sync_flags = --package=amgi-redis

[testenv:py3{10-13}-amgi-sqs-event-source-mapping]
commands =
{[testenv]commands} packages/amgi-sqs-event-source-mapping
uv_sync_flags = --package=amgi-sqs-event-source-mapping

[testenv:py3{10-13}-asyncfast]
commands =
{[testenv]commands} packages/asyncfast
uv_sync_flags = --package=asyncfast

[testenv:py3{10-13}-amgi-aiobotocore-import]
commands =
python -c "import amgi_aiobotocore"
uv_sync_flags =
--package=amgi-aiobotocore
--no-dev

[testenv:py3{10-13}-amgi-aiokafka-import]
commands =
python -c "import amgi_aiokafka"
uv_sync_flags =
--package=amgi-aiokafka
--no-dev

[testenv:py3{10-13}-amgi-common-import]
commands =
python -c "import amgi_common"
uv_sync_flags =
--package=amgi-common
--no-dev

[testenv:py3{10-13}-amgi-paho-mqtt-import]
commands =
python -c "import amgi_paho_mqtt"
uv_sync_flags =
--package=amgi-paho-mqtt
--no-dev

[testenv:py3{10-13}-amgi-redis-import]
commands =
python -c "import amgi_redis"
uv_sync_flags =
--package=amgi-redis
--no-dev

[testenv:py3{10-13}-amgi-sqs-event-source-mapping-import]
commands =
python -c "import amgi_sqs_event_source_mapping"
uv_sync_flags =
--package=amgi-sqs-event-source-mapping
--no-dev
--extra=boto3

[testenv:py3{10-13}-amgi-types-import]
commands =
python -c "import amgi_types"
uv_sync_flags =
--package=amgi-types
--no-dev

[testenv:py3{10-13}-asyncfast-import]
commands =
python -c "import asyncfast"
uv_sync_flags =
--package=asyncfast
--no-dev

[testenv:py3{10-13}-asyncfast-cli-import]
commands =
python -c "import asyncfast_cli"
uv_sync_flags =
--package=asyncfast-cli
--no-dev
Loading
Loading