Revert PinScope overlay copies from periscope/src (2.46.0).

Remove stamped near-identical modules so inherited code loads from
dependency/ again. Keep native finding engine, PCB/placement, review,
job workspace, datasheet extract, via-vs-pad parser, logo, and local JWT.
This commit is contained in:
2026-09-20 18:30:21 +02:00
parent 2f2e35e802
commit 5a1d31ce7b
73 changed files with 13 additions and 22624 deletions
-35
View File
@@ -1,35 +0,0 @@
"""Native overlay: graph, parsers, models, taxonomy resolve from periscope/src."""
from __future__ import annotations
from pathlib import Path
import backend.periscopex.graph as graph
import backend.periscopex.models as models
import backend.periscopex.parsers as parsers
import backend.periscopex.parsers_edif as parsers_edif
import backend.periscopex.taxonomy as taxonomy
def _src_file(mod) -> Path:
return Path(mod.__file__).resolve()
def test_graph_parsers_models_taxonomy_load_from_src():
root = Path(__file__).resolve().parents[1]
src = (root / "periscope" / "src" / "backend" / "periscopex").resolve()
for mod, name in (
(graph, "graph.py"),
(models, "models.py"),
(parsers, "parsers.py"),
(parsers_edif, "parsers_edif.py"),
(taxonomy, "taxonomy.py"),
):
path = _src_file(mod)
assert path == src / name, path
assert "Native Periscope overlay" in path.read_text(encoding="utf-8")[:400]
def test_taxonomy_dir_points_at_json_tree():
ic = taxonomy.TAXONOMY_DIR / "ic.json"
assert ic.is_file(), taxonomy.TAXONOMY_DIR
-73
View File
@@ -1,73 +0,0 @@
"""Native overlay: leftover app/entry modules resolve from src."""
from __future__ import annotations
from pathlib import Path
import backend.config as config
import backend.main as main
import backend.middleware.auth as middleware_auth
import backend.pipeline_worker as pipeline_worker
import backend.routers.admin as routers_admin
import backend.routers.auth as routers_auth
import backend.routers.contact as routers_contact
import backend.routers.deps as routers_deps
import backend.routers.feedback as routers_feedback
import backend.routers.impedance as routers_impedance
import backend.routers.pipeline as routers_pipeline
import backend.routers.projects as routers_projects
import backend.routers.reports as routers_reports
import backend.routers.survey as routers_survey
import backend.services.admin_settings as admin_settings
import backend.services.event_bridge as event_bridge
import backend.services.job_runner as job_runner
import backend.services.projects as projects
def _src(mod) -> Path:
return Path(mod.__file__).resolve()
def _overlay_text(mod) -> str:
return _src(mod).read_text(encoding="utf-8")[:500]
def test_leftover_app_modules_load_from_src():
root = Path(__file__).resolve().parents[1]
be = (root / "periscope" / "src" / "backend").resolve()
for mod, rel in (
(main, "main.py"),
(config, "config.py"),
(pipeline_worker, "pipeline_worker.py"),
(middleware_auth, "middleware/auth.py"),
(job_runner, "services/job_runner.py"),
(event_bridge, "services/event_bridge.py"),
(projects, "services/projects.py"),
(admin_settings, "services/admin_settings.py"),
(routers_admin, "routers/admin.py"),
(routers_contact, "routers/contact.py"),
(routers_deps, "routers/deps.py"),
(routers_feedback, "routers/feedback.py"),
(routers_pipeline, "routers/pipeline.py"),
(routers_projects, "routers/projects.py"),
(routers_reports, "routers/reports.py"),
(routers_survey, "routers/survey.py"),
):
path = _src(mod)
assert path == be / rel, path
assert "Native Periscope overlay" in _overlay_text(mod)
def test_native_auth_and_impedance_routers_untouched():
root = Path(__file__).resolve().parents[1]
be = (root / "periscope" / "src" / "backend").resolve()
assert _src(routers_auth) == be / "routers" / "auth.py"
assert _src(routers_impedance) == be / "routers" / "impedance.py"
assert "Local Periscope auth endpoints" in _src(routers_auth).read_text(encoding="utf-8")[:200]
def test_main_still_exports_fastapi_app():
from fastapi import FastAPI
assert isinstance(main.app, FastAPI)
assert main.LOCAL_DEV_USER == "local"
-75
View File
@@ -1,75 +0,0 @@
"""Native overlay: leftover PinScope modules src still imported resolve from src."""
from __future__ import annotations
from pathlib import Path
import backend.periscopex.bom_summary as bom_summary
import backend.periscopex.derating as derating
import backend.periscopex.led_current_check as led_current_check
import backend.periscopex.pin_function_tokens as pin_function_tokens
import backend.periscopex.pin_mux_check as pin_mux_check
import backend.periscopex.resolve_passives as resolve_passives
import backend.periscopex.utils as utils
import backend.periscopex.validate as validate
import backend.periscopex.validation_tools as validation_tools
import backend.services.extraction as extraction
import backend.services.pipeline as pipeline
import backend.services.validation as validation
from backend.repo_paths import skills_dir, taxonomy_dir
def _src(mod) -> Path:
return Path(mod.__file__).resolve()
def test_leftover_periscopex_modules_load_from_src():
root = Path(__file__).resolve().parents[1]
src = (root / "periscope" / "src" / "backend" / "periscopex").resolve()
for mod, name in (
(utils, "utils.py"),
(resolve_passives, "resolve_passives.py"),
(derating, "derating.py"),
(bom_summary, "bom_summary.py"),
(pin_mux_check, "pin_mux_check.py"),
(led_current_check, "led_current_check.py"),
(pin_function_tokens, "pin_function_tokens.py"),
(validate, "validate.py"),
(validation_tools, "validation_tools.py"),
):
path = _src(mod)
assert path == src / name, path
assert "Native Periscope overlay" in path.read_text(encoding="utf-8")[:500]
def test_pipeline_extraction_validation_load_from_src():
root = Path(__file__).resolve().parents[1]
src = (root / "periscope" / "src" / "backend" / "services").resolve()
for mod, name in (
(pipeline, "pipeline.py"),
(extraction, "extraction.py"),
(validation, "validation.py"),
):
path = _src(mod)
assert path == src / name, path
assert "Native Periscope overlay" in path.read_text(encoding="utf-8")[:500]
def test_pipeline_still_reexports_job_workspace():
from backend.services.job_workspace import EventBroker, PipelineWorkspace
assert pipeline.EventBroker is EventBroker
assert pipeline.PipelineWorkspace is PipelineWorkspace
assert pipeline.set_broker.__name__ == "set_broker"
def test_native_taxonomy_and_skills_trees():
root = Path(__file__).resolve().parents[1]
tax = taxonomy_dir()
skills = skills_dir()
assert (tax / "ic.json").is_file(), tax
assert (skills / "extract-pintable" / "SKILL.md").is_file(), skills
# Prefer src copies when not running in the Docker /app layout.
if not Path("/app/taxonomy").is_dir():
assert tax == (root / "periscope" / "src" / "taxonomy").resolve()
assert skills == (root / "periscope" / "src" / "skills").resolve()
@@ -1,64 +0,0 @@
"""Native overlay: leftover services src still imports resolve from src."""
from __future__ import annotations
from pathlib import Path
import backend.services.api_logs as api_logs
import backend.services.billing_hook as billing_hook
import backend.services.cost_estimator as cost_estimator
import backend.services.datasheet_store as datasheet_store
import backend.services.dedupe_findings as dedupe_findings
import backend.services.digikey as digikey
import backend.services.email as email
import backend.services.normalize_findings as normalize_findings
import backend.services.purple_parts as purple_parts
import backend.services.storage as storage
import backend.services.llm.base as llm_base
import backend.services.llm.factory as llm_factory
import backend.services.llm.types as llm_types
def _src(mod) -> Path:
return Path(mod.__file__).resolve()
def test_leftover_services_load_from_src():
root = Path(__file__).resolve().parents[1]
svc = (root / "periscope" / "src" / "backend" / "services").resolve()
for mod, name in (
(api_logs, "api_logs.py"),
(normalize_findings, "normalize_findings.py"),
(dedupe_findings, "dedupe_findings.py"),
(billing_hook, "billing_hook.py"),
(datasheet_store, "datasheet_store.py"),
(cost_estimator, "cost_estimator.py"),
(storage, "storage.py"),
(purple_parts, "purple_parts.py"),
(email, "email.py"),
(digikey, "digikey.py"),
):
path = _src(mod)
assert path == svc / name, path
assert "Native Periscope overlay" in path.read_text(encoding="utf-8")[:500]
def test_leftover_llm_factory_types_base_load_from_src():
root = Path(__file__).resolve().parents[1]
llm = (root / "periscope" / "src" / "backend" / "services" / "llm").resolve()
for mod, name in (
(llm_factory, "factory.py"),
(llm_types, "types.py"),
(llm_base, "base.py"),
):
path = _src(mod)
assert path == llm / name, path
assert "Native Periscope overlay" in path.read_text(encoding="utf-8")[:500]
def test_billing_hook_still_null_without_stripe():
from backend.services.billing_hook import InsufficientCredits, get_billing
assert billing_hook.InsufficientCredits is InsufficientCredits
billing = get_billing()
assert billing.__class__.__name__ in {"NullBilling", "CreditsBilling"}