ovld 0.5.1__tar.gz → 0.5.2__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 (68) hide show
  1. {ovld-0.5.1 → ovld-0.5.2}/PKG-INFO +1 -1
  2. {ovld-0.5.1 → ovld-0.5.2}/pyproject.toml +2 -2
  3. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/medley.py +3 -1
  4. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/mro.py +1 -1
  5. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/recode.py +12 -1
  6. ovld-0.5.2/src/ovld/version.py +1 -0
  7. ovld-0.5.1/src/ovld/version.py +0 -1
  8. {ovld-0.5.1 → ovld-0.5.2}/.github/workflows/publish.yml +0 -0
  9. {ovld-0.5.1 → ovld-0.5.2}/.github/workflows/python-package.yml +0 -0
  10. {ovld-0.5.1 → ovld-0.5.2}/.gitignore +0 -0
  11. {ovld-0.5.1 → ovld-0.5.2}/.python-version +0 -0
  12. {ovld-0.5.1 → ovld-0.5.2}/.readthedocs.yaml +0 -0
  13. {ovld-0.5.1 → ovld-0.5.2}/LICENSE +0 -0
  14. {ovld-0.5.1 → ovld-0.5.2}/README.md +0 -0
  15. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/__init__.py +0 -0
  16. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/common.py +0 -0
  17. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_add.py +0 -0
  18. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_ast.py +0 -0
  19. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_calc.py +0 -0
  20. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_fib.py +0 -0
  21. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_multer.py +0 -0
  22. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_regexp.py +0 -0
  23. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_trivial.py +0 -0
  24. {ovld-0.5.1 → ovld-0.5.2}/benchmarks/test_tweaknum.py +0 -0
  25. {ovld-0.5.1 → ovld-0.5.2}/docs/codegen.md +0 -0
  26. {ovld-0.5.1 → ovld-0.5.2}/docs/compare.md +0 -0
  27. {ovld-0.5.1 → ovld-0.5.2}/docs/dependent.md +0 -0
  28. {ovld-0.5.1 → ovld-0.5.2}/docs/features.md +0 -0
  29. {ovld-0.5.1 → ovld-0.5.2}/docs/index.md +0 -0
  30. {ovld-0.5.1 → ovld-0.5.2}/docs/medley.md +0 -0
  31. {ovld-0.5.1 → ovld-0.5.2}/docs/types.md +0 -0
  32. {ovld-0.5.1 → ovld-0.5.2}/docs/usage.md +0 -0
  33. {ovld-0.5.1 → ovld-0.5.2}/mkdocs.yml +0 -0
  34. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/__init__.py +0 -0
  35. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/abc.py +0 -0
  36. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/codegen.py +0 -0
  37. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/core.py +0 -0
  38. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/dependent.py +0 -0
  39. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/py.typed +0 -0
  40. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/signatures.py +0 -0
  41. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/typemap.py +0 -0
  42. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/types.py +0 -0
  43. {ovld-0.5.1 → ovld-0.5.2}/src/ovld/utils.py +0 -0
  44. {ovld-0.5.1 → ovld-0.5.2}/tests/__init__.py +0 -0
  45. {ovld-0.5.1 → ovld-0.5.2}/tests/modules/gingerbread.py +0 -0
  46. {ovld-0.5.1 → ovld-0.5.2}/tests/test_abc.py +0 -0
  47. {ovld-0.5.1 → ovld-0.5.2}/tests/test_codegen/test_dataclass_gen.txt +0 -0
  48. {ovld-0.5.1 → ovld-0.5.2}/tests/test_codegen/test_method.txt +0 -0
  49. {ovld-0.5.1 → ovld-0.5.2}/tests/test_codegen/test_method_metaclass.txt +0 -0
  50. {ovld-0.5.1 → ovld-0.5.2}/tests/test_codegen/test_method_per_instance.txt +0 -0
  51. {ovld-0.5.1 → ovld-0.5.2}/tests/test_codegen/test_simple.txt +0 -0
  52. {ovld-0.5.1 → ovld-0.5.2}/tests/test_codegen/test_variant_generation.txt +0 -0
  53. {ovld-0.5.1 → ovld-0.5.2}/tests/test_codegen.py +0 -0
  54. {ovld-0.5.1 → ovld-0.5.2}/tests/test_dependent.py +0 -0
  55. {ovld-0.5.1 → ovld-0.5.2}/tests/test_examples.py +0 -0
  56. {ovld-0.5.1 → ovld-0.5.2}/tests/test_global.py +0 -0
  57. {ovld-0.5.1 → ovld-0.5.2}/tests/test_medley.py +0 -0
  58. {ovld-0.5.1 → ovld-0.5.2}/tests/test_mro.py +0 -0
  59. {ovld-0.5.1 → ovld-0.5.2}/tests/test_ovld/test_display.txt +0 -0
  60. {ovld-0.5.1 → ovld-0.5.2}/tests/test_ovld/test_display_more.txt +0 -0
  61. {ovld-0.5.1 → ovld-0.5.2}/tests/test_ovld/test_doc.txt +0 -0
  62. {ovld-0.5.1 → ovld-0.5.2}/tests/test_ovld/test_doc2.txt +0 -0
  63. {ovld-0.5.1 → ovld-0.5.2}/tests/test_ovld/test_method_doc.txt +0 -0
  64. {ovld-0.5.1 → ovld-0.5.2}/tests/test_ovld.py +0 -0
  65. {ovld-0.5.1 → ovld-0.5.2}/tests/test_typemap.py +0 -0
  66. {ovld-0.5.1 → ovld-0.5.2}/tests/test_types.py +0 -0
  67. {ovld-0.5.1 → ovld-0.5.2}/tests/test_utils.py +0 -0
  68. {ovld-0.5.1 → ovld-0.5.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ovld
3
- Version: 0.5.1
3
+ Version: 0.5.2
4
4
  Summary: Overloading Python functions
5
5
  Project-URL: Homepage, https://ovld.readthedocs.io/en/latest/
6
6
  Project-URL: Documentation, https://ovld.readthedocs.io/en/latest/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ovld"
3
- version = "0.5.1"
3
+ version = "0.5.2"
4
4
  description = "Overloading Python functions"
5
5
  authors = [
6
6
  { name = "Olivier Breuleux", email = "breuleux@gmail.com" }
@@ -32,7 +32,7 @@ benchmark = [
32
32
  "multimethod>=1.12",
33
33
  "multipledispatch>=1.0.0",
34
34
  "plum-dispatch>=2.5.2",
35
- "runtype>=0.5.1",
35
+ "runtype>=0.5.2",
36
36
  ]
37
37
 
38
38
  [tool.hatch.build.targets.wheel]
@@ -178,7 +178,9 @@ class medley_cls_dict(dict):
178
178
 
179
179
  combiner = self._combiners.get(attr, None)
180
180
  if combiner is None:
181
- if inspect.isfunction(value) or isinstance(value, Ovld):
181
+ if to_ovld(value, force=False):
182
+ combiner = BuildOvld(attr)
183
+ elif inspect.isfunction(value):
182
184
  combiner = self._default_combiner(attr)
183
185
  else:
184
186
  combiner = KeepLast(attr)
@@ -137,7 +137,7 @@ def subclasscheck(t1, t2):
137
137
  if o1 or o2:
138
138
  o1 = o1 or t1
139
139
  o2 = o2 or t2
140
- if issubclass(o1, o2):
140
+ if isinstance(o1, type) and isinstance(o2, type) and issubclass(o1, o2):
141
141
  if o2 is t2: # pragma: no cover
142
142
  return True
143
143
  else:
@@ -496,7 +496,18 @@ def recode(fn, ovld, syms, newname):
496
496
  if fn.__closure__:
497
497
  new = closure_wrap(new.body[0], "irrelevant", fn.__code__.co_freevars)
498
498
  ast.fix_missing_locations(new)
499
- ast.increment_lineno(new, fn.__code__.co_firstlineno - 1)
499
+ line_delta = fn.__code__.co_firstlineno - 1
500
+ col_delta = len(firstline := src.split("\n", 1)[0]) - len(firstline.lstrip())
501
+ for node in ast.walk(new):
502
+ if hasattr(node, "lineno"):
503
+ node.lineno += line_delta
504
+ if hasattr(node, "end_lineno"):
505
+ node.end_lineno += line_delta
506
+ if hasattr(node, "col_offset"):
507
+ node.col_offset += col_delta
508
+ if hasattr(node, "end_col_offset"):
509
+ node.end_col_offset += col_delta
510
+
500
511
  res = compile(new, mode="exec", filename=fn.__code__.co_filename)
501
512
  if fn.__closure__:
502
513
  res = [x for x in res.co_consts if isinstance(x, CodeType)][0]
@@ -0,0 +1 @@
1
+ version = "0.5.2"
@@ -1 +0,0 @@
1
- version = "0.5.1"
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
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
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