yapcad.package package
Subpackages
- yapcad.package.analysis package
- Submodules
- yapcad.package.analysis.base module
AnalysisAdapterAnalysisPlanAnalysisPlan.acceptanceAnalysisPlan.attachmentsAnalysisPlan.backendAnalysisPlan.backend_optionsAnalysisPlan.boundary_conditionsAnalysisPlan.descriptionAnalysisPlan.executionAnalysisPlan.geometryAnalysisPlan.kindAnalysisPlan.loadsAnalysisPlan.materialsAnalysisPlan.metadataAnalysisPlan.nameAnalysisPlan.normalized_backendAnalysisPlan.plan_idAnalysisPlan.raw
AnalysisResultExecutionConfigavailable_backends()get_backend()load_plan()register_backend()
- yapcad.package.analysis.calculix module
- yapcad.package.analysis.cli module
- yapcad.package.analysis.face_naming module
- yapcad.package.analysis.fenics module
- yapcad.package.analysis.gmsh_mesher module
GmshMesherMeshHintsMeshHints.element_sizeMeshHints.min_element_sizeMeshHints.max_element_sizeMeshHints.algorithm_2dMeshHints.algorithm_3dMeshHints.element_orderMeshHints.optimizeMeshHints.optimize_netgenMeshHints.refinement_fieldsMeshHints.geometry_toleranceMeshHints.recover_3dMeshHints.stl_fallbackMeshHints.algorithm_2dMeshHints.algorithm_3dMeshHints.element_orderMeshHints.element_sizeMeshHints.geometry_toleranceMeshHints.max_element_sizeMeshHints.min_element_sizeMeshHints.optimizeMeshHints.optimize_netgenMeshHints.recover_3dMeshHints.refinement_fieldsMeshHints.scale_factorMeshHints.use_stl
PhysicalGroupgmsh_available()mesh_solid()require_gmsh()
- yapcad.package.analysis.schema module
- yapcad.package.analysis.yapcad_native module
- Module contents
AnalysisAdapterAnalysisPlanAnalysisPlan.acceptanceAnalysisPlan.attachmentsAnalysisPlan.backendAnalysisPlan.backend_optionsAnalysisPlan.boundary_conditionsAnalysisPlan.descriptionAnalysisPlan.executionAnalysisPlan.geometryAnalysisPlan.kindAnalysisPlan.loadsAnalysisPlan.materialsAnalysisPlan.metadataAnalysisPlan.nameAnalysisPlan.normalized_backendAnalysisPlan.plan_idAnalysisPlan.raw
AnalysisResultByAreaSelectorByNormalSelectorByPositionSelectorCombinedSelectorComparisonOpExecutionConfigFaceInfoFaceNamerFaceSelectorGmshMesherMeshHintsMeshHints.element_sizeMeshHints.min_element_sizeMeshHints.max_element_sizeMeshHints.algorithm_2dMeshHints.algorithm_3dMeshHints.element_orderMeshHints.optimizeMeshHints.optimize_netgenMeshHints.refinement_fieldsMeshHints.geometry_toleranceMeshHints.recover_3dMeshHints.stl_fallbackMeshHints.algorithm_2dMeshHints.algorithm_3dMeshHints.element_orderMeshHints.element_sizeMeshHints.geometry_toleranceMeshHints.max_element_sizeMeshHints.min_element_sizeMeshHints.optimizeMeshHints.optimize_netgenMeshHints.recover_3dMeshHints.refinement_fieldsMeshHints.scale_factorMeshHints.use_stl
PhysicalGroupResultStatusSchemaErrorValidationKindValidationReportavailable_backends()back_faces()bottom_faces()faces_at_z_max()faces_at_z_min()front_faces()get_backend()gmsh_available()largest_face()left_faces()load_plan()mesh_solid()register_backend()right_faces()smallest_face()top_faces()validate_plan()validate_plan_file()validate_result()validate_result_file()
Submodules
yapcad.package.core module
Core .ycpkg packaging helpers.
- class yapcad.package.core.PackageManifest(root: Path, data: Dict[str, ~typing.Any]=<factory>, manifest_name: str = 'manifest.yaml')[source]
Bases:
objectWrapper around the manifest document.
- get_material(material_id: str) Dict[str, Any] | None[source]
Get a specific material definition by ID.
- classmethod load(package_path: Path | str) PackageManifest[source]
- yapcad.package.core.add_geometry_file(manifest: PackageManifest, source: Path | str, *, dest_relative: str | None = None, purpose: str | None = None, category: str = 'derived', overwrite: bool = False, metadata: Dict[str, Any] | None = None) Dict[str, Any][source]
Copy an external geometry file (e.g., STEP/STL) into the package and record it.
- Parameters:
manifest – Loaded manifest wrapper.
source – Path to the external file that should be bundled.
dest_relative – Optional relative destination path inside the package root. Defaults to
geometry/derived/<source.name>.purpose – Optional description stored alongside the entry.
category – Manifest section to update. Supported:
"derived"(default),"attachments".overwrite – Allow replacing an existing file at the target location.
metadata – Additional key/value pairs merged into the manifest entry.
- Returns:
The manifest entry dictionary that was inserted.
- yapcad.package.core.create_package_from_entities(entities: Sequence[list], target_dir: Path | str, *, name: str, version: str, description: str | None = None, author: str | None = None, units: str | None = None, materials: Dict[str, Dict[str, Any]] | None = None, generator: Dict[str, Any] | None = None, overwrite: bool = False, hash_algorithm: str = 'sha256') PackageManifest[source]
- yapcad.package.core.load_geometry(manifest: PackageManifest) List[list][source]
yapcad.package.signing module
Package signing and verification for yapCAD packages.
This module provides cryptographic signing and verification of .ycpkg packages using GPG or SSH keys. It enables individual contributors to sign packages without requiring a centralized authority.
- Usage:
from yapcad.package.signing import sign_package, verify_package
# Sign with GPG sign_package(“my_design.ycpkg”, method=”gpg”, key_id=”ABCD1234”)
# Sign with SSH sign_package(“my_design.ycpkg”, method=”ssh”, key_path=”~/.ssh/id_ed25519”)
# Verify result = verify_package(“my_design.ycpkg”) if result.is_valid:
print(f”Verified: {result.trusted_signers} trusted signatures”)
- class yapcad.package.signing.SignatureInfo(signer: str, method: SignatureMethod, key_id: str, timestamp: str, signature_file: str, status: VerificationStatus | None = None, error_message: str | None = None)[source]
Bases:
objectInformation about a single signature.
- method: SignatureMethod
- status: VerificationStatus | None = None
- class yapcad.package.signing.SignatureMethod(*values)[source]
Bases:
EnumSupported signature methods.
- GPG = 'gpg'
- SSH = 'ssh'
- exception yapcad.package.signing.SigningError[source]
Bases:
ExceptionError during signing operation.
- exception yapcad.package.signing.VerificationError[source]
Bases:
ExceptionError during verification operation.
- class yapcad.package.signing.VerificationResult(package_path: str, manifest_hash: str, signatures: List[SignatureInfo] = <factory>, errors: List[str] = <factory>, warnings: List[str] = <factory>)[source]
Bases:
objectResult of package verification.
- property overall_status: VerificationStatus
Overall verification status.
- signatures: List[SignatureInfo]
- class yapcad.package.signing.VerificationStatus(*values)[source]
Bases:
EnumVerification result status.
- ERROR = 'ERROR'
- INVALID = 'INVALID'
- VALID = 'VALID'
- VALID_UNTRUSTED = 'VALID_UNTRUSTED'
- yapcad.package.signing.list_signatures(package_path: str | Path) List[SignatureInfo][source]
List all signatures on a package.
- Parameters:
package_path – Path to .ycpkg package directory
- Returns:
List of SignatureInfo for each signature
- yapcad.package.signing.sign_package(package_path: str | Path, method: str | SignatureMethod = SignatureMethod.GPG, key_id: str | None = None, key_path: str | Path | None = None, add: bool = False, signer_name: str | None = None) SignatureInfo[source]
Sign a yapCAD package.
- Parameters:
package_path – Path to .ycpkg package directory
method – “gpg” or “ssh”
key_id – GPG key ID (for GPG signing)
key_path – Path to SSH private key (for SSH signing)
add – If True, add signature without removing existing ones
signer_name – Override signer name in signature entry
- Returns:
SignatureInfo for the new signature
- yapcad.package.signing.verify_package(package_path: str | Path, allowed_signers: str | Path | None = None, gpg_keyring: str | Path | None = None) VerificationResult[source]
Verify signatures on a yapCAD package.
- Parameters:
package_path – Path to .ycpkg package directory
allowed_signers – Path to SSH allowed_signers file
gpg_keyring – Path to custom GPG keyring
- Returns:
VerificationResult with status of all signatures
yapcad.package.validator module
Validation utilities for .ycpkg packages.
yapcad.package.viewer module
Interactive viewer for yapCAD .ycpkg packages.
Module contents
Public API for yapCAD .ycpkg package workflows.
- class yapcad.package.AnalysisAdapter[source]
Bases:
ABCBase class for solver adapters.
- abstractmethod run(manifest, plan: AnalysisPlan, workspace: Path, **kwargs: Any) AnalysisResult[source]
Execute the plan and return an
AnalysisResult.
- class yapcad.package.AnalysisPlan(plan_id: str, kind: str, backend: str, name: str | None = None, description: str | None = None, geometry: Dict[str, ~typing.Any]=<factory>, materials: Dict[str, ~typing.Any]=<factory>, loads: Dict[str, ~typing.Any]]=<factory>, boundary_conditions: Dict[str, ~typing.Any]]=<factory>, acceptance: Dict[str, ~typing.Any]=<factory>, backend_options: Dict[str, ~typing.Any]=<factory>, execution: ExecutionConfig = <factory>, attachments: Dict[str, ~typing.Any]]=<factory>, metadata: Dict[str, ~typing.Any]=<factory>, raw: Dict[str, ~typing.Any]=<factory>)[source]
Bases:
objectRepresentation of a validation/analysis plan loaded from YAML.
- execution: ExecutionConfig
- class yapcad.package.AnalysisResult(plan_id: str, status: str, metrics: Dict[str, ~typing.Any]=<factory>, summary: Dict[str, ~typing.Any]=<factory>, artifacts: Dict[str, ~typing.Any]]=<factory>, summary_path: Path | None = None, backend: str | None = None, timestamp: str | None = None, notes: str | None = None)[source]
Bases:
objectContainer for results emitted by analysis adapters.
- class yapcad.package.ExecutionConfig(mode: str = 'local', command: str | None = None, transport: str | None = None, host: str | None = None, workdir: str | None = None, env: Dict[str, str]=<factory>, options: Dict[str, ~typing.Any]=<factory>, license: Dict[str, ~typing.Any]=<factory>)[source]
Bases:
objectExecution context for an analysis plan.
- class yapcad.package.PackageManifest(root: Path, data: Dict[str, ~typing.Any]=<factory>, manifest_name: str = 'manifest.yaml')[source]
Bases:
objectWrapper around the manifest document.
- get_material(material_id: str) Dict[str, Any] | None[source]
Get a specific material definition by ID.
- classmethod load(package_path: Path | str) PackageManifest[source]
- class yapcad.package.SignatureInfo(signer: str, method: SignatureMethod, key_id: str, timestamp: str, signature_file: str, status: VerificationStatus | None = None, error_message: str | None = None)[source]
Bases:
objectInformation about a single signature.
- method: SignatureMethod
- status: VerificationStatus | None = None
- class yapcad.package.SignatureMethod(*values)[source]
Bases:
EnumSupported signature methods.
- GPG = 'gpg'
- SSH = 'ssh'
- class yapcad.package.VerificationResult(package_path: str, manifest_hash: str, signatures: List[SignatureInfo] = <factory>, errors: List[str] = <factory>, warnings: List[str] = <factory>)[source]
Bases:
objectResult of package verification.
- property overall_status: VerificationStatus
Overall verification status.
- signatures: List[SignatureInfo]
- class yapcad.package.VerificationStatus(*values)[source]
Bases:
EnumVerification result status.
- ERROR = 'ERROR'
- INVALID = 'INVALID'
- VALID = 'VALID'
- VALID_UNTRUSTED = 'VALID_UNTRUSTED'
- yapcad.package.add_geometry_file(manifest: PackageManifest, source: Path | str, *, dest_relative: str | None = None, purpose: str | None = None, category: str = 'derived', overwrite: bool = False, metadata: Dict[str, Any] | None = None) Dict[str, Any][source]
Copy an external geometry file (e.g., STEP/STL) into the package and record it.
- Parameters:
manifest – Loaded manifest wrapper.
source – Path to the external file that should be bundled.
dest_relative – Optional relative destination path inside the package root. Defaults to
geometry/derived/<source.name>.purpose – Optional description stored alongside the entry.
category – Manifest section to update. Supported:
"derived"(default),"attachments".overwrite – Allow replacing an existing file at the target location.
metadata – Additional key/value pairs merged into the manifest entry.
- Returns:
The manifest entry dictionary that was inserted.
- yapcad.package.analyze_package(package_path: Path | str, plan_path: Path | str, *, status: str = 'pending') Path[source]
Record analysis metadata for
plan_pathinsidepackage_path.This helper prepares the results directory, writes a
summary.jsonplaceholder, and updates the manifestvalidation.resultsblock.
- yapcad.package.create_package_from_entities(entities: Sequence[list], target_dir: Path | str, *, name: str, version: str, description: str | None = None, author: str | None = None, units: str | None = None, materials: Dict[str, Dict[str, Any]] | None = None, generator: Dict[str, Any] | None = None, overwrite: bool = False, hash_algorithm: str = 'sha256') PackageManifest[source]
- yapcad.package.list_signatures(package_path: str | Path) List[SignatureInfo][source]
List all signatures on a package.
- Parameters:
package_path – Path to .ycpkg package directory
- Returns:
List of SignatureInfo for each signature
- yapcad.package.load_analysis_plan(path: Path | str) AnalysisPlan
Load a YAML analysis plan and return the normalised
AnalysisPlan.
- yapcad.package.load_geometry(manifest: PackageManifest) List[list][source]
- yapcad.package.sign_package(package_path: str | Path, method: str | SignatureMethod = SignatureMethod.GPG, key_id: str | None = None, key_path: str | Path | None = None, add: bool = False, signer_name: str | None = None) SignatureInfo[source]
Sign a yapCAD package.
- Parameters:
package_path – Path to .ycpkg package directory
method – “gpg” or “ssh”
key_id – GPG key ID (for GPG signing)
key_path – Path to SSH private key (for SSH signing)
add – If True, add signature without removing existing ones
signer_name – Override signer name in signature entry
- Returns:
SignatureInfo for the new signature
- yapcad.package.validate_package(path: Path | str, *, strict: bool = False) Tuple[bool, List[str]][source]
Validate manifest and referenced artefacts.
Returns (is_valid, messages). Messages are strings with severity prefixes.
- yapcad.package.verify_package(package_path: str | Path, allowed_signers: str | Path | None = None, gpg_keyring: str | Path | None = None) VerificationResult[source]
Verify signatures on a yapCAD package.
- Parameters:
package_path – Path to .ycpkg package directory
allowed_signers – Path to SSH allowed_signers file
gpg_keyring – Path to custom GPG keyring
- Returns:
VerificationResult with status of all signatures