pythagoras 0.25.6__tar.gz → 0.25.7__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.7}/PKG-INFO +3 -1
  2. {pythagoras-0.25.6 → pythagoras-0.25.7}/README.md +2 -0
  3. {pythagoras-0.25.6 → pythagoras-0.25.7}/pyproject.toml +1 -1
  4. pythagoras-0.25.7/src/pythagoras/.DS_Store +0 -0
  5. pythagoras-0.25.7/src/pythagoras/_010_basic_portals/.DS_Store +0 -0
  6. pythagoras-0.25.7/src/pythagoras/_020_ordinary_code_portals/.DS_Store +0 -0
  7. pythagoras-0.25.7/src/pythagoras/_030_data_portals/.DS_Store +0 -0
  8. {pythagoras-0.25.6/src/pythagoras/_010_basic_portals → pythagoras-0.25.7/src/pythagoras/_040_logging_code_portals}/.DS_Store +0 -0
  9. {pythagoras-0.25.6/src/pythagoras/_020_ordinary_code_portals → pythagoras-0.25.7/src/pythagoras/_050_safe_code_portals}/.DS_Store +0 -0
  10. pythagoras-0.25.7/src/pythagoras/_060_autonomous_code_portals/.DS_Store +0 -0
  11. pythagoras-0.25.7/src/pythagoras/_070_protected_code_portals/.DS_Store +0 -0
  12. {pythagoras-0.25.6/src/pythagoras/_030_data_portals → pythagoras-0.25.7/src/pythagoras/_080_pure_code_portals}/.DS_Store +0 -0
  13. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_080_pure_code_portals/recursion_pre_validator.py +9 -5
  14. pythagoras-0.25.7/src/pythagoras/_090_swarming_portals/.DS_Store +0 -0
  15. pythagoras-0.25.7/src/pythagoras/_100_top_level_API/.DS_Store +0 -0
  16. pythagoras-0.25.7/src/pythagoras/_800_signatures_and_converters/.DS_Store +0 -0
  17. pythagoras-0.25.7/src/pythagoras/_900_project_stats_collector/.DS_Store +0 -0
  18. pythagoras-0.25.6/src/pythagoras/.DS_Store +0 -0
  19. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_010_basic_portals/__init__.py +0 -0
  20. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_010_basic_portals/basic_portal_core_classes.py +0 -0
  21. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_010_basic_portals/long_infoname.py +0 -0
  22. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_010_basic_portals/portal_tester.py +0 -0
  23. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_010_basic_portals/post_init_metaclass.py +0 -0
  24. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_020_ordinary_code_portals/__init__.py +0 -0
  25. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_020_ordinary_code_portals/code_normalizer.py +0 -0
  26. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_020_ordinary_code_portals/exceptions.py +0 -0
  27. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_020_ordinary_code_portals/function_processing.py +0 -0
  28. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_020_ordinary_code_portals/ordinary_decorator.py +0 -0
  29. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_020_ordinary_code_portals/ordinary_portal_core_classes.py +0 -0
  30. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_030_data_portals/__init__.py +0 -0
  31. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_030_data_portals/data_portal_core_classes.py +0 -0
  32. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_030_data_portals/ready_and_get.py +0 -0
  33. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_030_data_portals/storable_decorator.py +0 -0
  34. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/__init__.py +0 -0
  35. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/exception_processing_tracking.py +0 -0
  36. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/execution_environment_summary.py +0 -0
  37. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/kw_args.py +0 -0
  38. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/logging_decorator.py +0 -0
  39. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/logging_portal_core_classes.py +0 -0
  40. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/notebook_checker.py +0 -0
  41. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/output_capturer.py +0 -0
  42. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_040_logging_code_portals/uncaught_exceptions.py +0 -0
  43. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_050_safe_code_portals/__init__.py +0 -0
  44. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_050_safe_code_portals/safe_decorator.py +0 -0
  45. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_050_safe_code_portals/safe_portal_core_classes.py +0 -0
  46. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_060_autonomous_code_portals/__init__.py +0 -0
  47. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_060_autonomous_code_portals/autonomous_decorators.py +0 -0
  48. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_060_autonomous_code_portals/autonomous_portal_core_classes.py +0 -0
  49. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_060_autonomous_code_portals/names_usage_analyzer.py +0 -0
  50. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/__init__.py +0 -0
  51. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/basic_pre_validators.py +0 -0
  52. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/fn_arg_names_checker.py +0 -0
  53. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/list_flattener.py +0 -0
  54. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/package_manager.py +0 -0
  55. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/protected_decorators.py +0 -0
  56. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/protected_portal_core_classes.py +0 -0
  57. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/system_utils.py +0 -0
  58. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_070_protected_code_portals/validation_succesful_const.py +0 -0
  59. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_080_pure_code_portals/__init__.py +0 -0
  60. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_080_pure_code_portals/pure_core_classes.py +0 -0
  61. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_080_pure_code_portals/pure_decorator.py +0 -0
  62. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_090_swarming_portals/__init__.py +0 -0
  63. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_090_swarming_portals/output_suppressor.py +0 -0
  64. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_090_swarming_portals/swarming_portals.py +0 -0
  65. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_100_top_level_API/__init__.py +0 -0
  66. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_100_top_level_API/default_local_portal.py +0 -0
  67. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_100_top_level_API/top_level_API.py +0 -0
  68. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_800_signatures_and_converters/__init__.py +0 -0
  69. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_800_signatures_and_converters/base_16_32_convertors.py +0 -0
  70. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_800_signatures_and_converters/current_date_gmt_str.py +0 -0
  71. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_800_signatures_and_converters/hash_signatures.py +0 -0
  72. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_800_signatures_and_converters/node_signature.py +0 -0
  73. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_800_signatures_and_converters/random_signatures.py +0 -0
  74. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_900_project_stats_collector/__init__.py +0 -0
  75. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/_900_project_stats_collector/project_analyzer.py +0 -0
  76. {pythagoras-0.25.6 → pythagoras-0.25.7}/src/pythagoras/__init__.py +0 -0
  77. {pythagoras-0.25.6 → pythagoras-0.25.7}/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.7
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
@@ -97,6 +97,8 @@ preferred functional patterns, augmented by new capabilities.
97
97
 
98
98
  ## Videos
99
99
 
100
+ * [15-minute Demo](https://pythagoras.link/15-min-demo)
101
+
100
102
  * [Data Phoenix Webinar, August 27, 2025](https://youtu.be/eb6_atu1RQI) ([slides](https://docs.google.com/presentation/d/1fGBqnp0aqVHPJ-BYGYnUll1_TJI_WObAbEVX89Z3-yA))
101
103
 
102
104
 
@@ -41,6 +41,8 @@ preferred functional patterns, augmented by new capabilities.
41
41
 
42
42
  ## Videos
43
43
 
44
+ * [15-minute Demo](https://pythagoras.link/15-min-demo)
45
+
44
46
  * [Data Phoenix Webinar, August 27, 2025](https://youtu.be/eb6_atu1RQI) ([slides](https://docs.google.com/presentation/d/1fGBqnp0aqVHPJ-BYGYnUll1_TJI_WObAbEVX89Z3-yA))
45
47
 
46
48
 
@@ -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.7"
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
 
Binary file