diff --git a/Makefile b/Makefile index 12cf6d5..e8b7643 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ venv: .venv .venv: @echo "(If 'uv' fails with 'No such file or directory', try 'make install-uv')" - uv sync -q --extra dev + uv sync -q .venv/bin/black --version @echo "(If 'pyright' fails with 'error while loading shared libraries: libatomic.so.1:', try 'make install-libatomic')" .venv/bin/pyright --version @@ -67,7 +67,7 @@ venv: .venv .PHONY: sync sync: - uv sync --extra dev + uv sync .PHONY: install-uv install-uv: diff --git a/make.bat b/make.bat index 1e0241f..c1bd851 100644 --- a/make.bat +++ b/make.bat @@ -57,7 +57,7 @@ goto end :venv echo Creating virtual environment... -uv sync -q --extra dev +uv sync -q .venv\Scripts\python --version .venv\Scripts\black --version .venv\Scripts\pyright --version @@ -65,7 +65,7 @@ uv sync -q --extra dev goto end :sync -uv sync --extra dev +uv sync goto end :install-uv diff --git a/pyproject.toml b/pyproject.toml index db613fc..848a497 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,21 +44,10 @@ dependencies = [ ] [project.optional-dependencies] -dev = [ - "azure-mgmt-authorization>=4.0.0", - "azure-mgmt-keyvault>=12.1.1", - "coverage[toml]>=7.9.1", - "google-api-python-client>=2.184.0", - "google-auth-httplib2>=0.2.0", - "google-auth-oauthlib>=1.2.2", - "isort>=7.0.0", +# Needed to enable --logfire flag to tools/query.py +logfire = [ "logfire>=4.1.0", "opentelemetry-instrumentation-httpx>=0.57b0", - "pydantic-ai-slim[openai]>=1.39.0", - "pyright>=1.1.408", # 407 has a regression - "pytest>=8.3.5", - "pytest-asyncio>=0.26.0", - "pytest-mock>=3.14.0", ] [project.urls] @@ -89,6 +78,18 @@ known_local_folder = ["conftest"] [dependency-groups] dev = [ - "isort>=7.0.0", - "pyright>=1.1.408", + "azure-mgmt-authorization>=4.0.0", + "azure-mgmt-keyvault>=12.1.1", + "coverage[toml]>=7.9.1", + "google-api-python-client>=2.184.0", + "google-auth-httplib2>=0.2.0", + "google-auth-oauthlib>=1.2.2", + "isort>=7.0.0", + "logfire>=4.1.0", # So 'make check' passes + "opentelemetry-instrumentation-httpx>=0.57b0", + "pydantic-ai-slim[openai]>=1.39.0", + "pyright>=1.1.408", # 407 has a regression + "pytest>=8.3.5", + "pytest-asyncio>=0.26.0", + "pytest-mock>=3.14.0", ] diff --git a/tools/query.py b/tools/query.py index 83e4339..413915c 100644 --- a/tools/query.py +++ b/tools/query.py @@ -1134,8 +1134,10 @@ async def load_podcast_index( def load_index_file[T: Mapping[str, typing.Any]]( - file: str, selector: str, cls: type[T], verbose: bool = True + file: str | None, selector: str, cls: type[T], verbose: bool = True ) -> tuple[list[T], dict[str, T]]: + if file is None: + return [], {} # If this crashes, the file is malformed -- go figure it out. try: with open(file) as f: diff --git a/uv.lock b/uv.lock index 1318bd5..662fae4 100644 --- a/uv.lock +++ b/uv.lock @@ -1822,6 +1822,12 @@ dependencies = [ ] [package.optional-dependencies] +logfire = [ + { name = "logfire" }, + { name = "opentelemetry-instrumentation-httpx" }, +] + +[package.dev-dependencies] dev = [ { name = "azure-mgmt-authorization" }, { name = "azure-mgmt-keyvault" }, @@ -1839,47 +1845,41 @@ dev = [ { name = "pytest-mock" }, ] -[package.dev-dependencies] -dev = [ - { name = "isort" }, - { name = "pyright" }, -] - [package.metadata] requires-dist = [ { name = "azure-identity", specifier = ">=1.22.0" }, - { name = "azure-mgmt-authorization", marker = "extra == 'dev'", specifier = ">=4.0.0" }, - { name = "azure-mgmt-keyvault", marker = "extra == 'dev'", specifier = ">=12.1.1" }, { name = "black", specifier = ">=25.12.0" }, { name = "colorama", specifier = ">=0.4.6" }, - { name = "coverage", extras = ["toml"], marker = "extra == 'dev'", specifier = ">=7.9.1" }, - { name = "google-api-python-client", marker = "extra == 'dev'", specifier = ">=2.184.0" }, - { name = "google-auth-httplib2", marker = "extra == 'dev'", specifier = ">=0.2.0" }, - { name = "google-auth-oauthlib", marker = "extra == 'dev'", specifier = ">=1.2.2" }, - { name = "isort", marker = "extra == 'dev'", specifier = ">=7.0.0" }, - { name = "logfire", marker = "extra == 'dev'", specifier = ">=4.1.0" }, + { name = "logfire", marker = "extra == 'logfire'", specifier = ">=4.1.0" }, { name = "mcp", extras = ["cli"], specifier = ">=1.12.1" }, { name = "numpy", specifier = ">=2.2.6" }, { name = "openai", specifier = ">=1.81.0" }, - { name = "opentelemetry-instrumentation-httpx", marker = "extra == 'dev'", specifier = ">=0.57b0" }, + { name = "opentelemetry-instrumentation-httpx", marker = "extra == 'logfire'", specifier = ">=0.57b0" }, { name = "pydantic", specifier = ">=2.11.4" }, - { name = "pydantic-ai-slim", extras = ["openai"], marker = "extra == 'dev'", specifier = ">=1.39.0" }, { name = "pyreadline3", marker = "sys_platform == 'win32'", specifier = ">=3.5.4" }, - { name = "pyright", marker = "extra == 'dev'", specifier = ">=1.1.408" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.5" }, - { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.26.0" }, - { name = "pytest-mock", marker = "extra == 'dev'", specifier = ">=3.14.0" }, { name = "python-dotenv", specifier = ">=1.1.0" }, { name = "tiktoken", specifier = ">=0.12.0" }, { name = "typechat", specifier = ">=0.0.4" }, { name = "webvtt-py", specifier = ">=0.5.1" }, ] -provides-extras = ["dev"] +provides-extras = ["logfire"] [package.metadata.requires-dev] dev = [ + { name = "azure-mgmt-authorization", specifier = ">=4.0.0" }, + { name = "azure-mgmt-keyvault", specifier = ">=12.1.1" }, + { name = "coverage", extras = ["toml"], specifier = ">=7.9.1" }, + { name = "google-api-python-client", specifier = ">=2.184.0" }, + { name = "google-auth-httplib2", specifier = ">=0.2.0" }, + { name = "google-auth-oauthlib", specifier = ">=1.2.2" }, { name = "isort", specifier = ">=7.0.0" }, + { name = "logfire", specifier = ">=4.1.0" }, + { name = "opentelemetry-instrumentation-httpx", specifier = ">=0.57b0" }, + { name = "pydantic-ai-slim", extras = ["openai"], specifier = ">=1.39.0" }, { name = "pyright", specifier = ">=1.1.408" }, + { name = "pytest", specifier = ">=8.3.5" }, + { name = "pytest-asyncio", specifier = ">=0.26.0" }, + { name = "pytest-mock", specifier = ">=3.14.0" }, ] [[package]]