winipedia-utils 0.1.2__tar.gz → 0.1.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 (67) hide show
  1. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/PKG-INFO +3 -3
  2. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/README.md +2 -2
  3. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/pyproject.toml +1 -1
  4. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/modules/package.py +1 -1
  5. winipedia_utils-0.1.4/winipedia_utils/projects/project.py +19 -0
  6. winipedia_utils-0.1.4/winipedia_utils/py.typed +1 -0
  7. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/setup.py +3 -0
  8. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/create_tests.py +2 -2
  9. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +41 -3
  10. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/LICENSE +0 -0
  11. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/__init__.py +0 -0
  12. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/concurrent/__init__.py +0 -0
  13. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/concurrent/concurrent.py +0 -0
  14. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  15. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/concurrent/multithreading.py +0 -0
  16. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/consts.py +0 -0
  17. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/data/__init__.py +0 -0
  18. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/data/dataframe.py +0 -0
  19. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/django/__init__.py +0 -0
  20. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/django/bulk.py +0 -0
  21. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/django/command.py +0 -0
  22. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/django/database.py +0 -0
  23. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/git/__init__.py +0 -0
  24. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/git/gitignore/__init__.py +0 -0
  25. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  26. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  27. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/git/pre_commit/config.py +0 -0
  28. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  29. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  30. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/iterating/__init__.py +0 -0
  31. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/iterating/iterate.py +0 -0
  32. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/logging/__init__.py +0 -0
  33. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/logging/ansi.py +0 -0
  34. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/logging/config.py +0 -0
  35. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/logging/logger.py +0 -0
  36. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/modules/__init__.py +0 -0
  37. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/modules/class_.py +0 -0
  38. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/modules/function.py +0 -0
  39. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/modules/module.py +0 -0
  40. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/oop/__init__.py +0 -0
  41. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/oop/mixins/__init__.py +0 -0
  42. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/oop/mixins/meta.py +0 -0
  43. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/oop/mixins/mixin.py +0 -0
  44. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/os/__init__.py +0 -0
  45. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/os/os.py +0 -0
  46. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/projects/__init__.py +0 -0
  47. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/projects/poetry/__init__.py +0 -0
  48. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/projects/poetry/config.py +0 -0
  49. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/projects/poetry/poetry.py +0 -0
  50. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/__init__.py +0 -0
  51. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/assertions.py +0 -0
  52. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/convention.py +0 -0
  53. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/fixtures.py +0 -0
  54. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/__init__.py +0 -0
  55. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  56. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  57. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  58. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  59. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  60. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  61. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  62. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  63. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  64. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  65. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/testing/tests/conftest.py +0 -0
  66. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/text/__init__.py +0 -0
  67. {winipedia_utils-0.1.2 → winipedia_utils-0.1.4}/winipedia_utils/text/string.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: winipedia-utils
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: A package with many utility functions
5
5
  License: MIT
6
6
  Author: Winipedia
@@ -150,11 +150,11 @@ create_tests()
150
150
  ### Module Introspection
151
151
 
152
152
  ```python
153
- from winipedia_utils.modules.package import get_scr_package, walk_package
153
+ from winipedia_utils.modules.package import get_src_package, walk_package
154
154
  from winipedia_utils.modules.function import get_all_functions_from_module
155
155
 
156
156
  # Discover your main source package
157
- src_package = get_scr_package()
157
+ src_package = get_src_package()
158
158
 
159
159
  # Walk through all modules in a package
160
160
  for package, modules in walk_package(src_package):
@@ -129,11 +129,11 @@ create_tests()
129
129
  ### Module Introspection
130
130
 
131
131
  ```python
132
- from winipedia_utils.modules.package import get_scr_package, walk_package
132
+ from winipedia_utils.modules.package import get_src_package, walk_package
133
133
  from winipedia_utils.modules.function import get_all_functions_from_module
134
134
 
135
135
  # Discover your main source package
136
- src_package = get_scr_package()
136
+ src_package = get_src_package()
137
137
 
138
138
  # Walk through all modules in a package
139
139
  for package, modules in walk_package(src_package):
@@ -1,7 +1,7 @@
1
1
  # Project section
2
2
  [project]
3
3
  name = "winipedia-utils"
4
- version = "0.1.2"
4
+ version = "0.1.4"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12"
@@ -28,7 +28,7 @@ from winipedia_utils.logging.logger import get_logger
28
28
  logger = get_logger(__name__)
29
29
 
30
30
 
31
- def get_scr_package() -> ModuleType:
31
+ def get_src_package() -> ModuleType:
32
32
  """Identify and return the main source package of the project.
33
33
 
34
34
  Discovers the main source package by finding all top-level packages
@@ -0,0 +1,19 @@
1
+ """Utilities for working with Python projects."""
2
+
3
+ from winipedia_utils.modules.module import create_module, to_path
4
+ from winipedia_utils.modules.package import get_src_package
5
+ from winipedia_utils.projects.poetry.config import get_poetry_package_name
6
+
7
+
8
+ def _create_project_root() -> None:
9
+ """Create the project root."""
10
+ src_package_name = get_poetry_package_name()
11
+ create_module(src_package_name, is_package=True)
12
+ _create_py_typed()
13
+
14
+
15
+ def _create_py_typed() -> None:
16
+ """Create the py.typed file."""
17
+ src_package_name = get_src_package().__name__
18
+ py_typed_path = to_path(src_package_name, is_package=True) / "py.typed"
19
+ py_typed_path.touch()
@@ -16,6 +16,7 @@ from winipedia_utils.projects.poetry.config import (
16
16
  from winipedia_utils.projects.poetry.poetry import (
17
17
  _install_dev_dependencies,
18
18
  )
19
+ from winipedia_utils.projects.project import _create_project_root
19
20
 
20
21
  logger = get_logger(__name__)
21
22
 
@@ -30,6 +31,8 @@ def _setup() -> None:
30
31
  _add_package_patterns_to_gitignore()
31
32
  # add tool.* configurations to pyproject.toml
32
33
  _add_configurations_to_pyproject_toml()
34
+ # create the project root
35
+ _create_project_root()
33
36
  # run pre-commit once, create tests is included here
34
37
  _run_all_hooks()
35
38
  logger.info("Setup complete!")
@@ -24,7 +24,7 @@ from winipedia_utils.modules.module import (
24
24
  )
25
25
  from winipedia_utils.modules.package import (
26
26
  copy_package,
27
- get_scr_package,
27
+ get_src_package,
28
28
  walk_package,
29
29
  )
30
30
  from winipedia_utils.testing import tests
@@ -80,7 +80,7 @@ def create_tests_for_src_package() -> None:
80
80
  This function walks through the source package hierarchy and creates corresponding
81
81
  test packages and modules for each package and module found in the source.
82
82
  """
83
- src_package = get_scr_package()
83
+ src_package = get_src_package()
84
84
  for package, modules in walk_package(src_package):
85
85
  create_test_package(package)
86
86
  for module in modules:
@@ -17,7 +17,7 @@ from winipedia_utils.git.pre_commit.config import (
17
17
  from winipedia_utils.modules.module import to_path
18
18
  from winipedia_utils.modules.package import (
19
19
  find_packages,
20
- get_scr_package,
20
+ get_src_package,
21
21
  walk_package,
22
22
  )
23
23
  from winipedia_utils.projects.poetry.config import (
@@ -188,7 +188,7 @@ def _test_all_src_code_in_one_package() -> None:
188
188
 
189
189
  """
190
190
  packages = find_packages(depth=0)
191
- src_package = get_scr_package().__name__
191
+ src_package = get_src_package().__name__
192
192
  expected_packages = {TESTS_PACKAGE_NAME, src_package}
193
193
  assert_with_msg(
194
194
  set(packages) == expected_packages,
@@ -196,6 +196,44 @@ def _test_all_src_code_in_one_package() -> None:
196
196
  )
197
197
 
198
198
 
199
+ @autouse_session_fixture
200
+ def _test_src_package_correctly_named() -> None:
201
+ """Verify that the source package is correctly named.
202
+
203
+ This fixture runs once per test session and checks that the source package
204
+ is correctly named after the project.
205
+
206
+ Raises:
207
+ AssertionError: If the source package is not correctly named
208
+
209
+ """
210
+ src_package = get_src_package().__name__
211
+ assert_with_msg(
212
+ src_package == get_poetry_package_name(),
213
+ f"Expected source package to be named {get_poetry_package_name()}, "
214
+ f"but it is named {src_package}",
215
+ )
216
+
217
+
218
+ @autouse_session_fixture
219
+ def _test_py_typed_exists() -> None:
220
+ """Verify that the py.typed file exists in the source package.
221
+
222
+ This fixture runs once per test session and checks that the py.typed file
223
+ exists in the source package.
224
+
225
+ Raises:
226
+ AssertionError: If the py.typed file doesn't exist
227
+
228
+ """
229
+ src_package = get_src_package()
230
+ py_typed_path = to_path(src_package.__name__, is_package=True) / "py.typed"
231
+ assert_with_msg(
232
+ py_typed_path.exists(),
233
+ f"Expected py.typed file to exist at {py_typed_path}",
234
+ )
235
+
236
+
199
237
  @autouse_session_fixture
200
238
  def _test_project_structure_mirrored() -> None:
201
239
  """Verify that the project structure is mirrored in tests.
@@ -207,7 +245,7 @@ def _test_project_structure_mirrored() -> None:
207
245
  AssertionError: If any package or module doesn't have a corresponding test
208
246
 
209
247
  """
210
- src_package = get_scr_package()
248
+ src_package = get_src_package()
211
249
 
212
250
  # we will now go through all the modules in the src package and check
213
251
  # that there is a corresponding test module
File without changes