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:
@@ -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
|
||||
@@ -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"
|
||||
@@ -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"}
|
||||
Reference in New Issue
Block a user