vcorelib 3.3.2__tar.gz → 3.3.4__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 (91) hide show
  1. {vcorelib-3.3.2/vcorelib.egg-info → vcorelib-3.3.4}/PKG-INFO +6 -6
  2. {vcorelib-3.3.2 → vcorelib-3.3.4}/README.md +2 -2
  3. {vcorelib-3.3.2 → vcorelib-3.3.4}/pyproject.toml +1 -1
  4. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/__init__.py +2 -2
  5. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/paths/__init__.py +17 -0
  6. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/paths/info.py +0 -1
  7. {vcorelib-3.3.2 → vcorelib-3.3.4/vcorelib.egg-info}/PKG-INFO +6 -6
  8. {vcorelib-3.3.2 → vcorelib-3.3.4}/LICENSE +0 -0
  9. {vcorelib-3.3.2 → vcorelib-3.3.4}/setup.cfg +0 -0
  10. {vcorelib-3.3.2 → vcorelib-3.3.4}/setup.py +0 -0
  11. {vcorelib-3.3.2 → vcorelib-3.3.4}/tests/test_names.py +0 -0
  12. {vcorelib-3.3.2 → vcorelib-3.3.4}/tests/test_python.py +0 -0
  13. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/args/__init__.py +0 -0
  14. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/args/newline.py +0 -0
  15. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/asyncio/__init__.py +0 -0
  16. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/asyncio/cli.py +0 -0
  17. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/asyncio/poll.py +0 -0
  18. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/asyncio/subprocess.py +0 -0
  19. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/dev_requirements.txt +0 -0
  20. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/dict/__init__.py +0 -0
  21. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/dict/cache.py +0 -0
  22. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/dict/codec.py +0 -0
  23. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/dict/config.py +0 -0
  24. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/dict/env.py +0 -0
  25. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/graph/__init__.py +0 -0
  26. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/graph/abc.py +0 -0
  27. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/graph/edge.py +0 -0
  28. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/graph/node.py +0 -0
  29. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/graph/port.py +0 -0
  30. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/__init__.py +0 -0
  31. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/abc.py +0 -0
  32. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/arbiter/__init__.py +0 -0
  33. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/arbiter/base.py +0 -0
  34. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/arbiter/context.py +0 -0
  35. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/arbiter/directory.py +0 -0
  36. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/archive/__init__.py +0 -0
  37. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/cache.py +0 -0
  38. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/decode.py +0 -0
  39. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/encode.py +0 -0
  40. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/fifo.py +0 -0
  41. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/file_writer.py +0 -0
  42. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/mapping.py +0 -0
  43. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/io/types.py +0 -0
  44. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/logging/__init__.py +0 -0
  45. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/logging/args.py +0 -0
  46. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/logging/time.py +0 -0
  47. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/__init__.py +0 -0
  48. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/analysis/__init__.py +0 -0
  49. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/analysis/average.py +0 -0
  50. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/analysis/buffer.py +0 -0
  51. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/analysis/rate/__init__.py +0 -0
  52. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/analysis/rate/limiter.py +0 -0
  53. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/analysis/weighted.py +0 -0
  54. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/constants.py +0 -0
  55. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/keeper.py +0 -0
  56. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/time.py +0 -0
  57. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/math/unit.py +0 -0
  58. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/names.py +0 -0
  59. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/namespace/__init__.py +0 -0
  60. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/namespace/base.py +0 -0
  61. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/namespace/mixin.py +0 -0
  62. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/paths/base.py +0 -0
  63. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/paths/context.py +0 -0
  64. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/paths/find.py +0 -0
  65. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/paths/hashing.py +0 -0
  66. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/paths/info_cache.py +0 -0
  67. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/platform/__init__.py +0 -0
  68. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/py.typed +0 -0
  69. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/python.py +0 -0
  70. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/requirements.txt +0 -0
  71. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/schemas/__init__.py +0 -0
  72. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/schemas/base.py +0 -0
  73. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/schemas/json.py +0 -0
  74. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/schemas/mixins.py +0 -0
  75. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/script/__init__.py +0 -0
  76. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/target/__init__.py +0 -0
  77. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/target/evaluation.py +0 -0
  78. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/target/expression.py +0 -0
  79. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/target/resolver.py +0 -0
  80. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/__init__.py +0 -0
  81. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/dict/__init__.py +0 -0
  82. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/dict/melder.py +0 -0
  83. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/manager.py +0 -0
  84. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/subprocess/__init__.py +0 -0
  85. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/subprocess/run.py +0 -0
  86. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/time/__init__.py +0 -0
  87. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib/task/time/sleep.py +0 -0
  88. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib.egg-info/SOURCES.txt +0 -0
  89. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib.egg-info/dependency_links.txt +0 -0
  90. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib.egg-info/requires.txt +3 -3
  91. {vcorelib-3.3.2 → vcorelib-3.3.4}/vcorelib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vcorelib
3
- Version: 3.3.2
3
+ Version: 3.3.4
4
4
  Summary: A collection of core Python utilities.
5
5
  Home-page: https://github.com/vkottler/vcorelib
6
6
  Author: Vaughn Kottler
@@ -17,12 +17,12 @@ Classifier: License :: OSI Approved :: MIT License
17
17
  Requires-Python: >=3.11
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
- Requires-Dist: importlib-resources
20
+ Requires-Dist: tomli
21
21
  Requires-Dist: ruamel.yaml
22
+ Requires-Dist: fastjsonschema
23
+ Requires-Dist: importlib-resources
22
24
  Requires-Dist: cerberus
23
- Requires-Dist: tomli
24
25
  Requires-Dist: tomli-w
25
- Requires-Dist: fastjsonschema
26
26
  Provides-Extra: test
27
27
  Requires-Dist: pylint; extra == "test"
28
28
  Requires-Dist: flake8; extra == "test"
@@ -44,11 +44,11 @@ Requires-Dist: uvloop; (sys_platform != "win32" and sys_platform != "cygwin") an
44
44
  =====================================
45
45
  generator=datazen
46
46
  version=3.1.4
47
- hash=f02119c0b9e907d9b4f826e86ee1579d
47
+ hash=a7ebe64653725582beaaecd195538420
48
48
  =====================================
49
49
  -->
50
50
 
51
- # vcorelib ([3.3.2](https://pypi.org/project/vcorelib/))
51
+ # vcorelib ([3.3.4](https://pypi.org/project/vcorelib/))
52
52
 
53
53
  [![python](https://img.shields.io/pypi/pyversions/vcorelib.svg)](https://pypi.org/project/vcorelib/)
54
54
  ![Build Status](https://github.com/vkottler/vcorelib/workflows/Python%20Package/badge.svg)
@@ -2,11 +2,11 @@
2
2
  =====================================
3
3
  generator=datazen
4
4
  version=3.1.4
5
- hash=f02119c0b9e907d9b4f826e86ee1579d
5
+ hash=a7ebe64653725582beaaecd195538420
6
6
  =====================================
7
7
  -->
8
8
 
9
- # vcorelib ([3.3.2](https://pypi.org/project/vcorelib/))
9
+ # vcorelib ([3.3.4](https://pypi.org/project/vcorelib/))
10
10
 
11
11
  [![python](https://img.shields.io/pypi/pyversions/vcorelib.svg)](https://pypi.org/project/vcorelib/)
12
12
  ![Build Status](https://github.com/vkottler/vcorelib/workflows/Python%20Package/badge.svg)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta:__legacy__"
4
4
 
5
5
  [project]
6
6
  name = "vcorelib"
7
- version = "3.3.2"
7
+ version = "3.3.4"
8
8
  description = "A collection of core Python utilities."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,7 +1,7 @@
1
1
  # =====================================
2
2
  # generator=datazen
3
3
  # version=3.1.4
4
- # hash=1c28b70458d2aa05a2689dba55d9e09c
4
+ # hash=66dd034b36d1ab5f33f29127e32dcdbf
5
5
  # =====================================
6
6
 
7
7
  """
@@ -10,7 +10,7 @@ Useful defaults and other package metadata.
10
10
 
11
11
  DESCRIPTION = "A collection of core Python utilities."
12
12
  PKG_NAME = "vcorelib"
13
- VERSION = "3.3.2"
13
+ VERSION = "3.3.4"
14
14
 
15
15
  # vcorelib-specific content.
16
16
  DEFAULT_INDENT = 2
@@ -50,6 +50,7 @@ __all__ = [
50
50
  "resource",
51
51
  "create_hex_digest",
52
52
  "validate_hex_digest",
53
+ "prune_empty_directories",
53
54
  ]
54
55
 
55
56
 
@@ -63,6 +64,22 @@ def modified_ns(path: Pathlike) -> _Optional[int]:
63
64
  return result
64
65
 
65
66
 
67
+ def prune_empty_directories(path: Pathlike) -> None:
68
+ """Attempt to prune empty directories from some path."""
69
+
70
+ path = normalize(path)
71
+
72
+ if path.is_dir():
73
+ # Remove sub-directories.
74
+ for subdir in path.iterdir():
75
+ if subdir.is_dir():
76
+ prune_empty_directories(subdir)
77
+
78
+ # Remove this directory.
79
+ if len(list(path.iterdir())) == 0:
80
+ path.rmdir()
81
+
82
+
66
83
  def modified_after(path: Pathlike, candidates: _Iterable[Pathlike]) -> bool:
67
84
  """
68
85
  Check if any candidate paths are more recently modified than the provided
@@ -62,7 +62,6 @@ class FileInfo(NamedTuple):
62
62
  """Create file info from a file."""
63
63
 
64
64
  path = _normalize(path).resolve()
65
- assert path.is_file()
66
65
  if stats is None:
67
66
  stats = _stats(path)
68
67
  assert stats is not None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vcorelib
3
- Version: 3.3.2
3
+ Version: 3.3.4
4
4
  Summary: A collection of core Python utilities.
5
5
  Home-page: https://github.com/vkottler/vcorelib
6
6
  Author: Vaughn Kottler
@@ -17,12 +17,12 @@ Classifier: License :: OSI Approved :: MIT License
17
17
  Requires-Python: >=3.11
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
- Requires-Dist: importlib-resources
20
+ Requires-Dist: tomli
21
21
  Requires-Dist: ruamel.yaml
22
+ Requires-Dist: fastjsonschema
23
+ Requires-Dist: importlib-resources
22
24
  Requires-Dist: cerberus
23
- Requires-Dist: tomli
24
25
  Requires-Dist: tomli-w
25
- Requires-Dist: fastjsonschema
26
26
  Provides-Extra: test
27
27
  Requires-Dist: pylint; extra == "test"
28
28
  Requires-Dist: flake8; extra == "test"
@@ -44,11 +44,11 @@ Requires-Dist: uvloop; (sys_platform != "win32" and sys_platform != "cygwin") an
44
44
  =====================================
45
45
  generator=datazen
46
46
  version=3.1.4
47
- hash=f02119c0b9e907d9b4f826e86ee1579d
47
+ hash=a7ebe64653725582beaaecd195538420
48
48
  =====================================
49
49
  -->
50
50
 
51
- # vcorelib ([3.3.2](https://pypi.org/project/vcorelib/))
51
+ # vcorelib ([3.3.4](https://pypi.org/project/vcorelib/))
52
52
 
53
53
  [![python](https://img.shields.io/pypi/pyversions/vcorelib.svg)](https://pypi.org/project/vcorelib/)
54
54
  ![Build Status](https://github.com/vkottler/vcorelib/workflows/Python%20Package/badge.svg)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,9 +1,9 @@
1
- importlib-resources
1
+ tomli
2
2
  ruamel.yaml
3
+ fastjsonschema
4
+ importlib-resources
3
5
  cerberus
4
- tomli
5
6
  tomli-w
6
- fastjsonschema
7
7
 
8
8
  [test]
9
9
  pylint