cellenium 0.2.1__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. {cellenium-0.2.1 → cellenium-0.3.2}/.env.example +2 -1
  2. {cellenium-0.2.1 → cellenium-0.3.2}/PKG-INFO +2 -2
  3. {cellenium-0.2.1 → cellenium-0.3.2}/pyproject.toml +2 -2
  4. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/crew.py +1 -1
  5. cellenium-0.3.2/src/cellenium/api/vision.py +67 -0
  6. cellenium-0.3.2/src/cellenium/functions/__init__.py +0 -0
  7. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/settings.py +8 -8
  8. cellenium-0.3.2/tests/test_vision_api.py +68 -0
  9. {cellenium-0.2.1 → cellenium-0.3.2}/uv.lock +30 -61
  10. cellenium-0.2.1/main.py +0 -6
  11. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/bin/checklist.js +0 -0
  12. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/artifact.md +0 -0
  13. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/checklist/before-startup.md +0 -0
  14. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/checklist/cruising.md +0 -0
  15. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/checklist/fordec.md +0 -0
  16. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/checklist/landing.md +0 -0
  17. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/evaluator.md +0 -0
  18. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/executor.md +0 -0
  19. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/locator-writer.md +0 -0
  20. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/prd-reader.md +0 -0
  21. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/test-spec.md +0 -0
  22. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/web.md +0 -0
  23. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/commands/cellenium/writer.md +0 -0
  24. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/artifact/SKILL.md +0 -0
  25. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/before-startup/SKILL.md +0 -0
  26. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/cruising/SKILL.md +0 -0
  27. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/emergency/fordec/SKILL.md +0 -0
  28. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/evaluator/SKILL.md +0 -0
  29. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/executor/SKILL.md +0 -0
  30. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/landing/SKILL.md +0 -0
  31. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/locator-writer/SKILL.md +0 -0
  32. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/prd-reader/SKILL.md +0 -0
  33. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/test-spec/SKILL.md +0 -0
  34. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/web/SKILL.md +0 -0
  35. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/cellenium/writer/SKILL.md +0 -0
  36. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/checklist/before-startup/SKILL.md +0 -0
  37. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/checklist/cruising/SKILL.md +0 -0
  38. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/checklist/emergency/fordec/SKILL.md +0 -0
  39. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/skills/checklist/landing/SKILL.md +0 -0
  40. {cellenium-0.2.1 → cellenium-0.3.2}/.claude/test/install.test.js +0 -0
  41. {cellenium-0.2.1 → cellenium-0.3.2}/.gitignore +0 -0
  42. {cellenium-0.2.1 → cellenium-0.3.2}/LICENSE +0 -0
  43. {cellenium-0.2.1 → cellenium-0.3.2}/README.md +0 -0
  44. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/__init__.py +0 -0
  45. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/__init__.py +0 -0
  46. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/__init__.py +0 -0
  47. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/__init__.py +0 -0
  48. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/config/agents.yaml +0 -0
  49. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/config/tasks.yaml +0 -0
  50. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/schemas.py +0 -0
  51. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/skills/evaluator/SKILL.md +0 -0
  52. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/skills/vision/SKILL.md +0 -0
  53. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/agents/vision/tools/vision.py +0 -0
  54. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/config.py +0 -0
  55. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/tools/__init__.py +0 -0
  56. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/ai/tools/image_encoder.py +0 -0
  57. {cellenium-0.2.1/src/cellenium/engine → cellenium-0.3.2/src/cellenium/api}/__init__.py +0 -0
  58. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/cli.py +0 -0
  59. {cellenium-0.2.1/src/cellenium/functions → cellenium-0.3.2/src/cellenium/engine}/__init__.py +0 -0
  60. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/engine/manager.py +0 -0
  61. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/engine/page_engine.py +0 -0
  62. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/functions/locators.py +0 -0
  63. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/functions/logger.py +0 -0
  64. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/functions/sheets.py +0 -0
  65. {cellenium-0.2.1 → cellenium-0.3.2}/src/cellenium/templates/env.template +0 -0
  66. {cellenium-0.2.1 → cellenium-0.3.2}/tests/e2e/conftest.py +0 -0
  67. {cellenium-0.2.1 → cellenium-0.3.2}/tests/e2e/test_google_search.py +0 -0
  68. {cellenium-0.2.1 → cellenium-0.3.2}/tests/test_cli.py +0 -0
  69. {cellenium-0.2.1 → cellenium-0.3.2}/tests/test_google_sheet_locators.py +0 -0
  70. {cellenium-0.2.1 → cellenium-0.3.2}/tests/test_page_engine.py +0 -0
  71. {cellenium-0.2.1 → cellenium-0.3.2}/tests/test_settings.py +0 -0
@@ -1,5 +1,6 @@
1
+ API_VERSION=v1
2
+ APP_ENV=dev
1
3
  GOOGLE_SHEETS=
2
- GOOGLE_SHEET_API_KEY=
3
4
  GOOGLE_SHEET_EMAIL=
4
5
  GOOGLE_SHEET_ID=
5
6
  OPENAI_MODEL=openai/gpt-5.5
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: cellenium
3
- Version: 0.2.1
3
+ Version: 0.3.2
4
4
  Summary: Playwright browser automation with a Google Sheets Page Object Model and CrewAI vision analysis
5
5
  Project-URL: Homepage, https://github.com/MedviJenka/cellenium-playwright
6
6
  License-File: LICENSE
@@ -9,7 +9,7 @@ Requires-Dist: crewai>=1.15.23
9
9
  Requires-Dist: fastapi>=0.142.2
10
10
  Requires-Dist: gspread>=6.2.1
11
11
  Requires-Dist: importlib-metadata>=8.0.0
12
- Requires-Dist: logfire>=3.5.1
12
+ Requires-Dist: logfire>=5.1.1
13
13
  Requires-Dist: oauth2client>=4.1.3
14
14
  Requires-Dist: pillow>=12.3.0
15
15
  Requires-Dist: playwright>=1.63.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cellenium"
3
- version = "0.2.1"
3
+ version = "0.3.2"
4
4
  description = "Playwright browser automation with a Google Sheets Page Object Model and CrewAI vision analysis"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -9,7 +9,7 @@ dependencies = [
9
9
  "fastapi>=0.142.2",
10
10
  "gspread>=6.2.1",
11
11
  "importlib-metadata>=8.0.0",
12
- "logfire>=3.5.1",
12
+ "logfire>=5.1.1",
13
13
  "oauth2client>=4.1.3",
14
14
  "pillow>=12.3.0",
15
15
  "playwright>=1.63.0",
@@ -30,4 +30,4 @@ def run_vision_agent(image: list[str], prompt: str) -> VisionSchema:
30
30
 
31
31
 
32
32
  if __name__ == '__main__':
33
- print(run_vision_agent(prompt='what is displayed?', image=[r'C:\Users\medvi\PycharmProjects\PythonProject\tests\files\images\img.png']))
33
+ print(run_vision_agent(prompt='what is displayed?', image=[r'C:\Users\medvi\OneDrive\Desktop\checklist\data\screenshots\img.png']))
@@ -0,0 +1,67 @@
1
+ from fastapi import FastAPI, APIRouter, UploadFile, File
2
+ from fastapi.responses import JSONResponse
3
+ from contextlib import asynccontextmanager
4
+ from pathlib import Path
5
+ from tempfile import NamedTemporaryFile
6
+ from typing import AsyncGenerator
7
+ from cellenium.ai.agents.vision.crew import run_vision_agent
8
+ from cellenium.functions.logger import Logger
9
+ from src.cellenium.settings import get_config
10
+
11
+
12
+ log = Logger(name='vision-service')
13
+
14
+ Config = get_config()
15
+
16
+ @asynccontextmanager
17
+ async def lifespan(_: FastAPI) -> AsyncGenerator:
18
+ log.fire(f'{log.name} service started')
19
+ yield
20
+ log.fire(f'{log.name} service stopped')
21
+
22
+
23
+ router = APIRouter(prefix=f'/api/{Config.API_VERSION}/vision')
24
+
25
+
26
+ @router.post('/ai')
27
+ async def vision(prompt: str, image: UploadFile = File(...)) -> JSONResponse:
28
+ suffix = Path(image.filename or "").suffix
29
+ with NamedTemporaryFile(suffix=suffix, delete=False) as temp_file:
30
+ image_path = Path(temp_file.name)
31
+ temp_file.write(await image.read())
32
+
33
+ try:
34
+ response = run_vision_agent(prompt=prompt, image=[str(image_path)])
35
+ finally:
36
+ image_path.unlink(missing_ok=True)
37
+
38
+ return JSONResponse({'status': f'{image} uploaded successfully', 'ai_response': response})
39
+
40
+
41
+ @router.get('/health')
42
+ async def vision() -> JSONResponse:
43
+ return JSONResponse({'status': 'healthy'})
44
+
45
+
46
+ app = FastAPI(
47
+ title=f"AI Vision API\nenv: {Config.APP_ENV}",
48
+ description="Vision image with AI",
49
+ version=Config.API_VERSION,
50
+ lifespan=lifespan,
51
+ docs_url=f"/api/{Config.API_VERSION}/vision/docs",
52
+ openapi_url=f"/api/{Config.API_VERSION}/vision/openapi.json",
53
+ redoc_url=f"/api/{Config.API_VERSION}/vision/redoc",
54
+ )
55
+
56
+
57
+ app.include_router(router=router)
58
+
59
+
60
+ @app.get('/health')
61
+ def docs() -> JSONResponse:
62
+ return JSONResponse({'status': 'healthy'})
63
+
64
+
65
+ if __name__ == '__main__':
66
+ import uvicorn
67
+ uvicorn.run(app=app, host='0.0.0.0', port=9876, use_colors=True)
File without changes
@@ -6,15 +6,15 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
6
6
 
7
7
  class Settings(BaseSettings):
8
8
 
9
- # Relative paths resolve against the current working directory, i.e. the project using cellenium.
10
9
  model_config = SettingsConfigDict(env_file=".env", extra="allow")
11
-
12
- GOOGLE_SHEETS: str = Field(..., description='')
13
- OPENAI_MODEL: str = Field(..., description='')
14
- OPENAI_API_KEY: str | None = Field(None, description='')
15
- LOGFIRE_TOKEN: str | None = Field(None, description='')
16
- TEST_HEADLESS: bool = Field(True, description='')
17
- CREDENTIALS_JSON: Path = Field(Path("credentials.json"), description='google json credentials for accessing the sheet')
10
+ APP_ENV: str = Field(default='dev', description='')
11
+ API_VERSION: str = Field(default='v1', description='')
12
+ GOOGLE_SHEETS: str = Field(..., description='')
13
+ OPENAI_MODEL: str = Field(..., description='')
14
+ OPENAI_API_KEY: str | None = Field(default=None, description='')
15
+ LOGFIRE_TOKEN: str | None = Field(default=None, description='')
16
+ TEST_HEADLESS: bool = Field(default=True, description='')
17
+ CREDENTIALS_JSON: Path = Field(Path("credentials.json"), desription='google json credentials for accessing the sheet')
18
18
 
19
19
 
20
20
  @cache
@@ -0,0 +1,68 @@
1
+ from pathlib import Path
2
+ import importlib
3
+ import sys
4
+
5
+ import logfire
6
+ from fastapi.testclient import TestClient
7
+
8
+
9
+ def _load_vision_api(monkeypatch):
10
+ monkeypatch.setenv("GOOGLE_SHEETS", "sheet-id")
11
+ monkeypatch.setenv("OPENAI_MODEL", "model")
12
+ monkeypatch.setenv("LOGFIRE_TOKEN", "")
13
+ configure = logfire.configure
14
+ monkeypatch.setattr(
15
+ logfire,
16
+ "configure",
17
+ lambda **_: configure(send_to_logfire=False),
18
+ )
19
+
20
+ for module_name in (
21
+ "cellenium.api.vision",
22
+ "cellenium.functions.logger",
23
+ "src.cellenium.api.vision",
24
+ "src.cellenium.settings",
25
+ ):
26
+ sys.modules.pop(module_name, None)
27
+
28
+ return importlib.import_module("cellenium.api.vision")
29
+
30
+
31
+ def test_health_endpoint_works_after_service_startup(monkeypatch):
32
+ vision_api = _load_vision_api(monkeypatch)
33
+
34
+ with TestClient(vision_api.app) as client:
35
+ response = client.get("/health")
36
+
37
+ assert response.status_code == 200
38
+ assert response.json() == {"status": "healthy"}
39
+
40
+
41
+ def test_ai_endpoint_passes_temporary_image_path(monkeypatch):
42
+ vision_api = _load_vision_api(monkeypatch)
43
+ image_bytes = b"fake-image-data"
44
+ received = {}
45
+
46
+ def fake_run_vision_agent(*, prompt, image):
47
+ image_path = Path(image[0])
48
+ received.update(
49
+ prompt=prompt,
50
+ image_path=image_path,
51
+ image_bytes=image_path.read_bytes(),
52
+ )
53
+ return {"result": "ok"}
54
+
55
+ monkeypatch.setattr(vision_api, "run_vision_agent", fake_run_vision_agent)
56
+
57
+ with TestClient(vision_api.app) as client:
58
+ response = client.post(
59
+ "/api/v1/vision/ai",
60
+ params={"prompt": "what is displayed?"},
61
+ files={"image": ("sample.png", image_bytes, "image/png")},
62
+ )
63
+
64
+ assert response.status_code == 200
65
+ assert received["prompt"] == "what is displayed?"
66
+ assert received["image_path"].suffix == ".png"
67
+ assert received["image_bytes"] == image_bytes
68
+ assert not received["image_path"].exists()
@@ -328,7 +328,7 @@ wheels = [
328
328
 
329
329
  [[package]]
330
330
  name = "cellenium"
331
- version = "0.2.1"
331
+ version = "0.3.2"
332
332
  source = { editable = "." }
333
333
  dependencies = [
334
334
  { name = "crewai" },
@@ -355,7 +355,7 @@ requires-dist = [
355
355
  { name = "fastapi", specifier = ">=0.142.2" },
356
356
  { name = "gspread", specifier = ">=6.2.1" },
357
357
  { name = "importlib-metadata", specifier = ">=8.0.0" },
358
- { name = "logfire", specifier = ">=3.5.1" },
358
+ { name = "logfire", specifier = ">=5.1.1" },
359
359
  { name = "oauth2client", specifier = ">=4.1.3" },
360
360
  { name = "pillow", specifier = ">=12.3.0" },
361
361
  { name = "playwright", specifier = ">=1.63.0" },
@@ -1553,7 +1553,7 @@ wheels = [
1553
1553
 
1554
1554
  [[package]]
1555
1555
  name = "logfire"
1556
- version = "3.5.1"
1556
+ version = "5.1.1"
1557
1557
  source = { registry = "https://pypi.org/simple" }
1558
1558
  dependencies = [
1559
1559
  { name = "executing" },
@@ -1564,9 +1564,9 @@ dependencies = [
1564
1564
  { name = "rich" },
1565
1565
  { name = "typing-extensions" },
1566
1566
  ]
1567
- sdist = { url = "https://files.pythonhosted.org/packages/b3/7a/e918a1f1ba62eaf1b20917a37b8fb820800e78a21eaf42677f925fb15f14/logfire-3.5.1.tar.gz", hash = "sha256:8ac97284af1e266257d640dcca584528ee015024e84f512ecef6e2cedd581f1d", size = 264880, upload-time = "2025-02-04T16:05:54.097Z" }
1567
+ sdist = { url = "https://files.pythonhosted.org/packages/51/70/efb64888a6e375de10fa990169222493d5cf2a76ccb990c483b0ba7372df/logfire-5.1.1.tar.gz", hash = "sha256:7f9fc158988be37559045b054f278608d9fdc06bd9f875515ea6476bf260cb23", size = 1368530, upload-time = "2026-09-25T09:19:50.082Z" }
1568
1568
  wheels = [
1569
- { url = "https://files.pythonhosted.org/packages/78/13/8c181b24daaddcf7f259e63e914a1b19e645f06c7ea025e0bea0553c0f29/logfire-3.5.1-py3-none-any.whl", hash = "sha256:8821ef5c83e566354a63d35cff4486ae91103d86f1677fe61632178b40a3e081", size = 178547, upload-time = "2025-02-04T16:05:50.222Z" },
1569
+ { url = "https://files.pythonhosted.org/packages/10/4e/714730339dfe5e5a517f2e8fc015a5137d9c147928eeda0d2a0524c2aa94/logfire-5.1.1-py3-none-any.whl", hash = "sha256:ee2e25b83830f52ea3d7a1b35cf6f783490b2ba349f0383ca8ae6f5ff2a4f7dd", size = 479430, upload-time = "2026-09-25T09:19:46.597Z" },
1570
1570
  ]
1571
1571
 
1572
1572
  [[package]]
@@ -2108,98 +2108,67 @@ wheels = [
2108
2108
 
2109
2109
  [[package]]
2110
2110
  name = "opentelemetry-api"
2111
- version = "1.45.0"
2111
+ version = "1.44.0"
2112
2112
  source = { registry = "https://pypi.org/simple" }
2113
2113
  dependencies = [
2114
2114
  { name = "typing-extensions" },
2115
2115
  ]
2116
- sdist = { url = "https://files.pythonhosted.org/packages/1f/dc/e12c1fe1ed8a7b7149777127b1a0e12ce5bd5a81d97408bedc2128c260f5/opentelemetry_api-1.45.0.tar.gz", hash = "sha256:711ede81773c8025c2c03dac0450bc89f3d30aea6eabcc815c570d4e35a963f7", size = 72115, upload-time = "2026-09-25T12:32:28.399Z" }
2116
+ sdist = { url = "https://files.pythonhosted.org/packages/ee/8b/aa9e2d8b8dfa7c946f7dec5d1f8f6ba8eca062f43509a06bdb5ce93d26c0/opentelemetry_api-1.44.0.tar.gz", hash = "sha256:67647e5e9566edcf421166fdf022b3537f818635daa852b289e34604dc6fb33a", size = 72406, upload-time = "2026-07-16T15:25:32.678Z" }
2117
2117
  wheels = [
2118
- { url = "https://files.pythonhosted.org/packages/44/b9/040d1a1c7836922828e6480cd2366bb8fe0ebf75b413d2bb51a9b0e7f78f/opentelemetry_api-1.45.0-py3-none-any.whl", hash = "sha256:80e068aba7cd56c8b58512d6a36f8d25cb1dfaa0c0a4cc1c938ccf9f362d9cb3", size = 60020, upload-time = "2026-09-25T12:32:03.192Z" },
2119
- ]
2120
-
2121
- [[package]]
2122
- name = "opentelemetry-exporter-http-transport"
2123
- version = "0.66b0"
2124
- source = { registry = "https://pypi.org/simple" }
2125
- dependencies = [
2126
- { name = "opentelemetry-api" },
2127
- ]
2128
- sdist = { url = "https://files.pythonhosted.org/packages/5e/31/cbedb10e08c3c932b80f58edf055a16bb48a500c23c617b758fb3ec18f08/opentelemetry_exporter_http_transport-0.66b0.tar.gz", hash = "sha256:2c229b6593eaa22c86d9b8a15843dc23b406dbda00fb138339189aab07923b4e", size = 11694, upload-time = "2026-09-25T12:32:29.689Z" }
2129
- wheels = [
2130
- { url = "https://files.pythonhosted.org/packages/b1/65/34d7106eb45acda40f016c5b31b313ffbbf4744acd5f099f29eaf2958b4d/opentelemetry_exporter_http_transport-0.66b0-py3-none-any.whl", hash = "sha256:c82689928a11505a2a0a26a04afe0ce06d270d3db984bc16c1a80ffa902db00e", size = 12156, upload-time = "2026-09-25T12:32:05.621Z" },
2131
- ]
2132
-
2133
- [package.optional-dependencies]
2134
- urllib3 = [
2135
- { name = "urllib3" },
2136
- ]
2137
-
2138
- [[package]]
2139
- name = "opentelemetry-exporter-otlp-common"
2140
- version = "0.66b0"
2141
- source = { registry = "https://pypi.org/simple" }
2142
- dependencies = [
2143
- { name = "opentelemetry-sdk" },
2144
- ]
2145
- sdist = { url = "https://files.pythonhosted.org/packages/68/09/01239cdfe8a414d46ed625b68b6da92666ffd16d93cc6dadf89404b4bd85/opentelemetry_exporter_otlp_common-0.66b0.tar.gz", hash = "sha256:362268ec6aa705e183776ff938539df1e8ce45bc5509d242538b1d40c26fe6a6", size = 14323, upload-time = "2026-09-25T12:32:31.481Z" }
2146
- wheels = [
2147
- { url = "https://files.pythonhosted.org/packages/c3/a9/b6a7a9d40ba99ed71b18e17310339024b086578f5f32162df1c1c0cf6270/opentelemetry_exporter_otlp_common-0.66b0-py3-none-any.whl", hash = "sha256:35d24c867310f4713a9738b0202b6bade77955418fccb9e2f7eea01b76263916", size = 12387, upload-time = "2026-09-25T12:32:08.438Z" },
2118
+ { url = "https://files.pythonhosted.org/packages/ca/6f/a04e900f465ff3221ccc395522503e2d10e79fa21f2723c8e177aae1e0d1/opentelemetry_api-1.44.0-py3-none-any.whl", hash = "sha256:94b98c893a91b88657eaac1e3ba89618cdb85be6918196705354f34728b2cdef", size = 60018, upload-time = "2026-07-16T15:25:11.657Z" },
2148
2119
  ]
2149
2120
 
2150
2121
  [[package]]
2151
2122
  name = "opentelemetry-exporter-otlp-proto-common"
2152
- version = "1.45.0"
2123
+ version = "1.44.0"
2153
2124
  source = { registry = "https://pypi.org/simple" }
2154
2125
  dependencies = [
2155
2126
  { name = "opentelemetry-proto" },
2156
2127
  ]
2157
- sdist = { url = "https://files.pythonhosted.org/packages/e5/e0/ee3823dbdc10da15b5750becc37b61194dd7c55e3b56764ecbbe446f659a/opentelemetry_exporter_otlp_proto_common-1.45.0.tar.gz", hash = "sha256:36495115a0c6a7aa946cfda9d59b6ed4e917b6ab0f75cdaf66bc1b176ec1be1f", size = 18870, upload-time = "2026-09-25T12:32:34.141Z" }
2128
+ sdist = { url = "https://files.pythonhosted.org/packages/61/09/4d717852c1cf3f854b76c7110a5d00883bc3c99288b9b0dbcbeb9e306eb6/opentelemetry_exporter_otlp_proto_common-1.44.0.tar.gz", hash = "sha256:dc87a5a5bc58f149a56d1547e4691588fa12994cdc3bc039a694ccb3375862ac", size = 20202, upload-time = "2026-07-16T15:25:37.658Z" }
2158
2129
  wheels = [
2159
- { url = "https://files.pythonhosted.org/packages/f0/bf/3e21917368a81282ce9fc6d085a944dcaea6eed19de7d29cc979375db347/opentelemetry_exporter_otlp_proto_common-1.45.0-py3-none-any.whl", hash = "sha256:7e1410ae6d3ed301f7a74bec96467d519d3f37e52f9d95b309ae125e5a1af863", size = 15394, upload-time = "2026-09-25T12:32:12.663Z" },
2130
+ { url = "https://files.pythonhosted.org/packages/5e/71/65fd9d54c10b860f87c045ccee1264cab7011268895d3528818a29c1172a/opentelemetry_exporter_otlp_proto_common-1.44.0-py3-none-any.whl", hash = "sha256:9a9fe61bba73d802904bc989f1d6b4a7b1ee40f06c40e98d6f85af65aaebb694", size = 17045, upload-time = "2026-07-16T15:25:18.201Z" },
2160
2131
  ]
2161
2132
 
2162
2133
  [[package]]
2163
2134
  name = "opentelemetry-exporter-otlp-proto-grpc"
2164
- version = "1.45.0"
2135
+ version = "1.44.0"
2165
2136
  source = { registry = "https://pypi.org/simple" }
2166
2137
  dependencies = [
2167
2138
  { name = "googleapis-common-protos" },
2168
2139
  { name = "grpcio" },
2169
2140
  { name = "opentelemetry-api" },
2170
- { name = "opentelemetry-exporter-otlp-common" },
2171
2141
  { name = "opentelemetry-exporter-otlp-proto-common" },
2172
2142
  { name = "opentelemetry-proto" },
2173
2143
  { name = "opentelemetry-sdk" },
2174
2144
  { name = "typing-extensions" },
2175
2145
  ]
2176
- sdist = { url = "https://files.pythonhosted.org/packages/4e/ba/8114df05c921ff9bd2f29672c6e0694de5239640369f173f42551faed5c3/opentelemetry_exporter_otlp_proto_grpc-1.45.0.tar.gz", hash = "sha256:7888c2d57b4437cdd879fe250455065ec716a3862f3eb17b850cbfe134aeb181", size = 25997, upload-time = "2026-09-25T12:32:34.739Z" }
2146
+ sdist = { url = "https://files.pythonhosted.org/packages/1f/47/80d9e9d468dc5de3af5096f5ccdb065fa4dd1470f74495cc53e59e397f47/opentelemetry_exporter_otlp_proto_grpc-1.44.0.tar.gz", hash = "sha256:40d1ae9e03fcc36de3cbac610cc99f35894938bff9cfd90fc4ec68bd85448463", size = 27225, upload-time = "2026-07-16T15:25:38.308Z" }
2177
2147
  wheels = [
2178
- { url = "https://files.pythonhosted.org/packages/c7/f3/f0432f1a44f6c4a649755c1865a1143ba7dbfc56b5128262cee9cf90818e/opentelemetry_exporter_otlp_proto_grpc-1.45.0-py3-none-any.whl", hash = "sha256:5a8460464a421fde245be0eb1cad6c6059a07845d1896afb74c963f847179070", size = 19492, upload-time = "2026-09-25T12:32:13.728Z" },
2148
+ { url = "https://files.pythonhosted.org/packages/54/29/6ae42ba32b153ae0a44ae125f0caff2188bbe62d99c82d1768da30864e72/opentelemetry_exporter_otlp_proto_grpc-1.44.0-py3-none-any.whl", hash = "sha256:6a1a645ea182a2f59440c51fa8301d309f3324a8f9d65f8395584b064b67ee4e", size = 19624, upload-time = "2026-07-16T15:25:19.096Z" },
2179
2149
  ]
2180
2150
 
2181
2151
  [[package]]
2182
2152
  name = "opentelemetry-exporter-otlp-proto-http"
2183
- version = "1.45.0"
2153
+ version = "1.44.0"
2184
2154
  source = { registry = "https://pypi.org/simple" }
2185
2155
  dependencies = [
2186
2156
  { name = "googleapis-common-protos" },
2187
2157
  { name = "opentelemetry-api" },
2188
- { name = "opentelemetry-exporter-http-transport", extra = ["urllib3"] },
2189
- { name = "opentelemetry-exporter-otlp-common" },
2190
2158
  { name = "opentelemetry-exporter-otlp-proto-common" },
2191
2159
  { name = "opentelemetry-proto" },
2192
2160
  { name = "opentelemetry-sdk" },
2161
+ { name = "requests" },
2193
2162
  { name = "typing-extensions" },
2194
2163
  ]
2195
- sdist = { url = "https://files.pythonhosted.org/packages/94/78/a503801c1c8f80b1d8aad0e14106a7c57f39344001652a78a683f9a9089e/opentelemetry_exporter_otlp_proto_http-1.45.0.tar.gz", hash = "sha256:2f35496d96809f946f41b8805e6b93aec6c9b71b5fd759b75b6af4c084d992ae", size = 28818, upload-time = "2026-09-25T12:32:35.335Z" }
2164
+ sdist = { url = "https://files.pythonhosted.org/packages/1a/87/95e2a5aaa795b4e2260d74e16df2d5541deb2ea9de010bcd615f4dee2654/opentelemetry_exporter_otlp_proto_http-1.44.0.tar.gz", hash = "sha256:c633d7270ad6b57cd4cfbe8b0007a9e2e7c0cb50bd6c50fe2a7b245f721a09d8", size = 25806, upload-time = "2026-07-16T15:25:39.162Z" }
2196
2165
  wheels = [
2197
- { url = "https://files.pythonhosted.org/packages/e7/18/875e0ee47e035f324e42eda9aab47d58381a4412181dca251d3504e24680/opentelemetry_exporter_otlp_proto_http-1.45.0-py3-none-any.whl", hash = "sha256:74385f99266dafdefff41f3da4b76f6dba79d237a9d4487e6ff1ee653c74a0a3", size = 22260, upload-time = "2026-09-25T12:32:14.658Z" },
2166
+ { url = "https://files.pythonhosted.org/packages/cd/d0/fdeb1a98d8d3a6205f5f297c51b4a9bfe65126ab60339669bbe3dd54c2e2/opentelemetry_exporter_otlp_proto_http-1.44.0-py3-none-any.whl", hash = "sha256:838592fce774c1c8bb7b9a0a7facbfa82e17be5a8a4e94cef10cb84ae026bae3", size = 21850, upload-time = "2026-07-16T15:25:20.006Z" },
2198
2167
  ]
2199
2168
 
2200
2169
  [[package]]
2201
2170
  name = "opentelemetry-instrumentation"
2202
- version = "0.66b0"
2171
+ version = "0.65b0"
2203
2172
  source = { registry = "https://pypi.org/simple" }
2204
2173
  dependencies = [
2205
2174
  { name = "opentelemetry-api" },
@@ -2207,48 +2176,48 @@ dependencies = [
2207
2176
  { name = "packaging" },
2208
2177
  { name = "wrapt" },
2209
2178
  ]
2210
- sdist = { url = "https://files.pythonhosted.org/packages/d1/97/e6959310cff3dbbce24ca0a60e5e12f773320d17480c779b038b55defd35/opentelemetry_instrumentation-0.66b0.tar.gz", hash = "sha256:316715ed7b33a12530c0ae3e8d4cdf26d70e1aad358d7ba256e5dea2d4ceed71", size = 43308, upload-time = "2026-09-25T12:35:46.504Z" }
2179
+ sdist = { url = "https://files.pythonhosted.org/packages/13/91/3c58961cb0360cd60509064734f0be4275383c8681d73c580a40ca83ddce/opentelemetry_instrumentation-0.65b0.tar.gz", hash = "sha256:071d9d9eced9bd6460444ec3b0c77229870ed05a881c22c84fdede58e4eed09b", size = 42689, upload-time = "2026-07-16T15:25:50.275Z" }
2211
2180
  wheels = [
2212
- { url = "https://files.pythonhosted.org/packages/4b/08/bf39ca469f178963715ff6fd7012eec0b438f472703b11a64a40cbb14f6f/opentelemetry_instrumentation-0.66b0-py3-none-any.whl", hash = "sha256:0b32e2fcfec1e4bd48511a3b77ce32bfb1c16dcd5479396b21f9086a4b06c0c9", size = 36900, upload-time = "2026-09-25T12:34:50.029Z" },
2181
+ { url = "https://files.pythonhosted.org/packages/40/7b/85eab1215f72adf0e68d3dc4a679b9bff993fa679ff34cd8dd378e2659fd/opentelemetry_instrumentation-0.65b0-py3-none-any.whl", hash = "sha256:ea967a72b9939b5fcfdad572753b4306c59dcb99e3f382d95dae04286805e137", size = 36717, upload-time = "2026-07-16T15:24:51.424Z" },
2213
2182
  ]
2214
2183
 
2215
2184
  [[package]]
2216
2185
  name = "opentelemetry-proto"
2217
- version = "1.45.0"
2186
+ version = "1.44.0"
2218
2187
  source = { registry = "https://pypi.org/simple" }
2219
2188
  dependencies = [
2220
2189
  { name = "protobuf" },
2221
2190
  ]
2222
- sdist = { url = "https://files.pythonhosted.org/packages/72/28/67c38cfb7e2bdfdd0cde7dcdd0424aed0291fbd64aa4ea3e7e913734711a/opentelemetry_proto-1.45.0.tar.gz", hash = "sha256:96ee414f24bc3f61ea8e17dc56b4348d4049d73db3eb17c6b3edf75b5b403300", size = 46489, upload-time = "2026-09-25T12:32:41.409Z" }
2191
+ sdist = { url = "https://files.pythonhosted.org/packages/64/01/40ac4ae9a149263cc52c2cee200ddd80cb6d8db1a4610abf8eabce0fe771/opentelemetry_proto-1.44.0.tar.gz", hash = "sha256:c547a79c2f8c0c515d31509154682e5921c7cfd5ca67b70e1f9266e2c3e103f3", size = 46488, upload-time = "2026-07-16T15:25:45.34Z" }
2223
2192
  wheels = [
2224
- { url = "https://files.pythonhosted.org/packages/6b/45/814d55714507c7ce9c9cd86a4f83ceb5a74ab0bffcc63ff493943f138de2/opentelemetry_proto-1.45.0-py3-none-any.whl", hash = "sha256:9731566359d7b8e1ee1e149d8e4ad6865bab965e657ad3387ec2784d16927666", size = 72486, upload-time = "2026-09-25T12:32:23.36Z" },
2193
+ { url = "https://files.pythonhosted.org/packages/d1/7c/8be563d68e93bbefa5c8affb82ddcff91b3ad858ce49957ba7b16fd3e0ab/opentelemetry_proto-1.44.0-py3-none-any.whl", hash = "sha256:898b155a0e1557afd867478fb6158e8122a46329ca0bb8dc53cc55e98f017f56", size = 72483, upload-time = "2026-07-16T15:25:28.429Z" },
2225
2194
  ]
2226
2195
 
2227
2196
  [[package]]
2228
2197
  name = "opentelemetry-sdk"
2229
- version = "1.45.0"
2198
+ version = "1.44.0"
2230
2199
  source = { registry = "https://pypi.org/simple" }
2231
2200
  dependencies = [
2232
2201
  { name = "opentelemetry-api" },
2233
2202
  { name = "opentelemetry-semantic-conventions" },
2234
2203
  { name = "typing-extensions" },
2235
2204
  ]
2236
- sdist = { url = "https://files.pythonhosted.org/packages/ac/ed/ad32d76cc86ebce601105d01d13f8a08d6abc1852eaf69d79cf199bc1ee7/opentelemetry_sdk-1.45.0.tar.gz", hash = "sha256:20caa5130505e386c67c3da1c76e446c842698ced54c76c6148679539aa97972", size = 218337, upload-time = "2026-09-25T12:32:43.591Z" }
2205
+ sdist = { url = "https://files.pythonhosted.org/packages/5d/77/a6592cbc7c8d9bcc9d6757a9df45e04a7c585e3e6e7a13456da522b21109/opentelemetry_sdk-1.44.0.tar.gz", hash = "sha256:cebe7f65dc12f26ead75c6064de12fd2a9052e5060c0272d402cfa203aae123b", size = 208624, upload-time = "2026-07-16T15:25:46.078Z" }
2237
2206
  wheels = [
2238
- { url = "https://files.pythonhosted.org/packages/8a/ae/46963201ce58d6b86f9e54087a39720a35ac9f57c3a9e440d275995c2b02/opentelemetry_sdk-1.45.0-py3-none-any.whl", hash = "sha256:5dc634c946546f61b757c5b1781f9fd1a10e96ffaf7357c797e508fe9c57e75e", size = 140132, upload-time = "2026-09-25T12:32:25.399Z" },
2207
+ { url = "https://files.pythonhosted.org/packages/e7/23/ff077e61886ee020a17ce9c8b6fa11c601c8d8345b09ea24f605445df62a/opentelemetry_sdk-1.44.0-py3-none-any.whl", hash = "sha256:df081c4c6bcfdb1211e3e86140376792643128a25f8d72d1d27675936e7e96ad", size = 137221, upload-time = "2026-07-16T15:25:29.534Z" },
2239
2208
  ]
2240
2209
 
2241
2210
  [[package]]
2242
2211
  name = "opentelemetry-semantic-conventions"
2243
- version = "0.66b0"
2212
+ version = "0.65b0"
2244
2213
  source = { registry = "https://pypi.org/simple" }
2245
2214
  dependencies = [
2246
2215
  { name = "opentelemetry-api" },
2247
2216
  { name = "typing-extensions" },
2248
2217
  ]
2249
- sdist = { url = "https://files.pythonhosted.org/packages/2e/21/910f085c0b83b80e45c341c7859baef37c877046b2c44c88d5ff2d5db948/opentelemetry_semantic_conventions-0.66b0.tar.gz", hash = "sha256:97a77dce484c54861e7eeff7651fd8a806dd3c30e501dc316730215ec36890e6", size = 150247, upload-time = "2026-09-25T12:32:44.827Z" }
2218
+ sdist = { url = "https://files.pythonhosted.org/packages/8f/73/0cbdebcb4cf545fdd328da14f5137e37d0770c3f26185e478b0d15d94f50/opentelemetry_semantic_conventions-0.65b0.tar.gz", hash = "sha256:f9b2b81e9d5b64f11bc952075e7e9c7fb0aab075c7fd1c46d597f1b919852d60", size = 148774, upload-time = "2026-07-16T15:25:46.902Z" }
2250
2219
  wheels = [
2251
- { url = "https://files.pythonhosted.org/packages/f4/93/2ad416d69c4ca8fd21ebc6894f23f4eda744dc6f43a14d7a9ffd7ed3abbd/opentelemetry_semantic_conventions-0.66b0-py3-none-any.whl", hash = "sha256:175b19dd98c4473f4f43a2b1df59186fd7b4a48cd3f77cbe03438b6d6fda230a", size = 206277, upload-time = "2026-09-25T12:32:26.484Z" },
2220
+ { url = "https://files.pythonhosted.org/packages/a6/0e/49df70d9b81fb5cbae4bbf2a49d865b09bcbcbc4eb53f5851b1027738d78/opentelemetry_semantic_conventions-0.65b0-py3-none-any.whl", hash = "sha256:1cacde7b0ad306f84c5ef08c3dbe1bbaf20165bba6f8bff43b670e555a086bcb", size = 204645, upload-time = "2026-07-16T15:25:30.688Z" },
2252
2221
  ]
2253
2222
 
2254
2223
  [[package]]
cellenium-0.2.1/main.py DELETED
@@ -1,6 +0,0 @@
1
- def main():
2
- print("Hello from checklist!")
3
-
4
-
5
- if __name__ == "__main__":
6
- main()
File without changes
File without changes
File without changes
File without changes