plexus-python-common 1.1.83__tar.gz → 1.1.85__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 (70) hide show
  1. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/.editorconfig +8 -8
  2. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/.gitignore +9 -19
  3. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/PKG-INFO +1 -1
  4. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/iterutils.py +27 -27
  5. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus_python_common.egg-info/PKG-INFO +1 -1
  6. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/.github/workflows/pr.yml +0 -0
  7. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/.github/workflows/push.yml +0 -0
  8. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/MANIFEST.in +0 -0
  9. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/README.md +0 -0
  10. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/VERSION +0 -0
  11. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/pyproject.toml +0 -0
  12. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/config/config.cfg +0 -0
  13. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/csvutils/data.csv +0 -0
  14. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/csvutils/data.tsv +0 -0
  15. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.baz/file.bar.baz +0 -0
  16. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.baz/file.foo.bar +0 -0
  17. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.baz/file.foo.baz +0 -0
  18. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.foo/dir.foo.bar/dir.foo.bar.baz/file.foo.bar.baz +0 -0
  19. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.foo/dir.foo.bar/file.bar.baz +0 -0
  20. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.foo/dir.foo.bar/file.foo.bar +0 -0
  21. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.foo/dir.foo.bar/file.foo.baz +0 -0
  22. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.foo/file.bar +0 -0
  23. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.foo/file.baz +0 -0
  24. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/resources/unittest/pathutils/dir.foo/file.foo +0 -0
  25. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/setup.cfg +0 -0
  26. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/setup.py +0 -0
  27. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/__init__.py +0 -0
  28. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/__init__.py +0 -0
  29. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/argutils.py +0 -0
  30. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/config.py +0 -0
  31. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/csvutils.py +0 -0
  32. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/dbutils.py +0 -0
  33. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/dtutils.py +0 -0
  34. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/funcutils.py +0 -0
  35. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/jsonutils.py +0 -0
  36. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/logger.py +0 -0
  37. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/numutils.py +0 -0
  38. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/pathutils.py +0 -0
  39. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/randutils.py +0 -0
  40. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/retry.py +0 -0
  41. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/span.py +0 -0
  42. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/strutils.py +0 -0
  43. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/testutils.py +0 -0
  44. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus/common/utils/typeutils.py +0 -0
  45. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus_python_common.egg-info/SOURCES.txt +0 -0
  46. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus_python_common.egg-info/dependency_links.txt +0 -0
  47. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus_python_common.egg-info/not-zip-safe +0 -0
  48. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus_python_common.egg-info/requires.txt +0 -0
  49. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/src/plexus_python_common.egg-info/top_level.txt +0 -0
  50. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/__init__.py +0 -0
  51. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/__init__.py +0 -0
  52. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/__init__.py +0 -0
  53. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/argutils_test.py +0 -0
  54. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/config_test.py +0 -0
  55. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/csvutils_test.py +0 -0
  56. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/dbutils_test.py +0 -0
  57. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/dtutils_test.py +0 -0
  58. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/funcutils_test.py +0 -0
  59. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/iterutils_test.py +0 -0
  60. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/jsonutils_test.py +0 -0
  61. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/logger_test.py +0 -0
  62. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/numutils_test.py +0 -0
  63. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/pathutils_test.py +0 -0
  64. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/randutils_test.py +0 -0
  65. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/retry_test.py +0 -0
  66. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/span_test.py +0 -0
  67. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/strutils_test.py +0 -0
  68. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/testutils_test.py +0 -0
  69. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/plexus_tests/common/utils/typeutils_test.py +0 -0
  70. {plexus_python_common-1.1.83 → plexus_python_common-1.1.85}/test/testenv.py +0 -0
@@ -21,16 +21,16 @@ ij_python_blank_lines_around_top_level_classes_functions = 2
21
21
  ij_python_blank_lines_before_first_method = 0
22
22
  ij_python_call_parameters_new_line_after_left_paren = false
23
23
  ij_python_call_parameters_right_paren_on_new_line = false
24
- ij_python_call_parameters_wrap = normal
24
+ ij_python_call_parameters_wrap = on_every_item
25
25
  ij_python_dict_alignment = 0
26
26
  ij_python_dict_new_line_after_left_brace = false
27
27
  ij_python_dict_new_line_before_right_brace = false
28
- ij_python_dict_wrapping = 1
29
- ij_python_from_import_new_line_after_left_parenthesis = false
30
- ij_python_from_import_new_line_before_right_parenthesis = false
31
- ij_python_from_import_parentheses_force_if_multiline = false
32
- ij_python_from_import_trailing_comma_if_multiline = false
33
- ij_python_from_import_wrapping = 1
28
+ ij_python_dict_wrapping = on_every_item
29
+ ij_python_from_import_new_line_after_left_parenthesis = true
30
+ ij_python_from_import_new_line_before_right_parenthesis = true
31
+ ij_python_from_import_parentheses_force_if_multiline = true
32
+ ij_python_from_import_trailing_comma_if_multiline = true
33
+ ij_python_from_import_wrapping = on_every_item
34
34
  ij_python_hang_closing_brackets = false
35
35
  ij_python_keep_blank_lines_in_code = 1
36
36
  ij_python_keep_blank_lines_in_declarations = 1
@@ -38,7 +38,7 @@ ij_python_keep_indents_on_empty_lines = false
38
38
  ij_python_keep_line_breaks = true
39
39
  ij_python_method_parameters_new_line_after_left_paren = false
40
40
  ij_python_method_parameters_right_paren_on_new_line = false
41
- ij_python_method_parameters_wrap = normal
41
+ ij_python_method_parameters_wrap = on_every_item
42
42
  ij_python_new_line_after_colon = false
43
43
  ij_python_new_line_after_colon_multi_clause = true
44
44
  ij_python_optimize_imports_always_split_from_imports = false
@@ -1,15 +1,13 @@
1
- # System junks
2
- *.[oa]
3
- *~
1
+ # OS scratch
4
2
  .DS_Store
5
3
  Thumbs.db
4
+ *.[oa]
5
+ *~
6
6
 
7
- # Git
8
- .git/
9
-
10
- # General
7
+ # General scratch files and compiled output
11
8
  target/
12
9
  output/
10
+ out/
13
11
  build/
14
12
  opt/
15
13
  gen/
@@ -25,7 +23,7 @@ temp/
25
23
  .vscode/
26
24
 
27
25
 
28
- # Byte-compiled / optimized / DLL files
26
+ # Python byte-compiled / optimized / DLL files
29
27
  __pycache__/
30
28
  *.py[cod]
31
29
  *$py.class
@@ -33,9 +31,8 @@ __pycache__/
33
31
  # C extensions
34
32
  *.so
35
33
 
36
- # Distribution / packaging
34
+ # Python distribution / packaging
37
35
  .Python
38
- build/
39
36
  develop-eggs/
40
37
  dist/
41
38
  downloads/
@@ -49,8 +46,8 @@ var/
49
46
  wheels/
50
47
  share/python-wheels/
51
48
  *.egg-info/
52
- .installed.cfg
53
49
  *.egg
50
+ .installed.cfg
54
51
  MANIFEST
55
52
 
56
53
  # PyInstaller
@@ -112,7 +109,7 @@ ipython_config.py
112
109
  # pyenv
113
110
  # For a library or package, you might want to ignore these files since the code is
114
111
  # intended to run in multiple environments; otherwise, check them in:
115
- # .python-version
112
+ #.python-version
116
113
 
117
114
  # pipenv
118
115
  # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
@@ -178,10 +175,3 @@ dmypy.json
178
175
 
179
176
  # Cython debug symbols
180
177
  cython_debug/
181
-
182
- # PyCharm
183
- # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
184
- # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
185
- # and can be added to the global gitignore or merged into this file. For a more nuclear
186
- # option (not recommended) you can uncomment the following to ignore the entire idea folder.
187
- #.idea/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plexus-python-common
3
- Version: 1.1.83
3
+ Version: 1.1.85
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Programming Language :: Python :: 3.13
@@ -557,9 +557,9 @@ def dicttree_value[K, V](tree: dicttree[K, V], path: list[K]) -> V | None:
557
557
  """
558
558
  Gets the value stored at the specified path in the dicttree.
559
559
 
560
- :param tree: the dicttree to retrieve the value from.
561
- :param path: the list of keys representing the path to the desired value.
562
- :return: the value at the specified path, or ``None`` if the path does not exist.
560
+ :param tree: The dicttree to retrieve the value from.
561
+ :param path: The list of keys representing the path to the desired value.
562
+ :return: The value at the specified path, or ``None`` if the path does not exist.
563
563
  """
564
564
  value = None
565
565
  for key in path:
@@ -573,9 +573,9 @@ def dicttree_subtree[K, V](tree: dicttree[K, V], path: list[K]) -> dicttree[K, V
573
573
  """
574
574
  Gets the subtree located at the specified path in the dicttree.
575
575
 
576
- :param tree: the dicttree to retrieve the subtree from.
577
- :param path: the list of keys representing the path to the desired subtree.
578
- :return: the subtree at the specified path, or ``None`` if the path does not exist.
576
+ :param tree: The dicttree to retrieve the subtree from.
577
+ :param path: The list of keys representing the path to the desired subtree.
578
+ :return: The subtree at the specified path, or ``None`` if the path does not exist.
579
579
  """
580
580
  for key in path:
581
581
  if key not in tree:
@@ -588,9 +588,9 @@ def dicttree_children[K, V](tree: dicttree[K, V], *, leaves_only: bool = False)
588
588
  """
589
589
  Yields all values in the dicttree. If ``leaves_only`` is ``True``, only yields values at leaf nodes.
590
590
 
591
- :param tree: the dicttree to traverse.
592
- :param leaves_only: whether to yield only values at leaf nodes.
593
- :return: a generator yielding all values in the dicttree.
591
+ :param tree: The dicttree to traverse.
592
+ :param leaves_only: Whether to yield only values at leaf nodes.
593
+ :return: A generator yielding all values in the dicttree.
594
594
  """
595
595
  for value, subtree in tree.values():
596
596
  if value is not None and (not leaves_only or not subtree):
@@ -602,9 +602,9 @@ def dicttree_lineage[K, V](tree: dicttree[K, V], path: list[K]) -> Generator[V,
602
602
  """
603
603
  Yields all values along the specified path in the dicttree.
604
604
 
605
- :param tree: the dicttree to traverse.
606
- :param path: the list of keys representing the path to follow.
607
- :return: a generator yielding all values along the specified path.
605
+ :param tree: The dicttree to traverse.
606
+ :param path: The list of keys representing the path to follow.
607
+ :return: A generator yielding all values along the specified path.
608
608
  """
609
609
  for key in path:
610
610
  if key not in tree:
@@ -618,9 +618,9 @@ def dicttree_make[K, V](tree: dicttree[K, V], path: list[K]) -> dicttree[K, V]:
618
618
  """
619
619
  Ensures that the specified path exists in the dicttree, creating any missing nodes along the way.
620
620
 
621
- :param tree: the dicttree to modify.
622
- :param path: the list of keys representing the path to create.
623
- :return: the subtree at the end of the created path.
621
+ :param tree: The dicttree to modify.
622
+ :param path: The list of keys representing the path to create.
623
+ :return: The subtree at the end of the created path.
624
624
  """
625
625
  for key in path:
626
626
  tree.setdefault(key, (None, {}))
@@ -640,12 +640,12 @@ def dicttree_add[K, V](
640
640
  Adds a value at the specified path in the dicttree. If ``create_prefix`` is ``True``, any missing nodes along the
641
641
  path are created. If ``overwrite`` is ``False``, raises an error if the path already exists.
642
642
 
643
- :param tree: the dicttree to modify.
644
- :param path: the list of keys representing the path to add the value to.
645
- :param value: the value to add at the specified path.
646
- :param create_prefix: whether to create missing nodes along the path.
647
- :param overwrite: whether to overwrite an existing value at the path.
648
- :return: the modified dicttree.
643
+ :param tree: The dicttree to modify.
644
+ :param path: The list of keys representing the path to add the value to.
645
+ :param value: The value to add at the specified path.
646
+ :param create_prefix: Whether to create missing nodes along the path.
647
+ :param overwrite: Whether to overwrite an existing value at the path.
648
+ :return: The modified dicttree.
649
649
  """
650
650
  if len(path) == 0:
651
651
  raise ValueError("path cannot be empty")
@@ -673,10 +673,10 @@ def dicttree_remove[K, V](
673
673
  Removes the value at the specified path in the dicttree. If ``recursive`` is ``True``, removes the entire subtree
674
674
  at that path; otherwise, only removes the value, leaving any child nodes intact.
675
675
 
676
- :param tree: the dicttree to modify.
677
- :param path: the list of keys representing the path to remove the value from.
678
- :param recursive: whether to remove the entire subtree at the path.
679
- :return: the modified dicttree.
676
+ :param tree: The dicttree to modify.
677
+ :param path: The list of keys representing the path to remove the value from.
678
+ :param recursive: Whether to remove the entire subtree at the path.
679
+ :return: The modified dicttree.
680
680
  """
681
681
  if len(path) == 0:
682
682
  raise ValueError("path cannot be empty")
@@ -695,8 +695,8 @@ def dicttree_purge[K, V](tree: dicttree[K, V]) -> dicttree[K, V]:
695
695
  """
696
696
  Recursively removes all nodes in the dicttree that have no value and no children.
697
697
 
698
- :param tree: the dicttree to purge.
699
- :return: the purged dicttree.
698
+ :param tree: The dicttree to purge.
699
+ :return: The purged dicttree.
700
700
  """
701
701
  for key in list(tree.keys()):
702
702
  value, subtree = tree[key]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plexus-python-common
3
- Version: 1.1.83
3
+ Version: 1.1.85
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Programming Language :: Python :: 3.13