simudyne-pulse 0.7.0.dev10__tar.gz → 0.7.0.dev12__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.
Files changed (26) hide show
  1. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/PKG-INFO +22 -3
  2. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/README.md +21 -2
  3. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/pyproject.toml +1 -1
  4. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/validation.py +18 -11
  5. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne_pulse.egg-info/PKG-INFO +22 -3
  6. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/tests/test_validation.py +12 -6
  7. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/LICENSE +0 -0
  8. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/setup.cfg +0 -0
  9. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/__init__.py +0 -0
  10. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/client.py +0 -0
  11. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/exceptions.py +0 -0
  12. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/__init__.py +0 -0
  13. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/api_keys.py +0 -0
  14. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/data.py +0 -0
  15. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/fix.py +0 -0
  16. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/fm.py +0 -0
  17. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/historical.py +0 -0
  18. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/profile.py +0 -0
  19. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/simulation.py +0 -0
  20. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne/resources/simulator_gym.py +0 -0
  21. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne_pulse.egg-info/SOURCES.txt +0 -0
  22. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne_pulse.egg-info/dependency_links.txt +0 -0
  23. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne_pulse.egg-info/requires.txt +0 -0
  24. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/src/simudyne_pulse.egg-info/top_level.txt +0 -0
  25. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/tests/test_new_resources.py +0 -0
  26. {simudyne_pulse-0.7.0.dev10 → simudyne_pulse-0.7.0.dev12}/tests/test_simulator_gym.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simudyne-pulse
3
- Version: 0.7.0.dev10
3
+ Version: 0.7.0.dev12
4
4
  Summary: Python SDK for the Simudyne Pulse synthetic market data API
5
5
  Author-email: Simudyne <support@simudyne.com>
6
6
  License-Expression: MIT
@@ -85,8 +85,27 @@ population. `sim_files` groups the same way.
85
85
  A plain list is one unnamed population and keeps the flat shape exactly as
86
86
  before. The historical day is measured once however many groups there are.
87
87
 
88
- `plot_all=True` draws everything the enabled areas can draw, not just the
89
- summaries.
88
+ `plots` is the only plot switch: unset draws nothing, `True` draws every
89
+ figure the enabled areas can draw, and a list draws just those ids. An area
90
+ switched off draws nothing either way.
91
+
92
+ | id | figure |
93
+ | --- | --- |
94
+ | `statistical.radar` | distance spider, one polygon per population |
95
+ | `statistical.distribution` | every metric's KDE |
96
+ | `statistical.distribution.{metric}` | one metric, e.g. `.spread` |
97
+ | `stylised_facts.overall` | the verdict table |
98
+ | `stylised_facts.fact` | every fact |
99
+ | `stylised_facts.fact.{name}` | one fact, e.g. `.heavy_tails` |
100
+ | `impact.response` | impact response by event type |
101
+ | `impact.event` | every event type |
102
+ | `impact.event.{type}` | one event type |
103
+ | `volume_correlation.levels` | level correlation heatmap |
104
+ | `volume_correlation.changes` | change correlation heatmap |
105
+ | `volume_correlation.overall` | both of the above |
106
+
107
+ Each returned figure carries the `id` it was asked for — match on that, not on
108
+ the filename.
90
109
 
91
110
  ### Working from a checkout
92
111
 
@@ -59,8 +59,27 @@ population. `sim_files` groups the same way.
59
59
  A plain list is one unnamed population and keeps the flat shape exactly as
60
60
  before. The historical day is measured once however many groups there are.
61
61
 
62
- `plot_all=True` draws everything the enabled areas can draw, not just the
63
- summaries.
62
+ `plots` is the only plot switch: unset draws nothing, `True` draws every
63
+ figure the enabled areas can draw, and a list draws just those ids. An area
64
+ switched off draws nothing either way.
65
+
66
+ | id | figure |
67
+ | --- | --- |
68
+ | `statistical.radar` | distance spider, one polygon per population |
69
+ | `statistical.distribution` | every metric's KDE |
70
+ | `statistical.distribution.{metric}` | one metric, e.g. `.spread` |
71
+ | `stylised_facts.overall` | the verdict table |
72
+ | `stylised_facts.fact` | every fact |
73
+ | `stylised_facts.fact.{name}` | one fact, e.g. `.heavy_tails` |
74
+ | `impact.response` | impact response by event type |
75
+ | `impact.event` | every event type |
76
+ | `impact.event.{type}` | one event type |
77
+ | `volume_correlation.levels` | level correlation heatmap |
78
+ | `volume_correlation.changes` | change correlation heatmap |
79
+ | `volume_correlation.overall` | both of the above |
80
+
81
+ Each returned figure carries the `id` it was asked for — match on that, not on
82
+ the filename.
64
83
 
65
84
  ### Working from a checkout
66
85
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "simudyne-pulse"
7
- version = "0.7.0-dev.10"
7
+ version = "0.7.0-dev.12"
8
8
  description = "Python SDK for the Simudyne Pulse synthetic market data API"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -64,8 +64,7 @@ _AREA_FLAGS = (
64
64
  #: needing the message stream; ``sample_period`` and ``match_generated_sample``
65
65
  #: set the grid the book is resampled onto; ``plots`` is False, True, or a list
66
66
  #: of plot ids.
67
- _EXTRA_FIELDS = ("lob", "sample_period", "match_generated_sample", "plots",
68
- "plot_all")
67
+ _EXTRA_FIELDS = ("lob", "sample_period", "match_generated_sample", "plots")
69
68
 
70
69
 
71
70
  def _frame_to_parquet(entry, index: int):
@@ -173,7 +172,6 @@ class ValidationResource:
173
172
  match_generated_sample=None,
174
173
  n_levels: int = 10,
175
174
  plots=None,
176
- plot_all: bool = False,
177
175
  ) -> dict:
178
176
  """Submit a validation job.
179
177
 
@@ -224,13 +222,23 @@ class ValidationResource:
224
222
  n_levels : int, default 10
225
223
  Book levels to measure over.
226
224
  plots : bool or list of str, optional
227
- ``None`` or ``False`` for none, ``True`` for every figure, or plot
228
- ids such as ``["statistical.radar", "stylised_facts.overall"]``.
229
- Rendered server-side; :meth:`get_job` writes them to disk.
230
- plot_all : bool, default False
231
- Draw everything the enabled areas can draw — every distribution and
232
- every stylised fact, not just the summaries. An area switched off
233
- still draws nothing, so this means "all of what ran".
225
+ ``None`` or ``False`` draws nothing, ``True`` draws every figure
226
+ the enabled areas can draw, and a list draws just those ids.
227
+ An area switched off draws nothing either way. Rendered
228
+ server-side; :meth:`get_job` writes them to disk. The ids are
229
+
230
+ - ``statistical.radar`` — the distance spider, one polygon per
231
+ population
232
+ - ``statistical.distribution`` — every metric's KDE;
233
+ ``statistical.distribution.{metric}`` for one, e.g. ``.spread``
234
+ - ``stylised_facts.overall`` — the verdict table
235
+ - ``stylised_facts.fact`` — every fact;
236
+ ``stylised_facts.fact.{name}`` for one, e.g. ``.heavy_tails``
237
+ - ``impact.response`` — impact response by event type
238
+ - ``impact.event`` — every event type; ``impact.event.{type}``
239
+ for one
240
+ - ``volume_correlation.levels``, ``volume_correlation.changes``,
241
+ or ``volume_correlation.overall`` for both
234
242
 
235
243
  Returns
236
244
  -------
@@ -274,7 +282,6 @@ class ValidationResource:
274
282
  sample_period=sample_period,
275
283
  match_generated_sample=match_generated_sample,
276
284
  plots=plots,
277
- plot_all=plot_all or None,
278
285
  )
279
286
 
280
287
  if sim_ids is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simudyne-pulse
3
- Version: 0.7.0.dev10
3
+ Version: 0.7.0.dev12
4
4
  Summary: Python SDK for the Simudyne Pulse synthetic market data API
5
5
  Author-email: Simudyne <support@simudyne.com>
6
6
  License-Expression: MIT
@@ -85,8 +85,27 @@ population. `sim_files` groups the same way.
85
85
  A plain list is one unnamed population and keeps the flat shape exactly as
86
86
  before. The historical day is measured once however many groups there are.
87
87
 
88
- `plot_all=True` draws everything the enabled areas can draw, not just the
89
- summaries.
88
+ `plots` is the only plot switch: unset draws nothing, `True` draws every
89
+ figure the enabled areas can draw, and a list draws just those ids. An area
90
+ switched off draws nothing either way.
91
+
92
+ | id | figure |
93
+ | --- | --- |
94
+ | `statistical.radar` | distance spider, one polygon per population |
95
+ | `statistical.distribution` | every metric's KDE |
96
+ | `statistical.distribution.{metric}` | one metric, e.g. `.spread` |
97
+ | `stylised_facts.overall` | the verdict table |
98
+ | `stylised_facts.fact` | every fact |
99
+ | `stylised_facts.fact.{name}` | one fact, e.g. `.heavy_tails` |
100
+ | `impact.response` | impact response by event type |
101
+ | `impact.event` | every event type |
102
+ | `impact.event.{type}` | one event type |
103
+ | `volume_correlation.levels` | level correlation heatmap |
104
+ | `volume_correlation.changes` | change correlation heatmap |
105
+ | `volume_correlation.overall` | both of the above |
106
+
107
+ Each returned figure carries the `id` it was asked for — match on that, not on
108
+ the filename.
90
109
 
91
110
  ### Working from a checkout
92
111
 
@@ -275,11 +275,17 @@ class TestNamedPopulations:
275
275
  assert "sim_groups" not in json.loads(client.calls[0][2]["data"]["config"])
276
276
 
277
277
 
278
- class TestPlotAll:
279
- def test_it_is_forwarded(self):
280
- client, _ = _run([{"job_id": "v1"}], plot_all=True)
281
- assert client.calls[0][2]["json"]["config"]["plot_all"] is True
278
+ class TestPlotEverything:
279
+ """plots says it all: there is no second way to ask for every figure."""
282
280
 
283
- def test_it_is_omitted_when_not_asked_for(self):
281
+ def test_true_is_forwarded(self):
282
+ client, _ = _run([{"job_id": "v1"}], plots=True)
283
+ assert client.calls[0][2]["json"]["config"]["plots"] is True
284
+
285
+ def test_nothing_is_sent_when_not_asked_for(self):
284
286
  client, _ = _run([{"job_id": "v1"}])
285
- assert "plot_all" not in client.calls[0][2]["json"]["config"]
287
+ assert "plots" not in client.calls[0][2]["json"]["config"]
288
+
289
+ def test_plot_all_is_gone(self):
290
+ with pytest.raises(TypeError):
291
+ _run([{"job_id": "v1"}], plot_all=True)