mayutils 1.2.39__tar.gz → 1.2.41__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 (66) hide show
  1. {mayutils-1.2.39 → mayutils-1.2.41}/PKG-INFO +1 -1
  2. {mayutils-1.2.39 → mayutils-1.2.41}/pyproject.toml +1 -1
  3. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/plotly/charts.py +22 -34
  4. {mayutils-1.2.39 → mayutils-1.2.41}/LICENSE +0 -0
  5. {mayutils-1.2.39 → mayutils-1.2.41}/README.md +0 -0
  6. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/__init__.py +0 -0
  7. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/core/__init__.py +0 -0
  8. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/core/constants.py +0 -0
  9. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/__init__.py +0 -0
  10. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/analysis/__init__.py +0 -0
  11. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/cache/.gitkeep +0 -0
  12. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/live.py +0 -0
  13. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/local.py +0 -0
  14. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/queries/.gitkeep +0 -0
  15. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/queries/__init__.py +0 -0
  16. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/queries/examples/.gitkeep +0 -0
  17. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/data/read.py +0 -0
  18. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/__init__.py +0 -0
  19. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/benchmarking.py +0 -0
  20. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/databases.py +0 -0
  21. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/filesystem.py +0 -0
  22. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/logging.py +0 -0
  23. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/memoisation.py +0 -0
  24. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/oauth.py +0 -0
  25. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/secrets.py +0 -0
  26. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/environment/webdrivers.py +0 -0
  27. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/export/__init__.py +0 -0
  28. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/export/html.py +0 -0
  29. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/export/images.py +0 -0
  30. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/export/pdf.py +0 -0
  31. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/export/slides.py +0 -0
  32. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/interfaces/__init__.py +0 -0
  33. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/interfaces/google.py +0 -0
  34. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/interfaces/microsoft.py +0 -0
  35. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/interfaces/streamlit.py +0 -0
  36. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/mathematics/__init__.py +0 -0
  37. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/mathematics/numba.py +0 -0
  38. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/mathematics/numpy.py +0 -0
  39. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/__init__.py +0 -0
  40. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/classes.py +0 -0
  41. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/colours.py +0 -0
  42. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/dataframes.py +0 -0
  43. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/datetime.py +0 -0
  44. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/decorators.py +0 -0
  45. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/dictionaries.py +0 -0
  46. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/functions.py +0 -0
  47. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/hashing.py +0 -0
  48. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/numbers.py +0 -0
  49. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/strings.py +0 -0
  50. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/objects/types.py +0 -0
  51. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/py.typed +0 -0
  52. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/scripts/__init__.py +0 -0
  53. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/scripts/clear_cache.py +0 -0
  54. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/scripts/versioning.py +0 -0
  55. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/testing/__init__.py +0 -0
  56. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/__init__.py +0 -0
  57. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/console.py +0 -0
  58. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/__init__.py +0 -0
  59. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/combine.py +0 -0
  60. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/matplotlib/__init__.py +0 -0
  61. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/matplotlib/template.py +0 -0
  62. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/plotly/__init__.py +0 -0
  63. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/plotly/templates.py +0 -0
  64. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/plotly/traces.py +0 -0
  65. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/graphs/plotly/utilities.py +0 -0
  66. {mayutils-1.2.39 → mayutils-1.2.41}/src/mayutils/visualisation/notebook.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: mayutils
3
- Version: 1.2.39
3
+ Version: 1.2.41
4
4
  Summary: Utilities for Python from Mayuran Visakan
5
5
  Author: Mayuran Visakan
6
6
  Author-email: Mayuran Visakan <mayuran.k.v@gmail.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mayutils"
3
- version = "1.2.39"
3
+ version = "1.2.41"
4
4
  description = "Utilities for Python from Mayuran Visakan"
5
5
  authors = [
6
6
  { name = "Mayuran Visakan", email = "mayuran.k.v@gmail.com" }
@@ -1325,57 +1325,45 @@ class Plot(go.Figure):
1325
1325
  y_max: Optional[float] = None,
1326
1326
  y_padding: float = 0.05,
1327
1327
  ) -> Self:
1328
- for yaxis in [prop for prop in self.layout if prop.startswith("yaxis")]:
1329
- yaxis_suffix = yaxis.removeprefix("yaxis")
1330
-
1331
- trace_limits = np.asarray(
1328
+ yaxes = sorted([prop for prop in self.layout if prop.startswith("yaxis")])
1329
+ trace_limits_full = {
1330
+ yaxis: np.asarray(
1332
1331
  [
1333
1332
  (
1334
1333
  np.nanmin(visible_y)
1335
- if not (np.isnan(visible_y := trace.y[visible_mask])).all()
1334
+ if not np.isnan(visible_y := trace.y[visible_mask]).all()
1336
1335
  and not visible_y.shape == (0,)
1337
1336
  else np.nan,
1338
1337
  np.nanmax(visible_y)
1339
- if not (np.isnan(visible_y)).all()
1340
- and not visible_y.shape == (0,)
1338
+ if not np.isnan(visible_y).all() and not visible_y.shape == (0,)
1341
1339
  else np.nan,
1342
1340
  )
1343
1341
  for trace in self.data
1344
- if (trace.visible is None or trace.visible is True)
1342
+ if trace.visible in [None, True]
1345
1343
  and isinstance(trace.y, np.ndarray)
1346
- and trace.yaxis == f"y{yaxis_suffix}"
1344
+ and getattr(
1345
+ self.layout, trace.yaxis.replace("y", "yaxis")
1346
+ ).matches.replace("y", "yaxis")
1347
+ == yaxis
1347
1348
  and (
1348
1349
  visible_mask := (trace.x < self.layout.xaxis.range[1]) # type: ignore
1349
1350
  & (trace.x > self.layout.xaxis.range[0]) # type: ignore
1350
1351
  ).any()
1351
1352
  ]
1352
1353
  )
1354
+ for yaxis in yaxes
1355
+ }
1353
1356
 
1354
- traces_min = (
1355
- np.nanmin(trace_limits) if not np.isnan(trace_limits).all() else None
1357
+ trace_limits = {
1358
+ f"{yaxis}_range": (
1359
+ np.nanmin(limits[:, 0]) if not np.isnan(limits[:, 0]).all() else None,
1360
+ np.nanmax(limits[:, 1]) if not np.isnan(limits[:, 1]).all() else None,
1356
1361
  )
1357
- traces_max = (
1358
- np.nanmax(trace_limits) if not np.isnan(trace_limits).all() else None
1359
- )
1360
-
1361
- if traces_min is not None and traces_max is not None:
1362
- span = traces_max - traces_min
1363
-
1364
- y_range = (
1365
- (traces_min - span * y_padding).clip(min=y_min),
1366
- (traces_max + span * y_padding).clip(max=y_max),
1367
- )
1368
- else:
1369
- y_range = (
1370
- traces_min * (1 - y_padding) if traces_min is not None else None,
1371
- traces_max * (1 + y_padding) if traces_max is not None else None,
1372
- )
1362
+ for yaxis, limits in trace_limits_full.items()
1363
+ if len(limits) > 0
1364
+ }
1373
1365
 
1374
- self.update_layout(
1375
- {
1376
- f"yaxis{yaxis_suffix}_range": y_range,
1377
- }
1378
- )
1366
+ self.update_layout(trace_limits)
1379
1367
 
1380
1368
  return self
1381
1369
 
@@ -1790,8 +1778,8 @@ def get_domains(
1790
1778
  gap = (1 - spacing * (num_axes - 1)) / num_axes
1791
1779
  domains = [
1792
1780
  [
1793
- min((gap + spacing) * idx * fraction, 0),
1794
- max((gap + spacing) * idx * fraction + gap * fraction, 1),
1781
+ max((gap + spacing) * idx * fraction, 0),
1782
+ min((gap + spacing) * idx * fraction + gap * fraction, 1),
1795
1783
  ]
1796
1784
  for idx in range(num_axes)
1797
1785
  ]
File without changes
File without changes