reflection-agent 2.0.60__tar.gz → 2.0.62__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.
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/.env.example +52 -52
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/.github/workflows/ci.yml +84 -84
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/.gitignore +18 -18
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/AUDIT.md +291 -291
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG.md +445 -445
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.2.0.md +40 -40
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.3.0.md +40 -40
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.3.1.md +26 -26
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.4.0.md +70 -70
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.4.1.md +82 -82
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.5.0.md +89 -89
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.5.1.md +57 -57
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CHANGELOG_v2.5.2.md +84 -84
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/CLAUDE.md +69 -69
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/Dockerfile +71 -71
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/LICENSE +23 -23
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/PKG-INFO +6 -4
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/README.md +250 -250
- reflection_agent-2.0.62/VERSION +1 -0
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/env.py +123 -123
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/script.py.mako +26 -26
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/versions/20260202_000000_001_initial_schema.py +258 -258
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/versions/20260202_000001_002_memories_table.py +110 -110
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/versions/20260202_000002_003_session_history.py +95 -95
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/versions/20260203_000000_004_api_key_composite_index.py +45 -45
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic.ini +76 -76
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/docker-compose.yml +118 -118
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/examples/hybrid_routing_example.py +137 -137
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/examples/quickstart.py +220 -220
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/install.sh +228 -228
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/installer/README.txt +76 -76
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/installer/build_installer.py +125 -125
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/installer/cli_installer.py +515 -515
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/installer/installer.spec +78 -78
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/installer/setup_wizard.py +717 -717
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/papers/reflection_security_paper.md +749 -749
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/pyproject.toml +145 -143
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/__init__.py +195 -195
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/__main__.py +10 -10
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/_familiar_setup.py +38 -38
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/auth/__init__.py +45 -45
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/auth/sso.py +894 -894
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/cli.py +498 -498
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/__init__.py +230 -230
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/agent.py +549 -549
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/async_base.py +384 -384
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/async_orchestrator.py +966 -966
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/circuit_breaker.py +512 -512
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/enterprise_tools.py +595 -595
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/executor.py +580 -580
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/extended_tools.py +860 -860
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/memory.py +614 -614
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/orchestrator.py +748 -748
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/providers.py +753 -753
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/providers_async.py +1078 -1078
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/regions.py +518 -518
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/settings.py +287 -287
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/tokens.py +630 -630
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/tools.py +630 -630
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/usage_alerts.py +664 -664
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/core/usage_calculator.py +491 -491
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/data/__init__.py +68 -68
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/data/models.py +291 -291
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/data/postgres.py +142 -142
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/data/redis.py +144 -144
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/data/repositories.py +714 -714
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/__init__.py +68 -68
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/app.py +406 -406
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/auth.py +797 -797
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/auth_routes.py +970 -970
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/chat_routes.py +569 -569
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/chat_routes_v2.py +364 -364
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/health.py +524 -524
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/job_routes.py +378 -378
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/lifecycle_routes.py +383 -383
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/quota_middleware.py +316 -316
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/quota_routes.py +466 -466
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/rate_limit.py +426 -425
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/request_context.py +413 -413
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/routes.py +760 -760
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/sso_routes.py +563 -563
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/token_store.py +622 -622
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/gateway/versioning.py +481 -481
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/jobs/__init__.py +728 -728
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/jobs/export_handlers.py +542 -542
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/observability/__init__.py +148 -148
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/observability/logging.py +607 -607
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/observability/metrics.py +701 -701
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/observability/middleware.py +250 -250
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/observability/tracing.py +486 -486
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/routing/__init__.py +24 -24
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/routing/phi_detector.py +165 -165
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/routing/smart_router.py +313 -313
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/services/__init__.py +31 -31
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/services/orchestrator.py +468 -468
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenant_wrappers/__init__.py +81 -81
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenant_wrappers/agent.py +626 -626
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenant_wrappers/channels.py +311 -311
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenant_wrappers/memory.py +597 -597
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenant_wrappers/tools.py +176 -176
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenants/__init__.py +68 -68
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenants/context.py +438 -438
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenants/lifecycle.py +552 -552
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenants/models.py +617 -617
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenants/quota_service.py +602 -602
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/tenants/quotas.py +681 -681
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection_core/__init__.py +112 -112
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection_core/exceptions/__init__.py +7 -7
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection_core/exceptions/hierarchy.py +380 -380
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection_core/security/__init__.py +9 -9
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection_core/security/encryption.py +276 -276
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection_core/security/sanitization.py +272 -272
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection_core/security/trust.py +131 -131
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/run.sh +192 -192
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/scripts/generate_secrets.py +177 -177
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/scripts/model_setup.sh +363 -363
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/conftest.py +60 -60
- reflection_agent-2.0.62/tests/test_auth_login.py +110 -0
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_constitution.py +314 -314
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_installation.py +116 -116
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_mcp_server.py +295 -285
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_memory_agent.py +369 -369
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_mesh_delegation.py +486 -486
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_mesh_discovery.py +545 -545
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_mesh_memory_bridge.py +639 -637
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_mesh_trust.py +535 -535
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_phi_routing.py +165 -165
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_planner.py +273 -273
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_reflection_core.py +153 -153
- reflection_agent-2.0.62/tests/test_self_correction.py +244 -0
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_semantic_memory.py +303 -303
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_skill_handlers.py +214 -214
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_skill_loading.py +126 -126
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_skill_presets.py +160 -160
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_tenant_isolation.py +200 -200
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/test_v2_integration.py +315 -310
- reflection_agent-2.0.60/VERSION +0 -1
- reflection_agent-2.0.60/tests/test_self_correction.py +0 -251
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/__init__.py +0 -0
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/alembic/versions/__init__.py +0 -0
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/reflection/data/migrations/.gitkeep +0 -0
- {reflection_agent-2.0.60 → reflection_agent-2.0.62}/tests/__init__.py +0 -0
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
# =============================================================================
|
|
2
|
-
# Reflection - Environment Configuration
|
|
3
|
-
# =============================================================================
|
|
4
|
-
# Copy this file to .env and fill in your values:
|
|
5
|
-
# cp .env.example .env
|
|
6
|
-
#
|
|
7
|
-
# Required settings are marked with [REQUIRED]
|
|
8
|
-
# Everything else has sensible defaults
|
|
9
|
-
# =============================================================================
|
|
10
|
-
|
|
11
|
-
# -- General ------------------------------------------------------------------
|
|
12
|
-
ENVIRONMENT=production # development | staging | production
|
|
13
|
-
DEBUG=false
|
|
14
|
-
|
|
15
|
-
# -- Database [REQUIRED for production] ---------------------------------------
|
|
16
|
-
# SQLite is used automatically in development if this is not set
|
|
17
|
-
DATABASE_URL=postgresql+asyncpg://reflection:reflection@localhost:5432/reflection
|
|
18
|
-
|
|
19
|
-
# -- Redis [REQUIRED for production] ------------------------------------------
|
|
20
|
-
# In-memory fallback is used in development if this is not set
|
|
21
|
-
REDIS_URL=redis://localhost:6379/0
|
|
22
|
-
|
|
23
|
-
# -- LLM Providers (at least one required) ------------------------------------
|
|
24
|
-
LLM_DEFAULT_PROVIDER=anthropic # anthropic | openai | ollama
|
|
25
|
-
|
|
26
|
-
# Anthropic (recommended)
|
|
27
|
-
LLM_ANTHROPIC_API_KEY= # sk-ant-...
|
|
28
|
-
|
|
29
|
-
# OpenAI
|
|
30
|
-
LLM_OPENAI_API_KEY= # sk-...
|
|
31
|
-
|
|
32
|
-
# Ollama (self-hosted, free)
|
|
33
|
-
LLM_OLLAMA_URL=http://localhost:11434
|
|
34
|
-
LLM_OLLAMA_MODEL=llama3.2
|
|
35
|
-
|
|
36
|
-
# -- Security [REQUIRED] -----------------------------------------------------
|
|
37
|
-
# Generate with: python3 -c "import secrets; print(secrets.token_urlsafe(64))"
|
|
38
|
-
SECURITY_JWT_SECRET_KEY=DEV-ONLY-b2d6d62536a6da9c2a40874fa86e108adce6d0b3228cd2349e476eeb4ae5f34a
|
|
39
|
-
|
|
40
|
-
# Generate with: python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
|
41
|
-
SECURITY_MASTER_ENCRYPTION_KEY=
|
|
42
|
-
|
|
43
|
-
# -- HIPAA Compliance (healthcare only) ---------------------------------------
|
|
44
|
-
# Set to true to enable automatic PHI routing, audit retention, etc.
|
|
45
|
-
# HIPAA_COMPLIANT=false
|
|
46
|
-
# PHI_PROVIDER_NAME=ollama
|
|
47
|
-
# PHI_MODEL=qwen2.5:7b
|
|
48
|
-
|
|
49
|
-
# -- Observability (optional) -------------------------------------------------
|
|
50
|
-
OTEL_ENABLED=false
|
|
51
|
-
# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
|
|
52
|
-
# OTEL_SERVICE_NAME=reflection
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# Reflection - Environment Configuration
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# Copy this file to .env and fill in your values:
|
|
5
|
+
# cp .env.example .env
|
|
6
|
+
#
|
|
7
|
+
# Required settings are marked with [REQUIRED]
|
|
8
|
+
# Everything else has sensible defaults
|
|
9
|
+
# =============================================================================
|
|
10
|
+
|
|
11
|
+
# -- General ------------------------------------------------------------------
|
|
12
|
+
ENVIRONMENT=production # development | staging | production
|
|
13
|
+
DEBUG=false
|
|
14
|
+
|
|
15
|
+
# -- Database [REQUIRED for production] ---------------------------------------
|
|
16
|
+
# SQLite is used automatically in development if this is not set
|
|
17
|
+
DATABASE_URL=postgresql+asyncpg://reflection:reflection@localhost:5432/reflection
|
|
18
|
+
|
|
19
|
+
# -- Redis [REQUIRED for production] ------------------------------------------
|
|
20
|
+
# In-memory fallback is used in development if this is not set
|
|
21
|
+
REDIS_URL=redis://localhost:6379/0
|
|
22
|
+
|
|
23
|
+
# -- LLM Providers (at least one required) ------------------------------------
|
|
24
|
+
LLM_DEFAULT_PROVIDER=anthropic # anthropic | openai | ollama
|
|
25
|
+
|
|
26
|
+
# Anthropic (recommended)
|
|
27
|
+
LLM_ANTHROPIC_API_KEY= # sk-ant-...
|
|
28
|
+
|
|
29
|
+
# OpenAI
|
|
30
|
+
LLM_OPENAI_API_KEY= # sk-...
|
|
31
|
+
|
|
32
|
+
# Ollama (self-hosted, free)
|
|
33
|
+
LLM_OLLAMA_URL=http://localhost:11434
|
|
34
|
+
LLM_OLLAMA_MODEL=llama3.2
|
|
35
|
+
|
|
36
|
+
# -- Security [REQUIRED] -----------------------------------------------------
|
|
37
|
+
# Generate with: python3 -c "import secrets; print(secrets.token_urlsafe(64))"
|
|
38
|
+
SECURITY_JWT_SECRET_KEY=DEV-ONLY-b2d6d62536a6da9c2a40874fa86e108adce6d0b3228cd2349e476eeb4ae5f34a
|
|
39
|
+
|
|
40
|
+
# Generate with: python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
|
41
|
+
SECURITY_MASTER_ENCRYPTION_KEY=
|
|
42
|
+
|
|
43
|
+
# -- HIPAA Compliance (healthcare only) ---------------------------------------
|
|
44
|
+
# Set to true to enable automatic PHI routing, audit retention, etc.
|
|
45
|
+
# HIPAA_COMPLIANT=false
|
|
46
|
+
# PHI_PROVIDER_NAME=ollama
|
|
47
|
+
# PHI_MODEL=qwen2.5:7b
|
|
48
|
+
|
|
49
|
+
# -- Observability (optional) -------------------------------------------------
|
|
50
|
+
OTEL_ENABLED=false
|
|
51
|
+
# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
|
|
52
|
+
# OTEL_SERVICE_NAME=reflection
|
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main, master, "feat/**"]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [main, master]
|
|
8
|
-
|
|
9
|
-
concurrency:
|
|
10
|
-
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
-
cancel-in-progress: true
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
lint:
|
|
15
|
-
name: Lint
|
|
16
|
-
runs-on: ubuntu-latest
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
|
|
20
|
-
- uses: actions/setup-python@v5
|
|
21
|
-
with:
|
|
22
|
-
python-version: "3.12"
|
|
23
|
-
|
|
24
|
-
- name: Install ruff
|
|
25
|
-
run: pip install ruff
|
|
26
|
-
|
|
27
|
-
- name: Ruff check
|
|
28
|
-
run: ruff check reflection/ reflection_core/
|
|
29
|
-
|
|
30
|
-
- name: Ruff format check
|
|
31
|
-
run: ruff format --check reflection/ reflection_core/
|
|
32
|
-
|
|
33
|
-
test:
|
|
34
|
-
name: Test (Python ${{ matrix.python-version }})
|
|
35
|
-
runs-on: ubuntu-latest
|
|
36
|
-
strategy:
|
|
37
|
-
matrix:
|
|
38
|
-
python-version: ["3.11", "3.12"]
|
|
39
|
-
steps:
|
|
40
|
-
- uses: actions/checkout@v4
|
|
41
|
-
|
|
42
|
-
- uses: actions/setup-python@v5
|
|
43
|
-
with:
|
|
44
|
-
python-version: ${{ matrix.python-version }}
|
|
45
|
-
|
|
46
|
-
- name: Install dependencies
|
|
47
|
-
run: |
|
|
48
|
-
pip install --upgrade pip
|
|
49
|
-
pip install -e ".[dev]"
|
|
50
|
-
|
|
51
|
-
- name: Run tests
|
|
52
|
-
run: pytest tests/ -q --tb=short
|
|
53
|
-
|
|
54
|
-
verify-imports:
|
|
55
|
-
name: Verify Imports
|
|
56
|
-
runs-on: ubuntu-latest
|
|
57
|
-
steps:
|
|
58
|
-
- uses: actions/checkout@v4
|
|
59
|
-
|
|
60
|
-
- uses: actions/setup-python@v5
|
|
61
|
-
with:
|
|
62
|
-
python-version: "3.12"
|
|
63
|
-
|
|
64
|
-
- name: Install Reflection
|
|
65
|
-
run: |
|
|
66
|
-
pip install --upgrade pip
|
|
67
|
-
pip install .
|
|
68
|
-
|
|
69
|
-
- name: Verify imports
|
|
70
|
-
run: |
|
|
71
|
-
python -c "import familiar; print(f'familiar {familiar.__version__}')"
|
|
72
|
-
python -c "import reflection; print(f'reflection {reflection.__version__}')"
|
|
73
|
-
|
|
74
|
-
docker:
|
|
75
|
-
name: Docker Build
|
|
76
|
-
runs-on: ubuntu-latest
|
|
77
|
-
steps:
|
|
78
|
-
- uses: actions/checkout@v4
|
|
79
|
-
|
|
80
|
-
- name: Build image
|
|
81
|
-
run: docker build -t reflection:ci --target production .
|
|
82
|
-
|
|
83
|
-
- name: Verify image runs
|
|
84
|
-
run: docker run --rm reflection:ci python -c "import reflection; print(f'v{reflection.__version__}')"
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master, "feat/**"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, master]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
lint:
|
|
15
|
+
name: Lint
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.12"
|
|
23
|
+
|
|
24
|
+
- name: Install ruff
|
|
25
|
+
run: pip install ruff
|
|
26
|
+
|
|
27
|
+
- name: Ruff check
|
|
28
|
+
run: ruff check reflection/ reflection_core/
|
|
29
|
+
|
|
30
|
+
- name: Ruff format check
|
|
31
|
+
run: ruff format --check reflection/ reflection_core/
|
|
32
|
+
|
|
33
|
+
test:
|
|
34
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
strategy:
|
|
37
|
+
matrix:
|
|
38
|
+
python-version: ["3.11", "3.12"]
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v4
|
|
41
|
+
|
|
42
|
+
- uses: actions/setup-python@v5
|
|
43
|
+
with:
|
|
44
|
+
python-version: ${{ matrix.python-version }}
|
|
45
|
+
|
|
46
|
+
- name: Install dependencies
|
|
47
|
+
run: |
|
|
48
|
+
pip install --upgrade pip
|
|
49
|
+
pip install -e ".[dev]"
|
|
50
|
+
|
|
51
|
+
- name: Run tests
|
|
52
|
+
run: pytest tests/ -q --tb=short
|
|
53
|
+
|
|
54
|
+
verify-imports:
|
|
55
|
+
name: Verify Imports
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
steps:
|
|
58
|
+
- uses: actions/checkout@v4
|
|
59
|
+
|
|
60
|
+
- uses: actions/setup-python@v5
|
|
61
|
+
with:
|
|
62
|
+
python-version: "3.12"
|
|
63
|
+
|
|
64
|
+
- name: Install Reflection
|
|
65
|
+
run: |
|
|
66
|
+
pip install --upgrade pip
|
|
67
|
+
pip install .
|
|
68
|
+
|
|
69
|
+
- name: Verify imports
|
|
70
|
+
run: |
|
|
71
|
+
python -c "import familiar; print(f'familiar {familiar.__version__}')"
|
|
72
|
+
python -c "import reflection; print(f'reflection {reflection.__version__}')"
|
|
73
|
+
|
|
74
|
+
docker:
|
|
75
|
+
name: Docker Build
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
steps:
|
|
78
|
+
- uses: actions/checkout@v4
|
|
79
|
+
|
|
80
|
+
- name: Build image
|
|
81
|
+
run: docker build -t reflection:ci --target production .
|
|
82
|
+
|
|
83
|
+
- name: Verify image runs
|
|
84
|
+
run: docker run --rm reflection:ci python -c "import reflection; print(f'v{reflection.__version__}')"
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
*.pyc
|
|
2
|
-
__pycache__/
|
|
3
|
-
*.egg-info/
|
|
4
|
-
dist/
|
|
5
|
-
build/
|
|
6
|
-
.eggs/
|
|
7
|
-
.env
|
|
8
|
-
*.db
|
|
9
|
-
.venv/
|
|
10
|
-
venv/
|
|
11
|
-
*.log
|
|
12
|
-
*.bak
|
|
13
|
-
.DS_Store
|
|
14
|
-
.pytest_cache/
|
|
15
|
-
.ruff_cache/
|
|
16
|
-
*.zip
|
|
17
|
-
*.docx
|
|
18
|
-
/*.html
|
|
1
|
+
*.pyc
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.egg-info/
|
|
4
|
+
dist/
|
|
5
|
+
build/
|
|
6
|
+
.eggs/
|
|
7
|
+
.env
|
|
8
|
+
*.db
|
|
9
|
+
.venv/
|
|
10
|
+
venv/
|
|
11
|
+
*.log
|
|
12
|
+
*.bak
|
|
13
|
+
.DS_Store
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
.ruff_cache/
|
|
16
|
+
*.zip
|
|
17
|
+
*.docx
|
|
18
|
+
/*.html
|