specsolve 0.1.0__py3-none-any.whl

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.
Files changed (48) hide show
  1. specsolve/__init__.py +71 -0
  2. specsolve/api.py +744 -0
  3. specsolve/archive.py +172 -0
  4. specsolve/assumptions.py +82 -0
  5. specsolve/errors.py +175 -0
  6. specsolve/expressions.py +82 -0
  7. specsolve/frames.py +139 -0
  8. specsolve/lanes.py +147 -0
  9. specsolve/layout.py +216 -0
  10. specsolve/py.typed +0 -0
  11. specsolve/relational/__init__.py +16 -0
  12. specsolve/relational/collect.py +26 -0
  13. specsolve/relational/engines/__init__.py +10 -0
  14. specsolve/relational/engines/polars/__init__.py +6 -0
  15. specsolve/relational/engines/polars/assembly.py +678 -0
  16. specsolve/relational/engines/polars/attaching.py +115 -0
  17. specsolve/relational/engines/polars/compiler.py +681 -0
  18. specsolve/relational/engines/polars/coverage.py +220 -0
  19. specsolve/relational/engines/polars/engine.py +514 -0
  20. specsolve/relational/engines/polars/fragments.py +478 -0
  21. specsolve/relational/engines/polars/labels.py +222 -0
  22. specsolve/relational/engines/polars/predicates.py +437 -0
  23. specsolve/relational/engines/polars/readback.py +315 -0
  24. specsolve/relational/engines/polars/reindex.py +381 -0
  25. specsolve/relational/engines/polars/relations.py +219 -0
  26. specsolve/relational/engines/polars/scope.py +159 -0
  27. specsolve/relational/parquet.py +441 -0
  28. specsolve/relational/result.py +829 -0
  29. specsolve/relational/sinks/README.md +200 -0
  30. specsolve/relational/sinks/__init__.py +118 -0
  31. specsolve/relational/sinks/capabilities.py +126 -0
  32. specsolve/relational/sinks/handoff.py +419 -0
  33. specsolve/relational/sinks/solvers/__init__.py +84 -0
  34. specsolve/relational/sinks/solvers/base.py +366 -0
  35. specsolve/relational/sinks/solvers/gurobi.py +538 -0
  36. specsolve/relational/sinks/solvers/highs.py +419 -0
  37. specsolve/relational/sinks/solvers/xpress.py +359 -0
  38. specsolve/relational/sinks/writers/__init__.py +51 -0
  39. specsolve/relational/sinks/writers/base.py +51 -0
  40. specsolve/relational/sinks/writers/lp_file.py +280 -0
  41. specsolve/relational/sinks/writers/mps_file.py +211 -0
  42. specsolve/relational/status.py +71 -0
  43. specsolve/sources.py +622 -0
  44. specsolve/strategy.py +1916 -0
  45. specsolve-0.1.0.dist-info/METADATA +176 -0
  46. specsolve-0.1.0.dist-info/RECORD +48 -0
  47. specsolve-0.1.0.dist-info/WHEEL +4 -0
  48. specsolve-0.1.0.dist-info/licenses/LICENSE +21 -0
specsolve/__init__.py ADDED
@@ -0,0 +1,71 @@
1
+ """Declarative optimisation: YAML math on a streaming engine.
2
+
3
+ Specs build relationally on polars and stream to the solver — see
4
+ docs/about/architecture.md.
5
+
6
+ Example::
7
+
8
+ import specsolve as sps
9
+
10
+ result = sps.solve('spec.yaml', {'p_max': 'p_max.parquet', 'load': 'load.parquet'})
11
+ result.objective
12
+ result.primal('p') # tidy polars.DataFrame
13
+ result.to_dataarray('p') # labelled, for array post-processing
14
+
15
+ ``__version__`` reads the installed metadata: the git tag is the source of
16
+ truth, and hatch-vcs bakes it in at build time. A source tree with nothing
17
+ installed reads ``0.0.0``.
18
+ """
19
+
20
+ from importlib.metadata import PackageNotFoundError as _PackageNotFoundError
21
+ from importlib.metadata import version as _installed_version
22
+
23
+ from specsolve.api import Model, build, check, evaluate, load_result, scan_result, solve, write
24
+ from specsolve.archive import SolveArchive, SweepArchive, load_archive, scan_archive
25
+ from specsolve.errors import (
26
+ DataError,
27
+ DimensionError,
28
+ LanguageError,
29
+ LayoutError,
30
+ NoSolutionError,
31
+ SchemaError,
32
+ SpecsolveError,
33
+ SpecsolveWarning,
34
+ )
35
+ from specsolve.relational.result import Result
36
+ from specsolve.strategy import EachCoordinate, EachWindow, Sweep, load_sweep, scan_sweep, solve_over
37
+
38
+ __all__ = [
39
+ 'DataError',
40
+ 'DimensionError',
41
+ 'EachCoordinate',
42
+ 'EachWindow',
43
+ 'LanguageError',
44
+ 'LayoutError',
45
+ 'Model',
46
+ 'NoSolutionError',
47
+ 'Result',
48
+ 'SchemaError',
49
+ 'SolveArchive',
50
+ 'SpecsolveError',
51
+ 'SpecsolveWarning',
52
+ 'Sweep',
53
+ 'SweepArchive',
54
+ 'build',
55
+ 'check',
56
+ 'evaluate',
57
+ 'load_archive',
58
+ 'load_result',
59
+ 'load_sweep',
60
+ 'scan_archive',
61
+ 'scan_result',
62
+ 'scan_sweep',
63
+ 'solve',
64
+ 'solve_over',
65
+ 'write',
66
+ ]
67
+
68
+ try:
69
+ __version__ = _installed_version('specsolve')
70
+ except _PackageNotFoundError:
71
+ __version__ = '0.0.0'