cutoptim 1.0.0__tar.gz → 1.3.0__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.
- {cutoptim-1.0.0 → cutoptim-1.3.0}/PKG-INFO +1 -1
- {cutoptim-1.0.0 → cutoptim-1.3.0}/cutoptim/__init__.py +1 -1
- {cutoptim-1.0.0 → cutoptim-1.3.0}/cutoptim/types_gen.py +52 -6
- {cutoptim-1.0.0 → cutoptim-1.3.0}/pyproject.toml +1 -1
- {cutoptim-1.0.0 → cutoptim-1.3.0}/.github/logo.png +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/.github/workflows/ci.yml +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/.github/workflows/release.yml +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/.gitignore +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/LICENSE +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/README.md +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/cutoptim/client.py +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/cutoptim/py.typed +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/cutoptim/webhooks.py +0 -0
- {cutoptim-1.0.0 → cutoptim-1.3.0}/tests/webhook-vector.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: cutoptim
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: Official client for the CutOptim Engine API — cutting optimization (2D panels, 1D linear, timber, true-shape nesting) over HTTPS.
|
|
5
5
|
Project-URL: Homepage, https://cutoptim.com/engine/reference
|
|
6
6
|
Project-URL: Source, https://github.com/cutoptim/engine-python
|
|
@@ -9,5 +9,5 @@ Standard library only (urllib, hmac). Types are generated from the OpenAPI docum
|
|
|
9
9
|
from .client import CutOptim, CutOptimError, is_job_accepted
|
|
10
10
|
from .webhooks import verify_webhook, SIGNATURE_HEADER
|
|
11
11
|
|
|
12
|
-
__version__ = "1.
|
|
12
|
+
__version__ = "1.3.0"
|
|
13
13
|
__all__ = ["CutOptim", "CutOptimError", "is_job_accepted", "verify_webhook", "SIGNATURE_HEADER", "__version__"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# GENERATED by scripts/gen-sdks.ts from the CutOptim Engine API OpenAPI document — DO NOT EDIT.
|
|
2
|
-
# contract 1 · spec sha256
|
|
2
|
+
# contract 1 · spec sha256 e29a45d3c07667cf676ceb46a7c24ec3203683e50f72ba25f0677ac4af140c71 · cutoptim 1.3.0
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from typing import Any, Dict, List, Literal, TypedDict, Union
|
|
@@ -358,6 +358,33 @@ class Part1D(_Part1DRequired, total=False):
|
|
|
358
358
|
priority: bool
|
|
359
359
|
material: str
|
|
360
360
|
meta: Dict[str, Any]
|
|
361
|
+
ends: "MitreEnds"
|
|
362
|
+
flip: Literal["none", "face", "edge", "any"]
|
|
363
|
+
depth: float
|
|
364
|
+
thickness: float
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
class _EndCutRequired(TypedDict):
|
|
368
|
+
angle: float
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
class EndCut(_EndCutRequired, total=False):
|
|
372
|
+
"""One end cut of a part, in degrees from square (0 = a square end), signed. The part is measured long point to long point (`length` is its overall length). A part whose two end cuts would cross inside its section (shorter than its leads) cannot be made: a 400 `invalid_request` naming `parts[i].ends` says how long it must at least be."""
|
|
373
|
+
bevel: float
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
class MitreEnds(TypedDict, total=False):
|
|
377
|
+
"""The angled ends of a part, read only with `options.mitrePairing`. Two parts of one section whose facing ends lie in one plane (after a turn `flip` allows) can be cut with ONE saw cut between them: the triangle between the long and the short point is not wasted. Without `mitrePairing` the ends are not used (a warning says so) and the part packs as its `length`."""
|
|
378
|
+
start: "EndCut"
|
|
379
|
+
end: "EndCut"
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
class SharedCut(TypedDict):
|
|
383
|
+
"""This part's far end is ONE saw cut shared with the next part on the bar. The next part starts at `pos + length − lead + kerfAlongAxis` computed from the rounded values shown (not one kerf after `pos + length`), and the shared wood is counted once in `yieldPct`."""
|
|
384
|
+
angle: float
|
|
385
|
+
bevel: float
|
|
386
|
+
kerfAlongAxis: float
|
|
387
|
+
lead: float
|
|
361
388
|
|
|
362
389
|
|
|
363
390
|
class _Stock1DRequired(TypedDict):
|
|
@@ -386,6 +413,7 @@ class Options1D(TypedDict, total=False):
|
|
|
386
413
|
minimizeCost: bool
|
|
387
414
|
respectStock: bool
|
|
388
415
|
minOffcut: float
|
|
416
|
+
mitrePairing: bool
|
|
389
417
|
|
|
390
418
|
|
|
391
419
|
class _Optimize1DRequestRequired(TypedDict):
|
|
@@ -412,6 +440,8 @@ class PartWood(_PartWoodRequired, total=False):
|
|
|
412
440
|
priority: bool
|
|
413
441
|
material: str
|
|
414
442
|
meta: Dict[str, Any]
|
|
443
|
+
ends: "MitreEnds"
|
|
444
|
+
flip: Literal["none", "face", "edge", "any"]
|
|
415
445
|
|
|
416
446
|
|
|
417
447
|
class _StockWoodRequired(TypedDict):
|
|
@@ -437,6 +467,7 @@ class OptionsWood(TypedDict, total=False):
|
|
|
437
467
|
minimizeCost: bool
|
|
438
468
|
respectStock: bool
|
|
439
469
|
minOffcut: float
|
|
470
|
+
mitrePairing: bool
|
|
440
471
|
|
|
441
472
|
|
|
442
473
|
class _OptimizeWoodRequestRequired(TypedDict):
|
|
@@ -450,8 +481,7 @@ class OptimizeWoodRequest(_OptimizeWoodRequestRequired, total=False):
|
|
|
450
481
|
include: List[Literal["cutPlan", "offcuts", "svg", "csv", "dxf", "labels", "planHash", "pdf", "labelsPdf"]]
|
|
451
482
|
|
|
452
483
|
|
|
453
|
-
class
|
|
454
|
-
"""One blade movement, in physically executable order (parent before children: you cannot crosscut a strip before you have ripped it off)."""
|
|
484
|
+
class _CutStepRequired(TypedDict):
|
|
455
485
|
sheet: int
|
|
456
486
|
step: int
|
|
457
487
|
axis: Literal["h", "v"]
|
|
@@ -460,6 +490,12 @@ class CutStep(TypedDict):
|
|
|
460
490
|
stage: int
|
|
461
491
|
|
|
462
492
|
|
|
493
|
+
class CutStep(_CutStepRequired, total=False):
|
|
494
|
+
"""One blade movement, in physically executable order (parent before children: you cannot crosscut a strip before you have ripped it off)."""
|
|
495
|
+
angle: float
|
|
496
|
+
bevel: float
|
|
497
|
+
|
|
498
|
+
|
|
463
499
|
class _PlacedPart2DRequired(TypedDict):
|
|
464
500
|
name: str
|
|
465
501
|
x: float
|
|
@@ -642,6 +678,8 @@ class _PlacedPart1DRequired(TypedDict):
|
|
|
642
678
|
|
|
643
679
|
class PlacedPart1D(_PlacedPart1DRequired, total=False):
|
|
644
680
|
meta: Dict[str, Any]
|
|
681
|
+
sharedCut: "SharedCut"
|
|
682
|
+
flipped: Literal["face", "edge", "roll"]
|
|
645
683
|
|
|
646
684
|
|
|
647
685
|
class _RodRequired(TypedDict):
|
|
@@ -657,7 +695,7 @@ class Rod(_RodRequired, total=False):
|
|
|
657
695
|
meta: Dict[str, Any]
|
|
658
696
|
|
|
659
697
|
|
|
660
|
-
class
|
|
698
|
+
class _Metrics1DRequired(TypedDict):
|
|
661
699
|
rodCount: int
|
|
662
700
|
yieldPct: float
|
|
663
701
|
placed: int
|
|
@@ -667,6 +705,10 @@ class Metrics1D(TypedDict):
|
|
|
667
705
|
toleranceAcceptedCount: int
|
|
668
706
|
|
|
669
707
|
|
|
708
|
+
class Metrics1D(_Metrics1DRequired, total=False):
|
|
709
|
+
sharedCuts: int
|
|
710
|
+
|
|
711
|
+
|
|
670
712
|
class Unplaced1D(TypedDict):
|
|
671
713
|
name: str
|
|
672
714
|
length: float
|
|
@@ -751,8 +793,7 @@ class WoodUnmatched(_WoodUnmatchedRequired, total=False):
|
|
|
751
793
|
material: str
|
|
752
794
|
|
|
753
795
|
|
|
754
|
-
class
|
|
755
|
-
"""Job-wide totals across every section."""
|
|
796
|
+
class _MetricsWoodRequired(TypedDict):
|
|
756
797
|
sectionCount: int
|
|
757
798
|
rodCount: int
|
|
758
799
|
yieldPct: float
|
|
@@ -763,6 +804,11 @@ class MetricsWood(TypedDict):
|
|
|
763
804
|
toleranceAcceptedCount: int
|
|
764
805
|
|
|
765
806
|
|
|
807
|
+
class MetricsWood(_MetricsWoodRequired, total=False):
|
|
808
|
+
"""Job-wide totals across every section."""
|
|
809
|
+
sharedCuts: int
|
|
810
|
+
|
|
811
|
+
|
|
766
812
|
class _OptimizeWoodResponseRequired(TypedDict):
|
|
767
813
|
engine: Literal["heuristic", "balanced"]
|
|
768
814
|
engineVersion: str
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cutoptim"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.3.0"
|
|
8
8
|
description = "Official client for the CutOptim Engine API — cutting optimization (2D panels, 1D linear, timber, true-shape nesting) over HTTPS."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|