pythagoras 0.25.6__tar.gz → 0.25.8__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 (77) hide show
  1. {pythagoras-0.25.6 → pythagoras-0.25.8}/PKG-INFO +9 -4
  2. {pythagoras-0.25.6 → pythagoras-0.25.8}/README.md +8 -3
  3. {pythagoras-0.25.6 → pythagoras-0.25.8}/pyproject.toml +1 -1
  4. pythagoras-0.25.8/src/pythagoras/.DS_Store +0 -0
  5. pythagoras-0.25.8/src/pythagoras/_010_basic_portals/.DS_Store +0 -0
  6. pythagoras-0.25.8/src/pythagoras/_020_ordinary_code_portals/.DS_Store +0 -0
  7. pythagoras-0.25.8/src/pythagoras/_030_data_portals/.DS_Store +0 -0
  8. {pythagoras-0.25.6/src/pythagoras/_010_basic_portals → pythagoras-0.25.8/src/pythagoras/_040_logging_code_portals}/.DS_Store +0 -0
  9. {pythagoras-0.25.6/src/pythagoras/_020_ordinary_code_portals → pythagoras-0.25.8/src/pythagoras/_050_safe_code_portals}/.DS_Store +0 -0
  10. pythagoras-0.25.8/src/pythagoras/_060_autonomous_code_portals/.DS_Store +0 -0
  11. pythagoras-0.25.8/src/pythagoras/_070_protected_code_portals/.DS_Store +0 -0
  12. {pythagoras-0.25.6/src/pythagoras/_030_data_portals → pythagoras-0.25.8/src/pythagoras/_080_pure_code_portals}/.DS_Store +0 -0
  13. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_080_pure_code_portals/recursion_pre_validator.py +9 -5
  14. pythagoras-0.25.8/src/pythagoras/_090_swarming_portals/.DS_Store +0 -0
  15. pythagoras-0.25.8/src/pythagoras/_100_top_level_API/.DS_Store +0 -0
  16. pythagoras-0.25.8/src/pythagoras/_800_signatures_and_converters/.DS_Store +0 -0
  17. pythagoras-0.25.8/src/pythagoras/_900_project_stats_collector/.DS_Store +0 -0
  18. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/__init__.py +4 -1
  19. pythagoras-0.25.6/src/pythagoras/.DS_Store +0 -0
  20. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_010_basic_portals/__init__.py +0 -0
  21. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_010_basic_portals/basic_portal_core_classes.py +0 -0
  22. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_010_basic_portals/long_infoname.py +0 -0
  23. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_010_basic_portals/portal_tester.py +0 -0
  24. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_010_basic_portals/post_init_metaclass.py +0 -0
  25. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_020_ordinary_code_portals/__init__.py +0 -0
  26. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_020_ordinary_code_portals/code_normalizer.py +0 -0
  27. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_020_ordinary_code_portals/exceptions.py +0 -0
  28. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_020_ordinary_code_portals/function_processing.py +0 -0
  29. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_020_ordinary_code_portals/ordinary_decorator.py +0 -0
  30. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_020_ordinary_code_portals/ordinary_portal_core_classes.py +0 -0
  31. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_030_data_portals/__init__.py +0 -0
  32. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_030_data_portals/data_portal_core_classes.py +0 -0
  33. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_030_data_portals/ready_and_get.py +0 -0
  34. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_030_data_portals/storable_decorator.py +0 -0
  35. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/__init__.py +0 -0
  36. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/exception_processing_tracking.py +0 -0
  37. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/execution_environment_summary.py +0 -0
  38. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/kw_args.py +0 -0
  39. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/logging_decorator.py +0 -0
  40. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/logging_portal_core_classes.py +0 -0
  41. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/notebook_checker.py +0 -0
  42. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/output_capturer.py +0 -0
  43. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_040_logging_code_portals/uncaught_exceptions.py +0 -0
  44. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_050_safe_code_portals/__init__.py +0 -0
  45. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_050_safe_code_portals/safe_decorator.py +0 -0
  46. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_050_safe_code_portals/safe_portal_core_classes.py +0 -0
  47. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_060_autonomous_code_portals/__init__.py +0 -0
  48. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_060_autonomous_code_portals/autonomous_decorators.py +0 -0
  49. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_060_autonomous_code_portals/autonomous_portal_core_classes.py +0 -0
  50. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_060_autonomous_code_portals/names_usage_analyzer.py +0 -0
  51. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/__init__.py +0 -0
  52. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/basic_pre_validators.py +0 -0
  53. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/fn_arg_names_checker.py +0 -0
  54. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/list_flattener.py +0 -0
  55. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/package_manager.py +0 -0
  56. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/protected_decorators.py +0 -0
  57. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/protected_portal_core_classes.py +0 -0
  58. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/system_utils.py +0 -0
  59. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_070_protected_code_portals/validation_succesful_const.py +0 -0
  60. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_080_pure_code_portals/__init__.py +0 -0
  61. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_080_pure_code_portals/pure_core_classes.py +0 -0
  62. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_080_pure_code_portals/pure_decorator.py +0 -0
  63. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_090_swarming_portals/__init__.py +0 -0
  64. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_090_swarming_portals/output_suppressor.py +0 -0
  65. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_090_swarming_portals/swarming_portals.py +0 -0
  66. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_100_top_level_API/__init__.py +0 -0
  67. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_100_top_level_API/default_local_portal.py +0 -0
  68. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_100_top_level_API/top_level_API.py +0 -0
  69. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_800_signatures_and_converters/__init__.py +0 -0
  70. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_800_signatures_and_converters/base_16_32_convertors.py +0 -0
  71. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_800_signatures_and_converters/current_date_gmt_str.py +0 -0
  72. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_800_signatures_and_converters/hash_signatures.py +0 -0
  73. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_800_signatures_and_converters/node_signature.py +0 -0
  74. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_800_signatures_and_converters/random_signatures.py +0 -0
  75. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_900_project_stats_collector/__init__.py +0 -0
  76. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/_900_project_stats_collector/project_analyzer.py +0 -0
  77. {pythagoras-0.25.6 → pythagoras-0.25.8}/src/pythagoras/core/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pythagoras
3
- Version: 0.25.6
3
+ Version: 0.25.8
4
4
  Summary: Planet-scale distributed computing in Python.
5
5
  Keywords: cloud,ML,AI,serverless,distributed,parallel,machine-learning,deep-learning,pythagoras
6
6
  Author: Volodymyr (Vlad) Pavlov
@@ -57,9 +57,12 @@ Description-Content-Type: text/markdown
57
57
  # Pythagoras
58
58
 
59
59
  [![PyPI version](https://img.shields.io/pypi/v/Pythagoras.svg)](https://pypi.org/project/Pythagoras/)
60
- [![Python versions](https://img.shields.io/pypi/pyversions/Pythagoras.svg)](https://pypi.org/project/Pythagoras/)
61
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
62
- [![Downloads](https://static.pepy.tech/badge/Pythagoras)](https://pepy.tech/project/Pythagoras)
60
+ [![Python versions](https://img.shields.io/pypi/pyversions/Pythagoras.svg)](https://github.com/pythagoras-dev/Pythagoras)
61
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
62
+ [![Downloads](https://img.shields.io/pypi/dm/Pythagoras?color=blue)](https://pypistats.org/packages/Pythagoras)
63
+ [![Code style: pep8](https://img.shields.io/badge/code_style-pep8-blue.svg)](https://peps.python.org/pep-0008/)
64
+ [![Docstring Style: Google](https://img.shields.io/badge/docstrings_style-Google-blue)](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)
65
+
63
66
 
64
67
 
65
68
  Planet-scale distributed computing in Python.
@@ -97,6 +100,8 @@ preferred functional patterns, augmented by new capabilities.
97
100
 
98
101
  ## Videos
99
102
 
103
+ * [15-minute Demo](https://pythagoras.link/15-min-demo)
104
+
100
105
  * [Data Phoenix Webinar, August 27, 2025](https://youtu.be/eb6_atu1RQI) ([slides](https://docs.google.com/presentation/d/1fGBqnp0aqVHPJ-BYGYnUll1_TJI_WObAbEVX89Z3-yA))
101
106
 
102
107
 
@@ -1,9 +1,12 @@
1
1
  # Pythagoras
2
2
 
3
3
  [![PyPI version](https://img.shields.io/pypi/v/Pythagoras.svg)](https://pypi.org/project/Pythagoras/)
4
- [![Python versions](https://img.shields.io/pypi/pyversions/Pythagoras.svg)](https://pypi.org/project/Pythagoras/)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
- [![Downloads](https://static.pepy.tech/badge/Pythagoras)](https://pepy.tech/project/Pythagoras)
4
+ [![Python versions](https://img.shields.io/pypi/pyversions/Pythagoras.svg)](https://github.com/pythagoras-dev/Pythagoras)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
+ [![Downloads](https://img.shields.io/pypi/dm/Pythagoras?color=blue)](https://pypistats.org/packages/Pythagoras)
7
+ [![Code style: pep8](https://img.shields.io/badge/code_style-pep8-blue.svg)](https://peps.python.org/pep-0008/)
8
+ [![Docstring Style: Google](https://img.shields.io/badge/docstrings_style-Google-blue)](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html)
9
+
7
10
 
8
11
 
9
12
  Planet-scale distributed computing in Python.
@@ -41,6 +44,8 @@ preferred functional patterns, augmented by new capabilities.
41
44
 
42
45
  ## Videos
43
46
 
47
+ * [15-minute Demo](https://pythagoras.link/15-min-demo)
48
+
44
49
  * [Data Phoenix Webinar, August 27, 2025](https://youtu.be/eb6_atu1RQI) ([slides](https://docs.google.com/presentation/d/1fGBqnp0aqVHPJ-BYGYnUll1_TJI_WObAbEVX89Z3-yA))
45
50
 
46
51
 
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "pythagoras"
7
- version = "0.25.6"
7
+ version = "0.25.8"
8
8
  authors = [
9
9
  {name = "Volodymyr (Vlad) Pavlov", email = "vlpavlov@ieee.org"},
10
10
  ]
@@ -50,12 +50,17 @@ def _recursion_pre_validator(
50
50
  raise TypeError(f"Parameter '{param_name}' must be int, got {type(param_value).__name__}")
51
51
  if param_value < 0:
52
52
  raise ValueError(f"Parameter '{param_name}' must be non-negative, got {param_value}")
53
- if param_value in {0,1}:
53
+ if param_value in {0,1,2,3,4}:
54
54
  return pth.VALIDATION_SUCCESSFUL
55
-
55
+ unpacked_kwargs[param_name] = param_value - 1
56
+ result_addr = pth.PureFnExecutionResultAddr(
57
+ fn=fn, arguments=unpacked_kwargs)
58
+ if result_addr.ready:
59
+ return pth.VALIDATION_SUCCESSFUL
60
+ result = result_addr.call_signature
61
+
56
62
  # Binary search to find the smallest n where result_addr.ready is not True
57
- left, right = 2, param_value - 1
58
- result = pth.VALIDATION_SUCCESSFUL # Default result if all are ready
63
+ left, right = 2, param_value - 2
59
64
 
60
65
  while left <= right:
61
66
  mid = (left + right) // 2
@@ -72,7 +77,6 @@ def _recursion_pre_validator(
72
77
  # Result is ready, search in the right half
73
78
  left = mid + 1
74
79
 
75
-
76
80
  return result
77
81
 
78
82
 
@@ -33,6 +33,9 @@ from ._100_top_level_API import *
33
33
  from ._800_signatures_and_converters import *
34
34
 
35
35
  from importlib import metadata as _md
36
- __version__ = _md.version("pythagoras")
36
+ try:
37
+ __version__ = _md.version("pythagoras")
38
+ except _md.PackageNotFoundError:
39
+ __version__ = "unknown"
37
40
 
38
41
 
Binary file