coconut-develop 3.2.0.post0.dev6__tar.gz → 3.2.0.post0.dev7__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 (92) hide show
  1. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/PKG-INFO +1 -1
  2. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/compiler/compiler.py +31 -27
  3. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/root.py +1 -1
  4. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/.claude/CLAUDE.md +0 -0
  5. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/.claude/settings.local.json +0 -0
  6. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/CONTRIBUTING.md +0 -0
  7. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/DOCS.md +0 -0
  8. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/FAQ.md +0 -0
  9. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/HELP.md +0 -0
  10. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/LICENSE.txt +0 -0
  11. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/MANIFEST.in +0 -0
  12. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/README.rst +0 -0
  13. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/__coconut__/__init__.py +0 -0
  14. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/__coconut__/__init__.pyi +0 -0
  15. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/__coconut__/py.typed +0 -0
  16. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/_coconut/__init__.py +0 -0
  17. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/_coconut/__init__.pyi +0 -0
  18. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/_coconut/py.typed +0 -0
  19. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/__coconut__.py +0 -0
  20. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/__coconut__.pyi +0 -0
  21. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/__init__.py +0 -0
  22. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/__init__.pyi +0 -0
  23. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/__main__.py +0 -0
  24. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/_pyparsing.py +0 -0
  25. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/api.py +0 -0
  26. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/api.pyi +0 -0
  27. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/__init__.py +0 -0
  28. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/__init__.pyi +0 -0
  29. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/cli.py +0 -0
  30. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/command.py +0 -0
  31. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/command.pyi +0 -0
  32. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/mypy.py +0 -0
  33. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/resources/zcoconut.pth +0 -0
  34. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/util.py +0 -0
  35. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/command/watch.py +0 -0
  36. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/compiler/__init__.py +0 -0
  37. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/compiler/grammar.py +0 -0
  38. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/compiler/header.py +0 -0
  39. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/compiler/matching.py +0 -0
  40. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/compiler/templates/header.py_template +0 -0
  41. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/compiler/util.py +0 -0
  42. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/constants.py +0 -0
  43. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/convenience.py +0 -0
  44. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/convenience.pyi +0 -0
  45. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/exceptions.py +0 -0
  46. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/highlighter.py +0 -0
  47. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/__init__.py +0 -0
  48. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/__main__.py +0 -0
  49. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/coconut/kernel.json +0 -0
  50. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/coconut_py/kernel.json +0 -0
  51. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/coconut_py2/kernel.json +0 -0
  52. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/coconut_py3/kernel.json +0 -0
  53. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/embed.py +0 -0
  54. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/icoconut/root.py +0 -0
  55. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/integrations.py +0 -0
  56. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/main.py +0 -0
  57. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/py.typed +0 -0
  58. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/requirements.py +0 -0
  59. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/terminal.py +0 -0
  60. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/__init__.py +0 -0
  61. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/__main__.py +0 -0
  62. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/constants_test.py +0 -0
  63. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/main_test.py +0 -0
  64. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/__init__.coco +0 -0
  65. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/__main__.coco +0 -0
  66. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/main.coco +0 -0
  67. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/primary_1.coco +0 -0
  68. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/primary_2.coco +0 -0
  69. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/specific.coco +0 -0
  70. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/suite.coco +0 -0
  71. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/tutorial.coco +0 -0
  72. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/agnostic/util.coco +0 -0
  73. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/non_strict/non_strict_test.coco +0 -0
  74. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_2/py2_test.coco +0 -0
  75. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_3/py3_test.coco +0 -0
  76. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_311/py311_test.coco +0 -0
  77. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_314/py314_test.coco +0 -0
  78. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_35/py35_test.coco +0 -0
  79. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_36/py36_test.coco +0 -0
  80. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_38/py38_test.coco +0 -0
  81. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/cocotest/target_sys/target_sys_test.coco +0 -0
  82. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/extras.coco +0 -0
  83. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/importable.coco +0 -0
  84. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/runnable.coco +0 -0
  85. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/tests/src/runner.coco +0 -0
  86. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut/util.py +0 -0
  87. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/coconut_develop.egg-info/SOURCES.txt +0 -0
  88. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/conf.py +0 -0
  89. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/pyproject.toml +0 -0
  90. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/setup.cfg +0 -0
  91. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/setup.py +0 -0
  92. {coconut_develop-3.2.0.post0.dev6 → coconut_develop-3.2.0.post0.dev7}/xontrib/coconut.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coconut-develop
3
- Version: 3.2.0.post0.dev6
3
+ Version: 3.2.0.post0.dev7
4
4
  Summary: Simple, elegant, Pythonic functional programming.
5
5
  Home-page: http://coconut-lang.org
6
6
  Author: Evan Hubinger
@@ -105,6 +105,7 @@ from coconut.constants import (
105
105
  incremental_cache_limit,
106
106
  use_line_by_line_parser,
107
107
  coconut_cache_dir,
108
+ wildcard,
108
109
  )
109
110
  from coconut.util import (
110
111
  pickle,
@@ -785,7 +786,7 @@ class Compiler(Grammar, pickleable_obj):
785
786
  cls.type_alias_stmt <<= handle_and_manage(
786
787
  cls.type_alias_stmt_ref,
787
788
  cls.method("type_alias_stmt_handle"),
788
- cls.method("type_alias_stmt_manage"),
789
+ cls.method("scope_manage"),
789
790
  include_in_packrat_context=False,
790
791
  )
791
792
 
@@ -5207,19 +5208,6 @@ class {protocol_var}({tokens}, _coconut.typing.Protocol): pass
5207
5208
  raise CoconutInternalException("invalid TypeVarFunc", TypeVarFunc, "(", name, ")")
5208
5209
  return "_coconut.typing.Generic[" + ", ".join(generics) + "]"
5209
5210
 
5210
- @contextmanager
5211
- def type_alias_stmt_manage(self, original=None, loc=None, item=None):
5212
- """Manage the typevars parsing context."""
5213
- prev_typevar_info = self.current_parsing_context("typevars")
5214
- with self.add_to_parsing_context({
5215
- "typevars": {
5216
- "all_typevars": {} if prev_typevar_info is None else prev_typevar_info["all_typevars"].copy(),
5217
- "new_typevars": [],
5218
- "typevar_locs": {},
5219
- },
5220
- }):
5221
- yield
5222
-
5223
5211
  def type_alias_stmt_handle(self, tokens):
5224
5212
  """Handle type alias statements."""
5225
5213
  if len(tokens) == 2:
@@ -5293,6 +5281,20 @@ class {protocol_var}({tokens}, _coconut.typing.Protocol): pass
5293
5281
  cls_context = self.current_parsing_context("class")
5294
5282
  return cls_context is not None and cls_context["name"] is not None and cls_context["in_method"]
5295
5283
 
5284
+ @contextmanager
5285
+ def scope_manage(self, original=None, loc=None, item=None):
5286
+ """Manage a context that opens a new scope."""
5287
+ prev_typevar_info = self.current_parsing_context("typevars")
5288
+ with self.add_to_parsing_context({
5289
+ "scope": self.get_empty_scope(),
5290
+ "typevars": {
5291
+ "all_typevars": {} if prev_typevar_info is None else prev_typevar_info["all_typevars"].copy(),
5292
+ "new_typevars": [],
5293
+ "typevar_locs": {},
5294
+ },
5295
+ }):
5296
+ yield
5297
+
5296
5298
  @contextmanager
5297
5299
  def class_manage(self, original, loc, item):
5298
5300
  """Manage the class parsing context."""
@@ -5313,12 +5315,9 @@ class {protocol_var}({tokens}, _coconut.typing.Protocol): pass
5313
5315
  "in_method": False,
5314
5316
  })
5315
5317
  try:
5316
- # handles support for class type variables
5317
- with self.type_alias_stmt_manage():
5318
- with self.add_to_parsing_context({
5319
- "scope": self.get_empty_scope(),
5320
- }):
5321
- yield
5318
+ # handles support for class type variables and opens a new scope
5319
+ with self.scope_manage():
5320
+ yield
5322
5321
  finally:
5323
5322
  cls_stack.pop()
5324
5323
 
@@ -5329,12 +5328,9 @@ class {protocol_var}({tokens}, _coconut.typing.Protocol): pass
5329
5328
  if cls_context is not None:
5330
5329
  in_method, cls_context["in_method"] = cls_context["in_method"], True
5331
5330
  try:
5332
- # handles support for function type variables
5333
- with self.type_alias_stmt_manage():
5334
- with self.add_to_parsing_context({
5335
- "scope": self.get_empty_scope(),
5336
- }):
5337
- yield
5331
+ # handles support for function type variables and opens a new scope
5332
+ with self.scope_manage():
5333
+ yield
5338
5334
  finally:
5339
5335
  if cls_context is not None:
5340
5336
  cls_context["in_method"] = in_method
@@ -5538,7 +5534,15 @@ class {protocol_var}({tokens}, _coconut.typing.Protocol): pass
5538
5534
  # only mark as final after all checks pass
5539
5535
  if is_final:
5540
5536
  final_vars[name] = loc
5541
- if self.pure and assign and not escaped and not expr_setname:
5537
+ if (
5538
+ self.pure
5539
+ and assign
5540
+ and not escaped
5541
+ and not expr_setname
5542
+ # wildcard matching uses setname but doesn't actually assign the name,
5543
+ # so we need this to avoid false positives
5544
+ and name != wildcard
5545
+ ):
5542
5546
  pure_vars[name] = loc
5543
5547
 
5544
5548
  if name == "exec":
@@ -26,7 +26,7 @@ import sys as _coconut_sys
26
26
  VERSION = "3.2.0"
27
27
  VERSION_NAME = None
28
28
  # False for release, int >= 1 for develop
29
- DEVELOP = 6
29
+ DEVELOP = 7
30
30
  ALPHA = False # for pre releases rather than post releases
31
31
 
32
32
  assert DEVELOP is False or DEVELOP >= 1, "DEVELOP must be False or an int >= 1"