diff --git a/.fernignore b/.fernignore index 950b552..b7f362c 100644 --- a/.fernignore +++ b/.fernignore @@ -2,3 +2,6 @@ src/agentmail/core/query_encoder.py tests/utils/test_query_encoding.py + +# Preserve the Python 3.10 CI floor across generated releases. +.github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8bca429..74af457 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: - name: Set up python uses: actions/setup-python@v4 with: - python-version: "3.9" + python-version: "3.10" - name: Bootstrap poetry run: | curl -sSL https://install.python-poetry.org | python - -y --version 1.5.1 @@ -30,7 +30,7 @@ jobs: - name: Set up python uses: actions/setup-python@v4 with: - python-version: "3.9" + python-version: "3.10" - name: Bootstrap poetry run: | curl -sSL https://install.python-poetry.org | python - -y --version 1.5.1 @@ -50,7 +50,7 @@ jobs: - name: Set up python uses: actions/setup-python@v4 with: - python-version: "3.9" + python-version: "3.10" - name: Bootstrap poetry run: | curl -sSL https://install.python-poetry.org | python - -y --version 1.5.1 diff --git a/README.md b/README.md index 0240bc0..bf40680 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,9 @@ The Agentmail Python library provides convenient access to the Agentmail APIs fr ## Installation +Requires Python 3.10 or newer. The minimum version supports the patched AnyIO +TLS hostname verification used by the asynchronous HTTP client. + ```sh pip install agentmail ``` diff --git a/poetry.lock b/poetry.lock index 2e24804..ea4dd43 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "annotated-types" @@ -11,30 +11,24 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" -version = "4.5.2" -description = "High level compatibility layer for multiple asynchronous event loop implementations" +version = "4.14.2" +description = "High-level concurrency and networking framework on top of asyncio or Trio" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" files = [ - {file = "anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f"}, - {file = "anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b"}, + {file = "anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494"}, + {file = "anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] -trio = ["trio (>=0.26.1)"] +trio = ["trio (>=0.32.0)"] [[package]] name = "certifi" @@ -504,17 +498,6 @@ files = [ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - [[package]] name = "tomli" version = "2.5.0" @@ -708,5 +691,5 @@ files = [ [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "997b22d5b3fdb1c542b2547ad8fbdc255dfb656b6c50d082140f482620f4e88a" +python-versions = "^3.10" +content-hash = "8a564fcdba39bc13100bab926cfcc9293f81512f5cfb6e180b70c97382dcdcbb" diff --git a/pyproject.toml b/pyproject.toml index 7991e70..3e26c07 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,8 +14,6 @@ classifiers = [ "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -39,8 +37,10 @@ packages = [ Repository = 'https://github.com/agentmail-to/agentmail-python' [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" httpx = ">=0.21.2" +# Require the TLS hostname-verification fix for SDK consumers, not only the lockfile. +anyio = ">=4.14.2" pydantic = ">= 1.9.2" pydantic-core = ">=2.18.2" typing_extensions = ">= 4.0.0" diff --git a/requirements.txt b/requirements.txt index 4c0f643..9f1a94f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ httpx>=0.21.2 +anyio>=4.14.2 pydantic>= 1.9.2 pydantic-core>=2.18.2 typing_extensions>= 4.0.0