omdev 0.0.0.dev120__tar.gz → 0.0.0.dev122__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.

Potentially problematic release.


This version of omdev might be problematic. Click here for more details.

Files changed (157) hide show
  1. {omdev-0.0.0.dev120/omdev.egg-info → omdev-0.0.0.dev122}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/interp.py +10 -1
  3. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/pyproject.py +14 -3
  4. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/toml/parser.py +5 -2
  5. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122/omdev.egg-info}/PKG-INFO +2 -2
  6. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev.egg-info/requires.txt +1 -1
  7. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/pyproject.toml +2 -2
  8. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/LICENSE +0 -0
  9. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/MANIFEST.in +0 -0
  10. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/README.rst +0 -0
  11. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/.manifests.json +0 -0
  12. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/__about__.py +0 -0
  13. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/__init__.py +0 -0
  14. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/amalg/__init__.py +0 -0
  15. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/amalg/__main__.py +0 -0
  16. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/amalg/amalg.py +0 -0
  17. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/antlr/__init__.py +0 -0
  18. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/antlr/consts.py +0 -0
  19. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/antlr/gen.py +0 -0
  20. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/bracepy.py +0 -0
  21. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/__init__.py +0 -0
  22. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/__init__.py +0 -0
  23. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/cache.py +0 -0
  24. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/contexts.py +0 -0
  25. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/currents.py +0 -0
  26. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/fns.py +0 -0
  27. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/resolvers.py +0 -0
  28. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/storage.py +0 -0
  29. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/compute/types.py +0 -0
  30. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/data/__init__.py +0 -0
  31. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/data/actions.py +0 -0
  32. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/data/cache.py +0 -0
  33. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/data/consts.py +0 -0
  34. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/data/defaults.py +0 -0
  35. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/data/manifests.py +0 -0
  36. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cache/data/specs.py +0 -0
  37. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/__init__.py +0 -0
  38. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_boilerplate.cc +0 -0
  39. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/LICENSE +0 -0
  40. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/__init__.py +0 -0
  41. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/build_ext.py +0 -0
  42. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  43. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  44. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/compilers/options.py +0 -0
  45. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  46. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/dir_util.py +0 -0
  47. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/errors.py +0 -0
  48. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/extension.py +0 -0
  49. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/file_util.py +0 -0
  50. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/modified.py +0 -0
  51. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/spawn.py +0 -0
  52. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/sysconfig.py +0 -0
  53. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/util.py +0 -0
  54. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/_distutils/version.py +0 -0
  55. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/build.py +0 -0
  56. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/cmake.py +0 -0
  57. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/importhook.py +0 -0
  58. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/magic.py +0 -0
  59. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cexts/scan.py +0 -0
  60. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/classdot.py +0 -0
  61. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/__init__.py +0 -0
  62. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/__main__.py +0 -0
  63. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/_pathhack.py +0 -0
  64. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/clicli.py +0 -0
  65. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/install.py +0 -0
  66. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/main.py +0 -0
  67. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/managers.py +0 -0
  68. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cli/types.py +0 -0
  69. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/clipboard/__init__.py +0 -0
  70. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/clipboard/clipboard.py +0 -0
  71. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/clipboard/darwin_cf.py +0 -0
  72. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/clipboard/linux_x.py +0 -0
  73. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/cmake.py +0 -0
  74. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/findimports.py +0 -0
  75. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/git.py +0 -0
  76. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/imgur.py +0 -0
  77. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/__init__.py +0 -0
  78. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/__main__.py +0 -0
  79. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/cli.py +0 -0
  80. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/inspect.py +0 -0
  81. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/providers.py +0 -0
  82. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/pyenv.py +0 -0
  83. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/resolvers.py +0 -0
  84. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/standalone.py +0 -0
  85. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/system.py +0 -0
  86. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/interp/types.py +0 -0
  87. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/magic/__init__.py +0 -0
  88. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/magic/find.py +0 -0
  89. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/magic/magic.py +0 -0
  90. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/magic/prepare.py +0 -0
  91. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/magic/styles.py +0 -0
  92. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/manifests/__init__.py +0 -0
  93. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/manifests/build.py +0 -0
  94. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/manifests/load.py +0 -0
  95. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/manifests/types.py +0 -0
  96. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/mypy/__init__.py +0 -0
  97. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/mypy/debug.py +0 -0
  98. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/packaging/__init__.py +0 -0
  99. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/packaging/marshal.py +0 -0
  100. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/packaging/names.py +0 -0
  101. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/packaging/requires.py +0 -0
  102. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/packaging/specifiers.py +0 -0
  103. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/packaging/versions.py +0 -0
  104. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pip.py +0 -0
  105. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/__init__.py +0 -0
  106. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/__main__.py +0 -0
  107. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/base.py +0 -0
  108. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/git.py +0 -0
  109. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/lite.py +0 -0
  110. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/main.py +0 -0
  111. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/manifests.py +0 -0
  112. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/precheck/scripts.py +0 -0
  113. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/ptk/__init__.py +0 -0
  114. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/ptk/apps/__init__.py +0 -0
  115. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/ptk/apps/ncdu.py +0 -0
  116. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pycharm/__init__.py +0 -0
  117. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pycharm/__main__.py +0 -0
  118. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pycharm/cli.py +0 -0
  119. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pyproject/__init__.py +0 -0
  120. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pyproject/__main__.py +0 -0
  121. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pyproject/cexts.py +0 -0
  122. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pyproject/cli.py +0 -0
  123. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pyproject/configs.py +0 -0
  124. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pyproject/pkg.py +0 -0
  125. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/pyproject/reqs.py +0 -0
  126. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/revisions.py +0 -0
  127. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/__init__.py +0 -0
  128. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/bumpversion.py +0 -0
  129. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/execrss.py +0 -0
  130. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/exectime.py +0 -0
  131. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/importtrace.py +0 -0
  132. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/slowcat.py +0 -0
  133. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/scripts/tmpexec.py +0 -0
  134. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/secrets.py +0 -0
  135. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tokens.py +0 -0
  136. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/toml/__init__.py +0 -0
  137. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/toml/writer.py +0 -0
  138. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/__init__.py +0 -0
  139. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/doc.py +0 -0
  140. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/docker.py +0 -0
  141. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/git.py +0 -0
  142. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/importscan.py +0 -0
  143. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/mkrelimp.py +0 -0
  144. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/notebook.py +0 -0
  145. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/pawk/__init__.py +0 -0
  146. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/pawk/__main__.py +0 -0
  147. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/pawk/pawk.py +0 -0
  148. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/pip.py +0 -0
  149. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/prof.py +0 -0
  150. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/qr.py +0 -0
  151. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/tools/sqlrepl.py +0 -0
  152. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev/wheelfile.py +0 -0
  153. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev.egg-info/SOURCES.txt +0 -0
  154. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev.egg-info/dependency_links.txt +0 -0
  155. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev.egg-info/entry_points.txt +0 -0
  156. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/omdev.egg-info/top_level.txt +0 -0
  157. {omdev-0.0.0.dev120 → omdev-0.0.0.dev122}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev120
3
+ Version: 0.0.0.dev122
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev120
15
+ Requires-Dist: omlish==0.0.0.dev122
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -29,6 +29,7 @@ import shutil
29
29
  import subprocess
30
30
  import sys
31
31
  import threading
32
+ import types
32
33
  import typing as ta
33
34
 
34
35
 
@@ -488,7 +489,7 @@ class _cached_nullary: # noqa
488
489
  return bound
489
490
 
490
491
 
491
- def cached_nullary(fn: ta.Callable[..., T]) -> ta.Callable[..., T]:
492
+ def cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
492
493
  return _cached_nullary(fn)
493
494
 
494
495
 
@@ -614,6 +615,14 @@ def get_optional_alias_arg(spec: ta.Any) -> ta.Any:
614
615
  return it
615
616
 
616
617
 
618
+ def is_new_type(spec: ta.Any) -> bool:
619
+ if isinstance(ta.NewType, type):
620
+ return isinstance(spec, ta.NewType)
621
+ else:
622
+ # Before https://github.com/python/cpython/commit/c2f33dfc83ab270412bf243fb21f724037effa1a
623
+ return isinstance(spec, types.FunctionType) and spec.__code__ is ta.NewType.__code__.co_consts[1] # type: ignore # noqa
624
+
625
+
617
626
  def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
618
627
  seen = set()
619
628
  todo = list(reversed(cls.__subclasses__()))
@@ -629,7 +629,7 @@ def canonicalize_version(
629
629
  # 8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this
630
630
  # License Agreement.
631
631
  #
632
- # https://github.com/python/cpython/blob/f5009b69e0cd94b990270e04e65b9d4d2b365844/Lib/tomllib/_parser.py
632
+ # https://github.com/python/cpython/blob/9ce90206b7a4649600218cf0bd4826db79c9a312/Lib/tomllib/_parser.py
633
633
 
634
634
 
635
635
  ##
@@ -776,7 +776,10 @@ def toml_loads(s: str, /, *, parse_float: TomlParseFloat = float) -> ta.Dict[str
776
776
  """Parse TOML from a string."""
777
777
 
778
778
  # The spec allows converting "\r\n" to "\n", even in string literals. Let's do so to simplify parsing.
779
- src = s.replace('\r\n', '\n')
779
+ try:
780
+ src = s.replace('\r\n', '\n')
781
+ except (AttributeError, TypeError):
782
+ raise TypeError(f"Expected str object, not '{type(s).__qualname__}'") from None
780
783
  pos = 0
781
784
  out = TomlOutput(TomlNestedDict(), TomlFlags())
782
785
  header: TomlKey = ()
@@ -1776,7 +1779,7 @@ class _cached_nullary: # noqa
1776
1779
  return bound
1777
1780
 
1778
1781
 
1779
- def cached_nullary(fn: ta.Callable[..., T]) -> ta.Callable[..., T]:
1782
+ def cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
1780
1783
  return _cached_nullary(fn)
1781
1784
 
1782
1785
 
@@ -1902,6 +1905,14 @@ def get_optional_alias_arg(spec: ta.Any) -> ta.Any:
1902
1905
  return it
1903
1906
 
1904
1907
 
1908
+ def is_new_type(spec: ta.Any) -> bool:
1909
+ if isinstance(ta.NewType, type):
1910
+ return isinstance(spec, ta.NewType)
1911
+ else:
1912
+ # Before https://github.com/python/cpython/commit/c2f33dfc83ab270412bf243fb21f724037effa1a
1913
+ return isinstance(spec, types.FunctionType) and spec.__code__ is ta.NewType.__code__.co_consts[1] # type: ignore # noqa
1914
+
1915
+
1905
1916
  def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
1906
1917
  seen = set()
1907
1918
  todo = list(reversed(cls.__subclasses__()))
@@ -38,7 +38,7 @@
38
38
  # 8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this
39
39
  # License Agreement.
40
40
  #
41
- # https://github.com/python/cpython/blob/f5009b69e0cd94b990270e04e65b9d4d2b365844/Lib/tomllib/_parser.py
41
+ # https://github.com/python/cpython/blob/9ce90206b7a4649600218cf0bd4826db79c9a312/Lib/tomllib/_parser.py
42
42
  # ruff: noqa: UP006 UP007
43
43
  import datetime
44
44
  import functools
@@ -197,7 +197,10 @@ def toml_loads(s: str, /, *, parse_float: TomlParseFloat = float) -> ta.Dict[str
197
197
  """Parse TOML from a string."""
198
198
 
199
199
  # The spec allows converting "\r\n" to "\n", even in string literals. Let's do so to simplify parsing.
200
- src = s.replace('\r\n', '\n')
200
+ try:
201
+ src = s.replace('\r\n', '\n')
202
+ except (AttributeError, TypeError):
203
+ raise TypeError(f"Expected str object, not '{type(s).__qualname__}'") from None
201
204
  pos = 0
202
205
  out = TomlOutput(TomlNestedDict(), TomlFlags())
203
206
  header: TomlKey = ()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev120
3
+ Version: 0.0.0.dev122
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev120
15
+ Requires-Dist: omlish==0.0.0.dev122
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev120
1
+ omlish==0.0.0.dev122
2
2
 
3
3
  [all]
4
4
  black~=24.10
@@ -12,7 +12,7 @@ authors = [
12
12
  urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = {text = 'BSD-3-Clause'}
14
14
  requires-python = '>=3.12'
15
- version = '0.0.0.dev120'
15
+ version = '0.0.0.dev122'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  description = 'omdev'
24
24
  dependencies = [
25
- 'omlish == 0.0.0.dev120',
25
+ 'omlish == 0.0.0.dev122',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes