winipedia-utils 0.1.13__tar.gz → 0.1.15__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.13 → winipedia_utils-0.1.15}/PKG-INFO +1 -1
  2. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/pyproject.toml +1 -1
  3. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/django/database.py +0 -15
  4. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/oop/mixins/meta.py +9 -7
  5. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/LICENSE +0 -0
  6. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/README.md +0 -0
  7. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/__init__.py +0 -0
  8. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/concurrent/__init__.py +0 -0
  9. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/concurrent/concurrent.py +0 -0
  10. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  11. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/concurrent/multithreading.py +0 -0
  12. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/consts.py +0 -0
  13. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/data/__init__.py +0 -0
  14. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/data/dataframe.py +0 -0
  15. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/django/__init__.py +0 -0
  16. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/django/bulk.py +0 -0
  17. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/django/command.py +0 -0
  18. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/git/__init__.py +0 -0
  19. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/git/gitignore/__init__.py +0 -0
  20. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  21. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  22. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/git/pre_commit/config.py +0 -0
  23. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  24. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  25. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/iterating/__init__.py +0 -0
  26. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/iterating/iterate.py +0 -0
  27. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/logging/__init__.py +0 -0
  28. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/logging/ansi.py +0 -0
  29. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/logging/config.py +0 -0
  30. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/logging/logger.py +0 -0
  31. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/modules/__init__.py +0 -0
  32. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/modules/class_.py +0 -0
  33. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/modules/function.py +0 -0
  34. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/modules/module.py +0 -0
  35. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/modules/package.py +0 -0
  36. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/oop/__init__.py +0 -0
  37. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/oop/mixins/__init__.py +0 -0
  38. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/oop/mixins/mixin.py +0 -0
  39. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/os/__init__.py +0 -0
  40. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/os/os.py +0 -0
  41. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/projects/__init__.py +0 -0
  42. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/projects/poetry/__init__.py +0 -0
  43. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/projects/poetry/config.py +0 -0
  44. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/projects/poetry/poetry.py +0 -0
  45. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/projects/project.py +0 -0
  46. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/py.typed +0 -0
  47. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/setup.py +0 -0
  48. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/__init__.py +0 -0
  49. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/assertions.py +0 -0
  50. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/convention.py +0 -0
  51. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/create_tests.py +0 -0
  52. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/fixtures.py +0 -0
  53. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/__init__.py +0 -0
  54. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  55. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  56. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  57. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  58. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  59. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  60. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  61. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  62. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +0 -0
  63. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  64. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  65. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/testing/tests/conftest.py +0 -0
  66. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/winipedia_utils/text/__init__.py +0 -0
  67. {winipedia_utils-0.1.13 → winipedia_utils-0.1.15}/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.13
3
+ Version: 0.1.15
4
4
  Summary: A package with many utility functions
5
5
  License: MIT
6
6
  Author: Winipedia
@@ -1,7 +1,7 @@
1
1
  # Project section
2
2
  [project]
3
3
  name = "winipedia-utils"
4
- version = "0.1.13"
4
+ version = "0.1.15"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12"
@@ -16,7 +16,6 @@ from django.db.models.fields.related import ForeignKey, ForeignObjectRel
16
16
  from django.forms.models import model_to_dict
17
17
 
18
18
  from winipedia_utils.logging.logger import get_logger
19
- from winipedia_utils.text.string import split_on_uppercase
20
19
 
21
20
  if TYPE_CHECKING:
22
21
  from django.db.models.options import Options
@@ -267,9 +266,6 @@ class BaseModel(Model):
267
266
 
268
267
  # abstract does not inherit in children
269
268
  abstract = True
270
- # the rest does inherit
271
- verbose_name = "Base Model"
272
- verbose_name_plural = "Base Models"
273
269
 
274
270
  def __str__(self) -> str:
275
271
  """Base string representation of a model.
@@ -291,14 +287,3 @@ class BaseModel(Model):
291
287
  def meta(self) -> "Options[Self]":
292
288
  """Get the meta options for the model."""
293
289
  return self._meta
294
-
295
- @classmethod
296
- def make_verbose_name(cls) -> str:
297
- """Make a verbose name for the model."""
298
- # split by upper case letters
299
- return " ".join(split_on_uppercase(cls.__name__)).title()
300
-
301
- @classmethod
302
- def make_verbose_name_plural(cls) -> str:
303
- """Make a verbose name plural for the model."""
304
- return cls.make_verbose_name() + "s"
@@ -21,7 +21,7 @@ from winipedia_utils.text.string import value_to_truncated_string
21
21
  logger = get_logger(__name__)
22
22
 
23
23
 
24
- class LoggingMeta(type):
24
+ class LoggingMeta(ABCMeta):
25
25
  """Metaclass that automatically adds logging to class methods.
26
26
 
27
27
  Wraps non-magic methods with a logging decorator that tracks method calls,
@@ -169,7 +169,7 @@ class LoggingMeta(type):
169
169
  return wrapper
170
170
 
171
171
 
172
- class ImplementationMeta(type):
172
+ class ImplementationMeta(ABCMeta):
173
173
  """Metaclass that enforces implementation.
174
174
 
175
175
  Ensures that concrete subclasses properly implement all required attributes
@@ -182,7 +182,9 @@ class ImplementationMeta(type):
182
182
  cls: "ImplementationMeta",
183
183
  name: str,
184
184
  bases: tuple[type, ...],
185
- dct: dict[str, Any],
185
+ namespace: dict[str, Any],
186
+ /,
187
+ **_kwargs: Any,
186
188
  ) -> None:
187
189
  """Initialize a class with implementation checking.
188
190
 
@@ -194,7 +196,7 @@ class ImplementationMeta(type):
194
196
  cls: The class being initialized
195
197
  name: The name of the class
196
198
  bases: The base classes
197
- dct: The attribute dictionary
199
+ namespace: The attribute dictionary
198
200
 
199
201
  Raises:
200
202
  NotImplementedError: If the class doesn't define __abstract__
@@ -203,7 +205,7 @@ class ImplementationMeta(type):
203
205
  TypeError: If a method is neither final nor abstract
204
206
 
205
207
  """
206
- super().__init__(name, bases, dct)
208
+ super().__init__(name, bases, namespace)
207
209
 
208
210
  # Check method decorators regardless of abstract status
209
211
 
@@ -223,7 +225,7 @@ class ImplementationMeta(type):
223
225
  True if the class is abstract, False otherwise
224
226
 
225
227
  """
226
- return any(cls.is_abstract_method(method) for method in cls.__dict__.values())
228
+ return any(cls.__abstractmethods__)
227
229
 
228
230
  def check_method_decorators(cls) -> None:
229
231
  """Check that all methods are properly decorated with @final or @abstractmethod.
@@ -317,7 +319,7 @@ class ImplementationMeta(type):
317
319
  return list(attrs)
318
320
 
319
321
 
320
- class ABCImplementationLoggingMeta(ImplementationMeta, LoggingMeta, ABCMeta):
322
+ class ABCImplementationLoggingMeta(ImplementationMeta, LoggingMeta):
321
323
  """Combined metaclass that merges implementation, logging, and ABC functionality.
322
324
 
323
325
  This metaclass combines the features of: