From fa2d47ca664a026a4b819f1a534628517d924eab Mon Sep 17 00:00:00 2001 From: Orfeo Terkuci Date: Tue, 24 Mar 2026 20:03:51 +0100 Subject: [PATCH] Refactor project structure: separate backend dependencies into pyproject.toml --- backend/pyproject.toml | 27 ++++++++++ pyproject.toml | 26 ++------- uv.lock | 118 +++++++++++++++++++++++------------------ 3 files changed, 99 insertions(+), 72 deletions(-) create mode 100644 backend/pyproject.toml diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 0000000..ce4ccc1 --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,27 @@ +[project] +name = "backend" +version = "0.9.5" +requires-python = ">=3.10" +dependencies = [ + "apscheduler==3.10.3", + "cachetools==5.5.2", + "cloudscraper==1.2.71", + "fastapi==0.115.12", + "feedparser==6.0.10", + "httpx==0.28.1", + "playwright==1.50.0", + "playwright-stealth==1.0.6", + "pydantic==2.11.1", + "pydantic-settings==2.8.1", + "pystac-client==0.8.6", + "python-dotenv==1.0.1", + "requests==2.31.0", + "reverse-geocoder==1.5.1", + "sgp4==2.23", + "slowapi==0.1.9", + "uvicorn==0.34.0", + "yfinance==0.2.54", +] + +[dependency-groups] +test = ["pytest>=8.3.4", "pytest-asyncio==0.25.0"] diff --git a/pyproject.toml b/pyproject.toml index 463d206..f588c03 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,26 +3,10 @@ name = "shadowbroker" version = "0.9.5" readme = "README.md" requires-python = ">=3.10" -dependencies = [ - "apscheduler==3.10.3", - "cachetools==5.5.2", - "cloudscraper==1.2.71", - "fastapi==0.115.12", - "feedparser==6.0.10", - "httpx==0.28.1", - "playwright==1.50.0", - "playwright-stealth==1.0.6", - "pydantic==2.11.1", - "pydantic-settings==2.8.1", - "pystac-client==0.8.6", - "python-dotenv==1.0.1", - "requests==2.31.0", - "reverse-geocoder==1.5.1", - "sgp4==2.23", - "slowapi==0.1.9", - "uvicorn==0.34.0", - "yfinance==0.2.54", -] +dependencies = [] [dependency-groups] -test = ["pytest>=8.3.4", "pytest-asyncio==0.25.0"] +test = [] + +[tool.uv.workspace] +members = ["backend"] diff --git a/uv.lock b/uv.lock index 74532d6..3b0471e 100644 --- a/uv.lock +++ b/uv.lock @@ -11,6 +11,12 @@ resolution-markers = [ "python_full_version < '3.11'", ] +[manifest] +members = [ + "backend", + "shadowbroker", +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -57,6 +63,65 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, ] +[[package]] +name = "backend" +version = "0.9.5" +source = { virtual = "backend" } +dependencies = [ + { name = "apscheduler" }, + { name = "cachetools" }, + { name = "cloudscraper" }, + { name = "fastapi" }, + { name = "feedparser" }, + { name = "httpx" }, + { name = "playwright" }, + { name = "playwright-stealth" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pystac-client" }, + { name = "python-dotenv" }, + { name = "requests" }, + { name = "reverse-geocoder" }, + { name = "sgp4" }, + { name = "slowapi" }, + { name = "uvicorn" }, + { name = "yfinance" }, +] + +[package.dev-dependencies] +test = [ + { name = "pytest" }, + { name = "pytest-asyncio" }, +] + +[package.metadata] +requires-dist = [ + { name = "apscheduler", specifier = "==3.10.3" }, + { name = "cachetools", specifier = "==5.5.2" }, + { name = "cloudscraper", specifier = "==1.2.71" }, + { name = "fastapi", specifier = "==0.115.12" }, + { name = "feedparser", specifier = "==6.0.10" }, + { name = "httpx", specifier = "==0.28.1" }, + { name = "playwright", specifier = "==1.50.0" }, + { name = "playwright-stealth", specifier = "==1.0.6" }, + { name = "pydantic", specifier = "==2.11.1" }, + { name = "pydantic-settings", specifier = "==2.8.1" }, + { name = "pystac-client", specifier = "==0.8.6" }, + { name = "python-dotenv", specifier = "==1.0.1" }, + { name = "requests", specifier = "==2.31.0" }, + { name = "reverse-geocoder", specifier = "==1.5.1" }, + { name = "sgp4", specifier = "==2.23" }, + { name = "slowapi", specifier = "==0.1.9" }, + { name = "uvicorn", specifier = "==0.34.0" }, + { name = "yfinance", specifier = "==0.2.54" }, +] + +[package.metadata.requires-dev] +test = [ + { name = "pytest", specifier = ">=8.3.4" }, + { name = "pytest-asyncio", specifier = "==0.25.0" }, +] + [[package]] name = "beautifulsoup4" version = "4.13.3" @@ -245,7 +310,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -1397,60 +1462,11 @@ wheels = [ name = "shadowbroker" version = "0.9.5" source = { virtual = "." } -dependencies = [ - { name = "apscheduler" }, - { name = "cachetools" }, - { name = "cloudscraper" }, - { name = "fastapi" }, - { name = "feedparser" }, - { name = "httpx" }, - { name = "playwright" }, - { name = "playwright-stealth" }, - { name = "pydantic" }, - { name = "pydantic-settings" }, - { name = "pystac-client" }, - { name = "python-dotenv" }, - { name = "requests" }, - { name = "reverse-geocoder" }, - { name = "sgp4" }, - { name = "slowapi" }, - { name = "uvicorn" }, - { name = "yfinance" }, -] - -[package.dev-dependencies] -test = [ - { name = "pytest" }, - { name = "pytest-asyncio" }, -] [package.metadata] -requires-dist = [ - { name = "apscheduler", specifier = "==3.10.3" }, - { name = "cachetools", specifier = "==5.5.2" }, - { name = "cloudscraper", specifier = "==1.2.71" }, - { name = "fastapi", specifier = "==0.115.12" }, - { name = "feedparser", specifier = "==6.0.10" }, - { name = "httpx", specifier = "==0.28.1" }, - { name = "playwright", specifier = "==1.50.0" }, - { name = "playwright-stealth", specifier = "==1.0.6" }, - { name = "pydantic", specifier = "==2.11.1" }, - { name = "pydantic-settings", specifier = "==2.8.1" }, - { name = "pystac-client", specifier = "==0.8.6" }, - { name = "python-dotenv", specifier = "==1.0.1" }, - { name = "requests", specifier = "==2.31.0" }, - { name = "reverse-geocoder", specifier = "==1.5.1" }, - { name = "sgp4", specifier = "==2.23" }, - { name = "slowapi", specifier = "==0.1.9" }, - { name = "uvicorn", specifier = "==0.34.0" }, - { name = "yfinance", specifier = "==0.2.54" }, -] [package.metadata.requires-dev] -test = [ - { name = "pytest", specifier = ">=8.3.4" }, - { name = "pytest-asyncio", specifier = "==0.25.0" }, -] +test = [] [[package]] name = "six"