Typhon-Language 0.1.2__py3-none-any.whl → 0.1.4__py3-none-any.whl
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.
- Typhon/Driver/configs.py +14 -0
- Typhon/Driver/debugging.py +148 -5
- Typhon/Driver/diagnostic.py +4 -3
- Typhon/Driver/language_server.py +25 -0
- Typhon/Driver/run.py +1 -1
- Typhon/Driver/translate.py +16 -11
- Typhon/Driver/utils.py +39 -1
- Typhon/Grammar/_typhon_parser.py +2920 -2718
- Typhon/Grammar/parser.py +80 -53
- Typhon/Grammar/parser_helper.py +68 -87
- Typhon/Grammar/syntax_errors.py +41 -20
- Typhon/Grammar/token_factory_custom.py +541 -485
- Typhon/Grammar/tokenizer_custom.py +52 -0
- Typhon/Grammar/typhon_ast.py +754 -76
- Typhon/Grammar/typhon_ast_error.py +438 -0
- Typhon/Grammar/unparse_custom.py +25 -0
- Typhon/LanguageServer/__init__.py +3 -0
- Typhon/LanguageServer/client/__init__.py +42 -0
- Typhon/LanguageServer/client/pyrefly.py +115 -0
- Typhon/LanguageServer/client/pyright.py +173 -0
- Typhon/LanguageServer/semantic_tokens.py +446 -0
- Typhon/LanguageServer/server.py +376 -0
- Typhon/LanguageServer/utils.py +65 -0
- Typhon/SourceMap/ast_match_based_map.py +199 -152
- Typhon/SourceMap/ast_matching.py +102 -87
- Typhon/SourceMap/datatype.py +275 -264
- Typhon/SourceMap/defined_name_retrieve.py +145 -0
- Typhon/Transform/comprehension_to_function.py +2 -5
- Typhon/Transform/const_member_to_final.py +12 -7
- Typhon/Transform/extended_patterns.py +139 -0
- Typhon/Transform/forbidden_statements.py +25 -0
- Typhon/Transform/if_while_let.py +122 -11
- Typhon/Transform/inline_statement_block_capture.py +22 -15
- Typhon/Transform/optional_operators_to_checked.py +14 -6
- Typhon/Transform/placeholder_to_function.py +0 -1
- Typhon/Transform/record_to_dataclass.py +22 -238
- Typhon/Transform/scope_check_rename.py +109 -29
- Typhon/Transform/transform.py +16 -12
- Typhon/Transform/type_abbrev_desugar.py +11 -15
- Typhon/Transform/type_annotation_check_expand.py +2 -2
- Typhon/Transform/utils/__init__.py +0 -0
- Typhon/Transform/utils/imports.py +83 -0
- Typhon/Transform/{utils.py → utils/jump_away.py} +2 -38
- Typhon/Transform/utils/make_class.py +135 -0
- Typhon/Transform/visitor.py +25 -0
- Typhon/Typing/pyrefly.py +145 -0
- Typhon/Typing/pyright.py +141 -144
- Typhon/Typing/result_diagnostic.py +1 -1
- Typhon/__main__.py +15 -1
- {typhon_language-0.1.2.dist-info → typhon_language-0.1.4.dist-info}/METADATA +13 -6
- typhon_language-0.1.4.dist-info/RECORD +65 -0
- {typhon_language-0.1.2.dist-info → typhon_language-0.1.4.dist-info}/WHEEL +1 -1
- typhon_language-0.1.4.dist-info/licenses/LICENSE +201 -0
- typhon_language-0.1.2.dist-info/RECORD +0 -48
- typhon_language-0.1.2.dist-info/licenses/LICENSE +0 -21
- {typhon_language-0.1.2.dist-info → typhon_language-0.1.4.dist-info}/entry_points.txt +0 -0
- {typhon_language-0.1.2.dist-info → typhon_language-0.1.4.dist-info}/top_level.txt +0 -0
Typhon/Typing/pyright.py
CHANGED
|
@@ -1,144 +1,141 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
import subprocess
|
|
4
|
-
from ..Driver.debugging import debug_print
|
|
5
|
-
from typing import Literal, cast, Any
|
|
6
|
-
import json
|
|
7
|
-
from .result_diagnostic import Severity, Diagnostic, TypeCheckResult
|
|
8
|
-
from ..SourceMap.datatype import Range, Pos
|
|
9
|
-
|
|
10
|
-
# https://docs.basedpyright.com/dev/configuration/config-files/
|
|
11
|
-
type TypeCheckLevel = Literal[
|
|
12
|
-
"off",
|
|
13
|
-
"basic",
|
|
14
|
-
"strict",
|
|
15
|
-
"all",
|
|
16
|
-
"translate", # Default for Typhon translation
|
|
17
|
-
"script", # Default for Typhon scripts
|
|
18
|
-
]
|
|
19
|
-
translate_config = {
|
|
20
|
-
"typeCheckingMode": "strict",
|
|
21
|
-
"reportUnusedExpression": "warning",
|
|
22
|
-
"reportUnusedClass": "warning",
|
|
23
|
-
"reportUnusedImport": "warning",
|
|
24
|
-
"reportUnusedFunction": "warning",
|
|
25
|
-
"reportUnusedVariable": "warning",
|
|
26
|
-
"reportUnusedCallResult": "warning",
|
|
27
|
-
"reportUnnecessaryIsInstance": "warning",
|
|
28
|
-
"reportUnnecessaryCast": "warning",
|
|
29
|
-
"reportUnnecessaryComparison": "warning",
|
|
30
|
-
"reportUnnecessaryContains": "warning",
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
config.update(
|
|
61
|
-
elif level == "
|
|
62
|
-
config
|
|
63
|
-
elif level == "
|
|
64
|
-
config["typeCheckingMode"] = "
|
|
65
|
-
elif level == "
|
|
66
|
-
config["typeCheckingMode"] = "
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
"
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
)
|
|
141
|
-
result
|
|
142
|
-
output.stdout.decode(), output.returncode, output.stderr.decode()
|
|
143
|
-
)
|
|
144
|
-
return result
|
|
1
|
+
import sys
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
import subprocess
|
|
4
|
+
from ..Driver.debugging import debug_print
|
|
5
|
+
from typing import Literal, cast, Any
|
|
6
|
+
import json
|
|
7
|
+
from .result_diagnostic import Severity, Diagnostic, TypeCheckResult
|
|
8
|
+
from ..SourceMap.datatype import Range, Pos
|
|
9
|
+
|
|
10
|
+
# https://docs.basedpyright.com/dev/configuration/config-files/
|
|
11
|
+
type TypeCheckLevel = Literal[
|
|
12
|
+
"off",
|
|
13
|
+
"basic",
|
|
14
|
+
"strict",
|
|
15
|
+
"all",
|
|
16
|
+
"translate", # Default for Typhon translation
|
|
17
|
+
"script", # Default for Typhon scripts
|
|
18
|
+
]
|
|
19
|
+
translate_config = {
|
|
20
|
+
"typeCheckingMode": "strict",
|
|
21
|
+
"reportUnusedExpression": "warning",
|
|
22
|
+
"reportUnusedClass": "warning",
|
|
23
|
+
"reportUnusedImport": "warning",
|
|
24
|
+
"reportUnusedFunction": "warning",
|
|
25
|
+
"reportUnusedVariable": "warning",
|
|
26
|
+
"reportUnusedCallResult": "warning",
|
|
27
|
+
"reportUnnecessaryIsInstance": "warning",
|
|
28
|
+
"reportUnnecessaryCast": "warning",
|
|
29
|
+
# "reportUnnecessaryComparison": "warning", # To check type of patterns
|
|
30
|
+
"reportUnnecessaryContains": "warning",
|
|
31
|
+
"reportDeprecated": "warning",
|
|
32
|
+
}
|
|
33
|
+
script_config = {
|
|
34
|
+
"typeCheckingMode": "strict",
|
|
35
|
+
"reportUnusedExpression": "none",
|
|
36
|
+
"reportUnusedClass": "none",
|
|
37
|
+
"reportUnusedImport": "none",
|
|
38
|
+
"reportUnusedFunction": "none",
|
|
39
|
+
"reportUnusedVariable": "none",
|
|
40
|
+
"reportUnusedCallResult": "none",
|
|
41
|
+
"reportUnnecessaryIsInstance": "none",
|
|
42
|
+
"reportUnnecessaryCast": "none",
|
|
43
|
+
# "reportUnnecessaryComparison": "none", # To check type of patterns
|
|
44
|
+
"reportUnnecessaryContains": "none",
|
|
45
|
+
"reportDeprecated": "none",
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def write_pyright_config(
|
|
50
|
+
output_dir: Path, level: TypeCheckLevel = "translate", overwrite: bool = False
|
|
51
|
+
) -> str:
|
|
52
|
+
config = {
|
|
53
|
+
"include": ["**/*.py"],
|
|
54
|
+
"exclude": ["**/__pycache__"],
|
|
55
|
+
"typeCheckingMode": "off",
|
|
56
|
+
}
|
|
57
|
+
if level == "translate":
|
|
58
|
+
config.update(translate_config)
|
|
59
|
+
elif level == "script":
|
|
60
|
+
config.update(script_config)
|
|
61
|
+
elif level == "basic":
|
|
62
|
+
config["typeCheckingMode"] = "basic"
|
|
63
|
+
elif level == "strict":
|
|
64
|
+
config["typeCheckingMode"] = "strict"
|
|
65
|
+
elif level == "all":
|
|
66
|
+
config["typeCheckingMode"] = "all"
|
|
67
|
+
else:
|
|
68
|
+
raise ValueError(f"Unknown type check level: {level}")
|
|
69
|
+
config_path = output_dir / "pyrightconfig.json"
|
|
70
|
+
if not overwrite and config_path.exists():
|
|
71
|
+
debug_print(
|
|
72
|
+
f"Config file already exists at {config_path}. Use overwrite=True to replace."
|
|
73
|
+
)
|
|
74
|
+
return str(config_path)
|
|
75
|
+
with open(config_path, "w") as f:
|
|
76
|
+
json.dump(config, f, indent=4)
|
|
77
|
+
debug_print(f"Generated pyright config at {config_path}")
|
|
78
|
+
return str(config_path)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _try_read_attr[T](d: Any, attr: str, default: T) -> T:
|
|
82
|
+
result = d.get(attr, default)
|
|
83
|
+
return cast(T, result)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _parse_pos_range(pos: Any) -> Range:
|
|
87
|
+
start = _try_read_attr(pos, "start", {})
|
|
88
|
+
end = _try_read_attr(pos, "end", {})
|
|
89
|
+
return Range(
|
|
90
|
+
start=Pos(line=start.get("line", 0), column=start.get("character", 0)),
|
|
91
|
+
end=Pos(line=end.get("line", 0), column=end.get("character", 0)),
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def _parse_diagnostic(diag: Any) -> Diagnostic:
|
|
96
|
+
return Diagnostic(
|
|
97
|
+
file_path=_try_read_attr(diag, "file", ""),
|
|
98
|
+
severity=Severity[_try_read_attr(diag, "severity", "INFO").upper()],
|
|
99
|
+
message=_try_read_attr(diag, "message", ""),
|
|
100
|
+
pos=_parse_pos_range(diag["range"]),
|
|
101
|
+
rule=_try_read_attr(diag, "rule", ""),
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def parse_json_output(output: str, returncode: int, stderr: str) -> TypeCheckResult:
|
|
106
|
+
data = json.loads(output)
|
|
107
|
+
diagnostics = [
|
|
108
|
+
_parse_diagnostic(diag) for diag in data.get("generalDiagnostics", [])
|
|
109
|
+
]
|
|
110
|
+
summary = _try_read_attr(data, "summary", {})
|
|
111
|
+
return TypeCheckResult(
|
|
112
|
+
returncode=returncode,
|
|
113
|
+
stderr=stderr,
|
|
114
|
+
files_analyzed=_try_read_attr(summary, "filesAnalyzed", 0),
|
|
115
|
+
num_errors=_try_read_attr(summary, "errorCount", 0),
|
|
116
|
+
num_warnings=_try_read_attr(summary, "warningCount", 0),
|
|
117
|
+
num_info=_try_read_attr(summary, "informationCount", 0),
|
|
118
|
+
time_in_sec=_try_read_attr(summary, "timeInSec", 0.0),
|
|
119
|
+
diagnostics=diagnostics,
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def run_pyright(
|
|
124
|
+
py_file_or_dir: Path, level: TypeCheckLevel = "translate"
|
|
125
|
+
) -> TypeCheckResult:
|
|
126
|
+
output = subprocess.run(
|
|
127
|
+
[
|
|
128
|
+
sys.executable,
|
|
129
|
+
"-m",
|
|
130
|
+
"basedpyright",
|
|
131
|
+
str(py_file_or_dir),
|
|
132
|
+
"--outputjson",
|
|
133
|
+
],
|
|
134
|
+
stdout=subprocess.PIPE,
|
|
135
|
+
stderr=subprocess.PIPE,
|
|
136
|
+
shell=False,
|
|
137
|
+
)
|
|
138
|
+
result = parse_json_output(
|
|
139
|
+
output.stdout.decode(), output.returncode, output.stderr.decode()
|
|
140
|
+
)
|
|
141
|
+
return result
|
|
@@ -67,7 +67,7 @@ class TypeCheckResult:
|
|
|
67
67
|
output_error: bool = True,
|
|
68
68
|
output_warning: bool = True,
|
|
69
69
|
output_info: bool = True,
|
|
70
|
-
output_summary_even_no_diag: bool =
|
|
70
|
+
output_summary_even_no_diag: bool = False,
|
|
71
71
|
source_maps: dict[str, SourceMap | None] = {},
|
|
72
72
|
) -> str:
|
|
73
73
|
diags: list[str] = []
|
Typhon/__main__.py
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
import fire
|
|
3
3
|
from .Driver.translate import translate, tr
|
|
4
|
-
from .Driver.debugging import
|
|
4
|
+
from .Driver.debugging import (
|
|
5
|
+
set_debug_mode,
|
|
6
|
+
set_debug_verbose,
|
|
7
|
+
set_debug_first_error,
|
|
8
|
+
set_debug_log_file,
|
|
9
|
+
)
|
|
5
10
|
from .Driver.run import run
|
|
6
11
|
from .Driver.type_check import type_check
|
|
12
|
+
from .Driver.language_server import language_server
|
|
7
13
|
|
|
8
14
|
|
|
9
15
|
def _setup_debug_mode():
|
|
@@ -18,6 +24,13 @@ def _setup_debug_mode():
|
|
|
18
24
|
set_debug_mode(True)
|
|
19
25
|
set_debug_first_error(True)
|
|
20
26
|
sys.argv.remove("--debug-first-error")
|
|
27
|
+
if "--debug-log-file" in sys.argv:
|
|
28
|
+
index = sys.argv.index("--debug-log-file")
|
|
29
|
+
if index + 1 < len(sys.argv):
|
|
30
|
+
log_file = sys.argv[index + 1]
|
|
31
|
+
set_debug_log_file(log_file)
|
|
32
|
+
sys.argv.pop(index) # Remove --debug-log-file
|
|
33
|
+
sys.argv.pop(index) # Remove log file path
|
|
21
34
|
|
|
22
35
|
|
|
23
36
|
def main():
|
|
@@ -29,6 +42,7 @@ def main():
|
|
|
29
42
|
"tr": tr,
|
|
30
43
|
"run": run,
|
|
31
44
|
"type_check": type_check,
|
|
45
|
+
"lsp": language_server,
|
|
32
46
|
},
|
|
33
47
|
name="typhon",
|
|
34
48
|
)
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Typhon-Language
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Typhon programming language
|
|
5
5
|
Requires-Python: >=3.12
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
License-File: LICENSE
|
|
8
|
-
Requires-Dist: basedpyright>=1.
|
|
8
|
+
Requires-Dist: basedpyright>=1.37.1
|
|
9
9
|
Requires-Dist: fire>=0.7.1
|
|
10
|
-
Requires-Dist: intervaltree>=3.1
|
|
10
|
+
Requires-Dist: intervaltree>=3.2.1
|
|
11
11
|
Requires-Dist: pegen>=0.3.0
|
|
12
|
-
Requires-Dist:
|
|
13
|
-
Requires-Dist:
|
|
12
|
+
Requires-Dist: pygls>=2.0.0
|
|
13
|
+
Requires-Dist: pyrefly>=0.47.0
|
|
14
|
+
Requires-Dist: pytest>=9.0.2
|
|
15
|
+
Requires-Dist: ruff>=0.14.11
|
|
14
16
|
Dynamic: license-file
|
|
15
17
|
|
|
16
18
|
# Typhon
|
|
@@ -34,6 +36,7 @@ Run Typhon from the command line:
|
|
|
34
36
|
```bash
|
|
35
37
|
typhon --help
|
|
36
38
|
```
|
|
39
|
+
|
|
37
40
|
Create a simple Typhon program in `hello.typh`:
|
|
38
41
|
|
|
39
42
|
```typhon
|
|
@@ -55,7 +58,6 @@ Or run directly using uvx:
|
|
|
55
58
|
uvx --from typhon-language typhon run hello.typh
|
|
56
59
|
```
|
|
57
60
|
|
|
58
|
-
|
|
59
61
|
## Design Concepts
|
|
60
62
|
|
|
61
63
|
Typhon is built on three core pillars:
|
|
@@ -64,6 +66,11 @@ Typhon is built on three core pillars:
|
|
|
64
66
|
2. **Expressiveness**: Expression-oriented design with functional programming features. Control comprehension forms for `if`, `match`, `try`, and so on enable concise, value-returning expressions. Function literals, placeholders and pipe operators facilitate clean and readable code.
|
|
65
67
|
3. **Python Interoperability**: Typhon compiles directly to Python, allowing you to use the vast ecosystem of Python libraries seamlessly while enjoying a modern syntax.
|
|
66
68
|
|
|
69
|
+
### How it looks like
|
|
70
|
+
|
|
71
|
+
You can see small code snippets in the test directory: [Typhon Tests](test/execute/RunFileTest/).
|
|
72
|
+
|
|
73
|
+
|
|
67
74
|
## Documentation
|
|
68
75
|
|
|
69
76
|
For a complete guide to the language, please visit the **[Typhon Reference Manual](doc/reference/README.md)**.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Typhon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
Typhon/__main__.py,sha256=iJLubjFNRR_dYC0UNs_K8vqy1bpXZJKmrPjRdNNQtmo,1513
|
|
3
|
+
Typhon/Driver/configs.py,sha256=uHNYSsWn00gjwg9RuL3Pb94KdK6jtqr0wfXYo1Cv3Qw,402
|
|
4
|
+
Typhon/Driver/debugging.py,sha256=xbJnN1tyKHa5FUpu8S7wq0dBf3T8j9Bw3mkAIGU7-jY,5459
|
|
5
|
+
Typhon/Driver/diagnostic.py,sha256=m_7sR4zLx7YJwIrHsmo5AlmvuCSLoabpdkB-PHmnmK4,1327
|
|
6
|
+
Typhon/Driver/language_server.py,sha256=34_9oYWDr4ksAsQk4O8oXNqIyMROK2szyUraBJcZvS0,526
|
|
7
|
+
Typhon/Driver/run.py,sha256=Nv1scXdMGaiU4jlIdbn9TTLfd3a9VfiX2NlnrD7-kts,4564
|
|
8
|
+
Typhon/Driver/translate.py,sha256=2hkRNeH-F_75gMAadkssxfPhk99AwhJLPSXvZCH1dFo,6743
|
|
9
|
+
Typhon/Driver/type_check.py,sha256=9PDKsmAPcpdtQqZAE7LDjM8ynjKz02rNZwXDG2Kb3LE,1516
|
|
10
|
+
Typhon/Driver/utils.py,sha256=ZtKUqoJK8R_Dps7e4Y0EajEH-KPxB88WraiDkKgPxeU,2714
|
|
11
|
+
Typhon/Grammar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
Typhon/Grammar/_typhon_parser.py,sha256=vEIphAWnOT4ouaZT2un4JOvNMUmMoVZ4DvDnkjf1iMY,453258
|
|
13
|
+
Typhon/Grammar/line_break.py,sha256=lH2is1yAubG1fhXw5SbQUvlfmeLH7h3PbOEiVrAfRA0,2712
|
|
14
|
+
Typhon/Grammar/parser.py,sha256=a4s0Q-lT2kp1TYyB1h0976TW862hfO3YA2KyUw5pbqg,2139
|
|
15
|
+
Typhon/Grammar/parser_helper.py,sha256=kr_UNjfPw3AHly-2RnlXX0z2SPkvCuzsK6W-sR-C5b4,17420
|
|
16
|
+
Typhon/Grammar/syntax_errors.py,sha256=diwu_LFWqx1nKrhYa7B2as9ViJfSNzRWdW7n2Ml347w,5322
|
|
17
|
+
Typhon/Grammar/token_factory_custom.py,sha256=DFYZCw9UYZ2sdMBdI4v_mdV29FoTrmf35luvZiioEH4,22391
|
|
18
|
+
Typhon/Grammar/tokenizer_custom.py,sha256=hWZb25B-qgvpeLEI5U7jUfRxRlZqaxU9mLdabnYRLtQ,11653
|
|
19
|
+
Typhon/Grammar/typhon_ast.py,sha256=-LAvQJ7oRA_kpci9khj1_I3Sx8WUFwcsTxDWk5qTe0M,68393
|
|
20
|
+
Typhon/Grammar/typhon_ast_error.py,sha256=WgQKqcoi83BHkduRFVaAlOQcu1p6ec8Y0tZXsDvFIoc,12898
|
|
21
|
+
Typhon/Grammar/unparse_custom.py,sha256=97mjjp7TxEJY94BLprn6ULG401JPhTvy4-nkbXlJG0Y,778
|
|
22
|
+
Typhon/LanguageServer/__init__.py,sha256=hZ3c1OIjO5aR68buSTILHu1ojfJDZBSq_MBKNGZcjgk,49
|
|
23
|
+
Typhon/LanguageServer/semantic_tokens.py,sha256=KsnXryIk_qjKhscD4yDVadXD6RXXjbkwLUR5b42wcY0,16522
|
|
24
|
+
Typhon/LanguageServer/server.py,sha256=iaNFtw2FJehEgJZXJ2bK7tHP5Tu-OBrw9jhFdj4d8bQ,15573
|
|
25
|
+
Typhon/LanguageServer/utils.py,sha256=2nCwgUFdl4jjxLRA_t3fWYGGfMW5l-5K1bFTrk1nDVE,2302
|
|
26
|
+
Typhon/LanguageServer/client/__init__.py,sha256=ozM0Z_zoM8JDbE6SdMsb3poMbbfxM73NNzlV_d9MF1w,1205
|
|
27
|
+
Typhon/LanguageServer/client/pyrefly.py,sha256=KFNcbL4LWbHaQsyMa5DmRgRQ7KD6lQ3PR_IUzg66jt4,4192
|
|
28
|
+
Typhon/LanguageServer/client/pyright.py,sha256=_RsknVVfhWbwCpBN6JL_Uk1nYFm-avQP_bj_ctjMqy4,7364
|
|
29
|
+
Typhon/SourceMap/__init__.py,sha256=t56lq7YFlqhEfpW9_xHyIs2n_hhYuycMNRpyV9vjMI4,599
|
|
30
|
+
Typhon/SourceMap/ast_match_based_map.py,sha256=ZfPKs9PlHqZPsD9LbX7J9hoaPNJer_BUWbJOgN6bnM4,7750
|
|
31
|
+
Typhon/SourceMap/ast_matching.py,sha256=YRIxyOJmQPU1VJFDE8D1hIxq5UtYap_yFktR1Y9SpyQ,4091
|
|
32
|
+
Typhon/SourceMap/datatype.py,sha256=6ITNUeLixFgTYx7Ju-6fhW9-yqzZ7Ft8jc0rIc0fzQ4,10387
|
|
33
|
+
Typhon/SourceMap/defined_name_retrieve.py,sha256=RfU8yqc6kdgDQcjgaW93FscVJDS81tRx37PblbWt1Wo,5293
|
|
34
|
+
Typhon/Transform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
Typhon/Transform/comprehension_to_function.py,sha256=DNuE89genSkgEBhSsk9RyfB9vHZWr-F-wRwh-N_VztY,2643
|
|
36
|
+
Typhon/Transform/const_member_to_final.py,sha256=qIDrpYubQOUOFKsH4aquamihLQ02gwa0wGreRJrxdPI,2701
|
|
37
|
+
Typhon/Transform/extended_patterns.py,sha256=eylsTJKShw2ev4wQyUPgMLRGY0sg-AxIyDmmZRVTH_s,4553
|
|
38
|
+
Typhon/Transform/forbidden_statements.py,sha256=q0OoYqlJd1VCoLz9lUHJy1vObL9YAZNyC3GYuzoitOM,4521
|
|
39
|
+
Typhon/Transform/func_literal_to_def.py,sha256=SxI6lpktyeYFSmoVPqcDmKZ5CQcVXEmkg5sy1AtMPy0,2675
|
|
40
|
+
Typhon/Transform/if_while_let.py,sha256=pt7pfVZS2jhBHkRaIADTahWIWWjeUXpvUhincI3Koy0,10322
|
|
41
|
+
Typhon/Transform/inline_statement_block_capture.py,sha256=0mrgJBh1r48JaFIC6rZbsLBs0gHrgKcWW0a79snPlmM,8518
|
|
42
|
+
Typhon/Transform/insert_self_to_method.py,sha256=O9dOFx9wtYWwN0wR7D5PmX51REy1VKEzvVNt7lIVRRU,1593
|
|
43
|
+
Typhon/Transform/name_generator.py,sha256=_mAmG7ynGQEP4qBqp2rIpY3qMWC95UGbXTwHXBTYYPU,5906
|
|
44
|
+
Typhon/Transform/optional_operators_to_checked.py,sha256=Wy1e6XccYXoU8_fmWPP4selDs_7-nCPNS1f6C58NJZc,7143
|
|
45
|
+
Typhon/Transform/placeholder_to_function.py,sha256=xmeQUpFqpEiDuarDmvljsLZ9dvWYuHl7au-qGpgcFRI,5069
|
|
46
|
+
Typhon/Transform/record_to_dataclass.py,sha256=aAcqOIxYlQvJitorqkU3m_AEtI7NnB8YPvnnMWj-3-8,8579
|
|
47
|
+
Typhon/Transform/scope_check_rename.py,sha256=_KsgHlMVpxrnkxgfz3UQO4yFKZDFd8_pEAoAxQAn-U4,34246
|
|
48
|
+
Typhon/Transform/transform.py,sha256=wHVOlG5ZzclDOB2kiPRWmmWCNeO5XCEiIw3OT-29mN0,2548
|
|
49
|
+
Typhon/Transform/type_abbrev_desugar.py,sha256=xpdeAhx5n_kuA46jZWKN58pp_CEMaZNSTqPF1rq2m4E,6623
|
|
50
|
+
Typhon/Transform/type_annotation_check_expand.py,sha256=-otJMoZY4TNodVyQ93J2V4ra_f8iaIBlXrwAOQXJchQ,10479
|
|
51
|
+
Typhon/Transform/visitor.py,sha256=q28SH7gl2t9HKeobJRQZPgSYyrnKVMlmitI_wuyCGHo,12725
|
|
52
|
+
Typhon/Transform/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
+
Typhon/Transform/utils/imports.py,sha256=I1S0O5XpRsEwOeMGFt8fLKLniFvJIn9I4Mgt5sEDDog,2528
|
|
54
|
+
Typhon/Transform/utils/jump_away.py,sha256=8iGakrHaCQp9Te9_XYZ5-mGFUWmNKCBABnDKg1T2HVg,2998
|
|
55
|
+
Typhon/Transform/utils/make_class.py,sha256=E7uICoWP6_7rvlV2Y9BkcSBzpbJSBMYMpuX6xliVx-s,4237
|
|
56
|
+
Typhon/Typing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
+
Typhon/Typing/pyrefly.py,sha256=Cr5k-FWDLOFQZYm04eRr_mI-w8y-5on95fi7Y6L1sfU,4696
|
|
58
|
+
Typhon/Typing/pyright.py,sha256=uYDN0WonSiOeAKp-CS6sPfC5NAgk53Y_xTrVdei4HH0,4624
|
|
59
|
+
Typhon/Typing/result_diagnostic.py,sha256=kZYyzCvbXIxqIcvsMgJq7hxrwSZ4PB4IgD2Yt_VT93Q,3680
|
|
60
|
+
typhon_language-0.1.4.dist-info/licenses/LICENSE,sha256=op2ra-gs-As80dm_QEhnwEsrhTOqkkAp8-W6PMTlBXs,11348
|
|
61
|
+
typhon_language-0.1.4.dist-info/METADATA,sha256=OxUsveh4N_ASVicNtXi-t8BMENDGfwFbNKYHdSd69_4,6394
|
|
62
|
+
typhon_language-0.1.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
63
|
+
typhon_language-0.1.4.dist-info/entry_points.txt,sha256=a_tTwpYswStM7ViRyF0j7qn9jV3lN0TpGiYG8TQEjMw,48
|
|
64
|
+
typhon_language-0.1.4.dist-info/top_level.txt,sha256=H83GWRaycF_6jk0COdUlzXliigwTNM00Svnlp_k9F5Y,7
|
|
65
|
+
typhon_language-0.1.4.dist-info/RECORD,,
|