From 4fb1b028d1495479aa4475f3dc0b08c067c4d8c5 Mon Sep 17 00:00:00 2001 From: sivasathyaseeelan Date: Mon, 23 Jun 2025 23:06:42 +0530 Subject: [PATCH] pyre done --- pyre/.pyre/pyre.stderr | 464 ++++++++++++++++++++++++++++++++++++++ pyre/_benchmark.rkt | 41 ++++ pyre/examples/examples.py | 106 +++++++++ pyre/main/main.py | 272 ++++++++++++++++++++++ pyre/pyproject.toml | 11 + pyre/requirements.txt | 18 ++ 6 files changed, 912 insertions(+) create mode 100644 pyre/.pyre/pyre.stderr create mode 100644 pyre/_benchmark.rkt create mode 100644 pyre/examples/examples.py create mode 100644 pyre/main/main.py create mode 100644 pyre/pyproject.toml create mode 100644 pyre/requirements.txt diff --git a/pyre/.pyre/pyre.stderr b/pyre/.pyre/pyre.stderr new file mode 100644 index 0000000..c6e6372 --- /dev/null +++ b/pyre/.pyre/pyre.stderr @@ -0,0 +1,464 @@ +2025-06-23 16:26:47,126 [PID 33150] INFO No binary specified, looking for `pyre.bin` in PATH +2025-06-23 16:26:47,126 [PID 33150] INFO Pyre binary is located at `/home/siva/.venvs/venv/bin/pyre.bin` +2025-06-23 16:26:47,127 [PID 33150] INFO Could not determine the number of Pyre workers from configuration. Auto-set the value to 3. +2025-06-23 16:26:47,127 [PID 33150] INFO No typeshed specified, looking for it... +2025-06-23 16:26:47,128 [PID 33150] INFO Found: `/home/siva/.venvs/venv/lib/pyre_check/typeshed` +2025-06-23 16:26:47,128 [PID 33150] INFO Writing arguments into /tmp/pyre_arguments_2j06m59n.json... +2025-06-23 16:26:47,129 [PID 33150] DEBUG Arguments: +{ + "source_paths": { + "kind": "simple", + "paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/examples" + ] + }, + "search_paths": [ + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stdlib", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/ExifRead", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/PyMySQL", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/PyYAML", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/aiofiles", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/boto", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/chevron", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/colorama", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/ldap3", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/mysqlclient", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/paramiko", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/psycopg2", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/pycurl", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/python-dateutil", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/pytz", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/regex", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/requests", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/retry", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/tqdm", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/ujson" + ], + "excludes": [], + "checked_directory_allowlist": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/examples" + ], + "checked_directory_blocklist": [], + "extensions": [], + "log_path": "/home/siva/Desktop/sor/ifT-benchmark/pyre/.pyre", + "global_root": "/home/siva/Desktop/sor/ifT-benchmark/pyre", + "debug": false, + "python_version": { + "major": 3, + "minor": 12, + "micro": 8 + }, + "system_platform": "linux", + "shared_memory": {}, + "parallel": true, + "number_of_workers": 3, + "additional_logging_sections": [], + "show_error_traces": false, + "strict": false +} +2025-06-23 16:26:47,170 [PID 33150] INFO Initializing shared memory (heap_size: 8589934592, dep_table_pow: 1, hash_table_pow: 26) +2025-06-23 16:26:47,170 [PID 33150] INFO Building module tracker... +2025-06-23 16:26:47,211 [PID 33150] PERFORMANCE Module tracker built: 0.038s +2025-06-23 16:26:47,211 [PID 33150] PERFORMANCE Full environment built: 0.039s +2025-06-23 16:26:47,211 [PID 33150] INFO Collecting all definitions... +2025-06-23 16:26:47,211 [PID 33150] PERFORMANCE Collected definitions (defines: 9): 0.007s +2025-06-23 16:26:47,211 [PID 33150] INFO Checking 9 functions... +2025-06-23 16:26:47,576 [PID 33150] INFO Processed 2 of 9 functions +2025-06-23 16:26:47,597 [PID 33150] INFO Processed 4 of 9 functions +2025-06-23 16:26:47,608 [PID 33150] INFO Processed 6 of 9 functions +2025-06-23 16:26:47,669 [PID 33150] INFO Processed 8 of 9 functions +2025-06-23 16:26:47,680 [PID 33150] INFO Processed 9 of 9 functions +2025-06-23 16:26:47,680 [PID 33150] PERFORMANCE Check_TypeCheck: 0.460s +2025-06-23 16:26:47,680 [PID 33150] MEMORY Shared memory size post-typecheck (size: 0) +2025-06-23 16:26:47,680 [PID 33150] INFO Postprocessing 1 sources... +2025-06-23 16:26:47,680 [PID 33150] INFO Postprocessed 1 of 1 sources +2025-06-23 16:26:47,680 [PID 33150] PERFORMANCE Check_Postprocessing: 0.001s +2025-06-23 16:26:47,680 [PID 33150] PERFORMANCE Check (request kind: FullCheck): 0.509s +2025-06-23 16:26:47,691 [PID 33150] ERROR Found 4 type errors! +2025-06-23 16:26:54,413 [PID 33244] INFO No binary specified, looking for `pyre.bin` in PATH +2025-06-23 16:26:54,414 [PID 33244] INFO Pyre binary is located at `/home/siva/.venvs/venv/bin/pyre.bin` +2025-06-23 16:26:54,415 [PID 33244] INFO Could not determine the number of Pyre workers from configuration. Auto-set the value to 3. +2025-06-23 16:26:54,415 [PID 33244] INFO No typeshed specified, looking for it... +2025-06-23 16:26:54,415 [PID 33244] INFO Found: `/home/siva/.venvs/venv/lib/pyre_check/typeshed` +2025-06-23 16:26:54,416 [PID 33244] INFO Writing arguments into /tmp/pyre_arguments_zyb3cybd.json... +2025-06-23 16:26:54,417 [PID 33244] DEBUG Arguments: +{ + "source_paths": { + "kind": "simple", + "paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ] + }, + "search_paths": [ + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stdlib", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/ExifRead", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/PyMySQL", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/PyYAML", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/aiofiles", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/boto", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/chevron", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/colorama", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/ldap3", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/mysqlclient", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/paramiko", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/psycopg2", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/pycurl", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/python-dateutil", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/pytz", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/regex", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/requests", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/retry", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/tqdm", + "/home/siva/.venvs/venv/lib/pyre_check/typeshed/stubs/ujson" + ], + "excludes": [], + "checked_directory_allowlist": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ], + "checked_directory_blocklist": [], + "extensions": [], + "log_path": "/home/siva/Desktop/sor/ifT-benchmark/pyre/.pyre", + "global_root": "/home/siva/Desktop/sor/ifT-benchmark/pyre", + "debug": false, + "python_version": { + "major": 3, + "minor": 12, + "micro": 8 + }, + "system_platform": "linux", + "shared_memory": {}, + "parallel": true, + "number_of_workers": 3, + "additional_logging_sections": [], + "show_error_traces": false, + "strict": false +} +2025-06-23 16:26:54,449 [PID 33244] INFO Initializing shared memory (heap_size: 8589934592, dep_table_pow: 1, hash_table_pow: 26) +2025-06-23 16:26:54,460 [PID 33244] INFO Building module tracker... +2025-06-23 16:26:54,511 [PID 33244] PERFORMANCE Module tracker built: 0.052s +2025-06-23 16:26:54,512 [PID 33244] PERFORMANCE Full environment built: 0.053s +2025-06-23 16:26:54,512 [PID 33244] INFO Collecting all definitions... +2025-06-23 16:26:54,532 [PID 33244] PERFORMANCE Collected definitions (defines: 44): 0.019s +2025-06-23 16:26:54,532 [PID 33244] INFO Checking 44 functions... +2025-06-23 16:26:54,919 [PID 33244] INFO Processed 8 of 44 functions +2025-06-23 16:26:54,930 [PID 33244] INFO Processed 16 of 44 functions +2025-06-23 16:26:54,930 [PID 33244] INFO Processed 24 of 44 functions +2025-06-23 16:26:54,991 [PID 33244] INFO Processed 32 of 44 functions +2025-06-23 16:26:55,003 [PID 33244] INFO Processed 40 of 44 functions +2025-06-23 16:26:55,034 [PID 33244] INFO Processed 44 of 44 functions +2025-06-23 16:26:55,034 [PID 33244] PERFORMANCE Check_TypeCheck: 0.497s +2025-06-23 16:26:55,034 [PID 33244] MEMORY Shared memory size post-typecheck (size: 0) +2025-06-23 16:26:55,034 [PID 33244] INFO Postprocessing 1 sources... +2025-06-23 16:26:55,035 [PID 33244] INFO Postprocessed 1 of 1 sources +2025-06-23 16:26:55,035 [PID 33244] PERFORMANCE Check_Postprocessing: 0.005s +2025-06-23 16:26:55,035 [PID 33244] PERFORMANCE Check (request kind: FullCheck): 0.577s +2025-06-23 16:26:55,057 [PID 33244] ERROR Found 23 type errors! +2025-06-23 23:03:28,782 [PID 12865] INFO No binary specified, looking for `pyre.bin` in PATH +2025-06-23 23:03:28,783 [PID 12865] INFO Pyre binary is located at `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/bin/pyre.bin` +2025-06-23 23:03:28,783 [PID 12865] INFO Could not determine the number of Pyre workers from configuration. Auto-set the value to 3. +2025-06-23 23:03:28,784 [PID 12865] INFO No typeshed specified, looking for it... +2025-06-23 23:03:28,784 [PID 12865] INFO Found: `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed` +2025-06-23 23:03:28,784 [PID 12865] INFO Writing arguments into /tmp/pyre_arguments_m6y1hl1i.json... +2025-06-23 23:03:28,785 [PID 12865] DEBUG Arguments: +{ + "source_paths": { + "kind": "simple", + "paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ] + }, + "search_paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stdlib", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ExifRead", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyMySQL", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyYAML", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/aiofiles", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/boto", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/chevron", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/colorama", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ldap3", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/mysqlclient", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/paramiko", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/psycopg2", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pycurl", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/python-dateutil", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pytz", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/regex", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/requests", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/retry", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/tqdm", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ujson" + ], + "excludes": [], + "checked_directory_allowlist": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ], + "checked_directory_blocklist": [], + "extensions": [], + "log_path": "/home/siva/Desktop/sor/ifT-benchmark/pyre/.pyre", + "global_root": "/home/siva/Desktop/sor/ifT-benchmark/pyre", + "debug": false, + "python_version": { + "major": 3, + "minor": 12, + "micro": 8 + }, + "system_platform": "linux", + "shared_memory": {}, + "parallel": true, + "number_of_workers": 3, + "additional_logging_sections": [], + "show_error_traces": false, + "strict": false +} +2025-06-23 23:03:28,805 [PID 12865] INFO Initializing shared memory (heap_size: 8589934592, dep_table_pow: 1, hash_table_pow: 26) +2025-06-23 23:03:28,805 [PID 12865] INFO Building module tracker... +2025-06-23 23:03:28,846 [PID 12865] PERFORMANCE Module tracker built: 0.036s +2025-06-23 23:03:28,847 [PID 12865] PERFORMANCE Full environment built: 0.036s +2025-06-23 23:03:28,847 [PID 12865] INFO Collecting all definitions... +2025-06-23 23:03:28,857 [PID 12865] PERFORMANCE Collected definitions (defines: 44): 0.014s +2025-06-23 23:03:28,857 [PID 12865] INFO Checking 44 functions... +2025-06-23 23:03:29,101 [PID 12865] INFO Processed 8 of 44 functions +2025-06-23 23:03:29,101 [PID 12865] INFO Processed 16 of 44 functions +2025-06-23 23:03:29,102 [PID 12865] INFO Processed 24 of 44 functions +2025-06-23 23:03:29,142 [PID 12865] INFO Processed 32 of 44 functions +2025-06-23 23:03:29,153 [PID 12865] INFO Processed 40 of 44 functions +2025-06-23 23:03:29,164 [PID 12865] INFO Processed 44 of 44 functions +2025-06-23 23:03:29,165 [PID 12865] PERFORMANCE Check_TypeCheck: 0.305s +2025-06-23 23:03:29,165 [PID 12865] MEMORY Shared memory size post-typecheck (size: 0) +2025-06-23 23:03:29,165 [PID 12865] INFO Postprocessing 1 sources... +2025-06-23 23:03:29,165 [PID 12865] INFO Postprocessed 1 of 1 sources +2025-06-23 23:03:29,165 [PID 12865] PERFORMANCE Check_Postprocessing: 0.003s +2025-06-23 23:03:29,166 [PID 12865] PERFORMANCE Check (request kind: FullCheck): 0.359s +2025-06-23 23:03:29,176 [PID 12865] ERROR Found 23 type errors! +2025-06-23 23:03:41,281 [PID 12999] INFO No binary specified, looking for `pyre.bin` in PATH +2025-06-23 23:03:41,281 [PID 12999] INFO Pyre binary is located at `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/bin/pyre.bin` +2025-06-23 23:03:41,282 [PID 12999] INFO Could not determine the number of Pyre workers from configuration. Auto-set the value to 3. +2025-06-23 23:03:41,291 [PID 12999] INFO No typeshed specified, looking for it... +2025-06-23 23:03:41,291 [PID 12999] INFO Found: `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed` +2025-06-23 23:03:41,292 [PID 12999] INFO Writing arguments into /tmp/pyre_arguments_oa2ho4o4.json... +2025-06-23 23:03:41,293 [PID 12999] DEBUG Arguments: +{ + "source_paths": { + "kind": "simple", + "paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ] + }, + "search_paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stdlib", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ExifRead", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyMySQL", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyYAML", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/aiofiles", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/boto", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/chevron", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/colorama", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ldap3", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/mysqlclient", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/paramiko", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/psycopg2", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pycurl", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/python-dateutil", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pytz", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/regex", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/requests", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/retry", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/tqdm", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ujson" + ], + "excludes": [], + "checked_directory_allowlist": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ], + "checked_directory_blocklist": [], + "extensions": [], + "log_path": "/home/siva/Desktop/sor/ifT-benchmark/pyre/.pyre", + "global_root": "/home/siva/Desktop/sor/ifT-benchmark/pyre", + "debug": false, + "python_version": { + "major": 3, + "minor": 12, + "micro": 8 + }, + "system_platform": "linux", + "shared_memory": {}, + "parallel": true, + "number_of_workers": 3, + "additional_logging_sections": [], + "show_error_traces": false, + "strict": false +} +2025-06-23 23:03:41,315 [PID 12999] INFO Initializing shared memory (heap_size: 8589934592, dep_table_pow: 1, hash_table_pow: 26) +2025-06-23 23:03:41,325 [PID 12999] INFO Building module tracker... +2025-06-23 23:03:41,356 [PID 12999] PERFORMANCE Module tracker built: 0.031s +2025-06-23 23:03:41,356 [PID 12999] PERFORMANCE Full environment built: 0.031s +2025-06-23 23:03:41,356 [PID 12999] INFO Collecting all definitions... +2025-06-23 23:03:41,367 [PID 12999] PERFORMANCE Collected definitions (defines: 44): 0.009s +2025-06-23 23:03:41,367 [PID 12999] INFO Checking 44 functions... +2025-06-23 23:03:41,601 [PID 12999] INFO Processed 8 of 44 functions +2025-06-23 23:03:41,601 [PID 12999] INFO Processed 16 of 44 functions +2025-06-23 23:03:41,601 [PID 12999] INFO Processed 24 of 44 functions +2025-06-23 23:03:41,645 [PID 12999] INFO Processed 32 of 44 functions +2025-06-23 23:03:41,645 [PID 12999] INFO Processed 40 of 44 functions +2025-06-23 23:03:41,655 [PID 12999] INFO Processed 44 of 44 functions +2025-06-23 23:03:41,656 [PID 12999] PERFORMANCE Check_TypeCheck: 0.289s +2025-06-23 23:03:41,656 [PID 12999] MEMORY Shared memory size post-typecheck (size: 0) +2025-06-23 23:03:41,656 [PID 12999] INFO Postprocessing 1 sources... +2025-06-23 23:03:41,656 [PID 12999] INFO Postprocessed 1 of 1 sources +2025-06-23 23:03:41,656 [PID 12999] PERFORMANCE Check_Postprocessing: 0.003s +2025-06-23 23:03:41,656 [PID 12999] PERFORMANCE Check (request kind: FullCheck): 0.335s +2025-06-23 23:03:41,668 [PID 12999] ERROR Found 23 type errors! +2025-06-23 23:04:11,203 [PID 13251] INFO No binary specified, looking for `pyre.bin` in PATH +2025-06-23 23:04:11,204 [PID 13251] INFO Pyre binary is located at `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/bin/pyre.bin` +2025-06-23 23:04:11,205 [PID 13251] INFO Could not determine the number of Pyre workers from configuration. Auto-set the value to 3. +2025-06-23 23:04:11,205 [PID 13251] INFO No typeshed specified, looking for it... +2025-06-23 23:04:11,205 [PID 13251] INFO Found: `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed` +2025-06-23 23:04:11,205 [PID 13251] INFO Writing arguments into /tmp/pyre_arguments_wmjito83.json... +2025-06-23 23:04:11,206 [PID 13251] DEBUG Arguments: +{ + "source_paths": { + "kind": "simple", + "paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ] + }, + "search_paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stdlib", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ExifRead", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyMySQL", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyYAML", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/aiofiles", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/boto", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/chevron", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/colorama", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ldap3", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/mysqlclient", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/paramiko", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/psycopg2", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pycurl", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/python-dateutil", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pytz", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/regex", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/requests", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/retry", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/tqdm", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ujson" + ], + "excludes": [], + "checked_directory_allowlist": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ], + "checked_directory_blocklist": [], + "extensions": [], + "log_path": "/home/siva/Desktop/sor/ifT-benchmark/pyre/.pyre", + "global_root": "/home/siva/Desktop/sor/ifT-benchmark/pyre", + "debug": false, + "python_version": { + "major": 3, + "minor": 12, + "micro": 8 + }, + "system_platform": "linux", + "shared_memory": {}, + "parallel": true, + "number_of_workers": 3, + "additional_logging_sections": [], + "show_error_traces": false, + "strict": false +} +2025-06-23 23:04:11,226 [PID 13251] INFO Initializing shared memory (heap_size: 8589934592, dep_table_pow: 1, hash_table_pow: 26) +2025-06-23 23:04:11,237 [PID 13251] INFO Building module tracker... +2025-06-23 23:04:11,268 [PID 13251] PERFORMANCE Module tracker built: 0.037s +2025-06-23 23:04:11,268 [PID 13251] PERFORMANCE Full environment built: 0.037s +2025-06-23 23:04:11,268 [PID 13251] INFO Collecting all definitions... +2025-06-23 23:04:11,280 [PID 13251] PERFORMANCE Collected definitions (defines: 44): 0.011s +2025-06-23 23:04:11,280 [PID 13251] INFO Checking 44 functions... +2025-06-23 23:04:11,587 [PID 13251] INFO Processed 8 of 44 functions +2025-06-23 23:04:11,587 [PID 13251] INFO Processed 16 of 44 functions +2025-06-23 23:04:11,587 [PID 13251] INFO Processed 24 of 44 functions +2025-06-23 23:04:11,628 [PID 13251] INFO Processed 32 of 44 functions +2025-06-23 23:04:11,628 [PID 13251] INFO Processed 40 of 44 functions +2025-06-23 23:04:11,650 [PID 13251] INFO Processed 44 of 44 functions +2025-06-23 23:04:11,650 [PID 13251] PERFORMANCE Check_TypeCheck: 0.369s +2025-06-23 23:04:11,650 [PID 13251] MEMORY Shared memory size post-typecheck (size: 0) +2025-06-23 23:04:11,650 [PID 13251] INFO Postprocessing 1 sources... +2025-06-23 23:04:11,662 [PID 13251] ERROR Found 23 type errors! +2025-06-23 23:05:25,550 [PID 13804] INFO No binary specified, looking for `pyre.bin` in PATH +2025-06-23 23:05:25,551 [PID 13804] INFO Pyre binary is located at `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/bin/pyre.bin` +2025-06-23 23:05:25,551 [PID 13804] INFO Could not determine the number of Pyre workers from configuration. Auto-set the value to 3. +2025-06-23 23:05:25,551 [PID 13804] INFO No typeshed specified, looking for it... +2025-06-23 23:05:25,552 [PID 13804] INFO Found: `/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed` +2025-06-23 23:05:25,552 [PID 13804] INFO Writing arguments into /tmp/pyre_arguments_z8yq6rvd.json... +2025-06-23 23:05:25,552 [PID 13804] DEBUG Arguments: +{ + "source_paths": { + "kind": "simple", + "paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ] + }, + "search_paths": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stdlib", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ExifRead", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyMySQL", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/PyYAML", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/aiofiles", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/boto", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/chevron", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/colorama", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ldap3", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/mysqlclient", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/paramiko", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/psycopg2", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pycurl", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/python-dateutil", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/pytz", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/regex", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/requests", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/retry", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/tqdm", + "/home/siva/Desktop/sor/ifT-benchmark/pyre/venv/lib/pyre_check/typeshed/stubs/ujson" + ], + "excludes": [], + "checked_directory_allowlist": [ + "/home/siva/Desktop/sor/ifT-benchmark/pyre/main" + ], + "checked_directory_blocklist": [], + "extensions": [], + "log_path": "/home/siva/Desktop/sor/ifT-benchmark/pyre/.pyre", + "global_root": "/home/siva/Desktop/sor/ifT-benchmark/pyre", + "debug": false, + "python_version": { + "major": 3, + "minor": 12, + "micro": 8 + }, + "system_platform": "linux", + "shared_memory": {}, + "parallel": true, + "number_of_workers": 3, + "additional_logging_sections": [], + "show_error_traces": false, + "strict": false +} +2025-06-23 23:05:25,583 [PID 13804] INFO Initializing shared memory (heap_size: 8589934592, dep_table_pow: 1, hash_table_pow: 26) +2025-06-23 23:05:25,584 [PID 13804] INFO Building module tracker... +2025-06-23 23:05:25,614 [PID 13804] PERFORMANCE Module tracker built: 0.037s +2025-06-23 23:05:25,614 [PID 13804] PERFORMANCE Full environment built: 0.038s +2025-06-23 23:05:25,614 [PID 13804] INFO Collecting all definitions... +2025-06-23 23:05:25,635 [PID 13804] PERFORMANCE Collected definitions (defines: 44): 0.014s +2025-06-23 23:05:25,635 [PID 13804] INFO Checking 44 functions... +2025-06-23 23:05:25,879 [PID 13804] INFO Processed 8 of 44 functions +2025-06-23 23:05:25,893 [PID 13804] INFO Processed 16 of 44 functions +2025-06-23 23:05:25,893 [PID 13804] INFO Processed 24 of 44 functions +2025-06-23 23:05:25,934 [PID 13804] INFO Processed 32 of 44 functions +2025-06-23 23:05:25,934 [PID 13804] INFO Processed 40 of 44 functions +2025-06-23 23:05:25,954 [PID 13804] INFO Processed 44 of 44 functions +2025-06-23 23:05:25,955 [PID 13804] PERFORMANCE Check_TypeCheck: 0.319s +2025-06-23 23:05:25,955 [PID 13804] MEMORY Shared memory size post-typecheck (size: 0) +2025-06-23 23:05:25,955 [PID 13804] INFO Postprocessing 1 sources... +2025-06-23 23:05:25,955 [PID 13804] INFO Postprocessed 1 of 1 sources +2025-06-23 23:05:25,955 [PID 13804] PERFORMANCE Check_Postprocessing: 0.002s +2025-06-23 23:05:25,955 [PID 13804] PERFORMANCE Check (request kind: FullCheck): 0.375s +2025-06-23 23:05:25,966 [PID 13804] ERROR Found 23 type errors! diff --git a/pyre/_benchmark.rkt b/pyre/_benchmark.rkt new file mode 100644 index 0000000..fd3f01b --- /dev/null +++ b/pyre/_benchmark.rkt @@ -0,0 +1,41 @@ +#lang racket + +(require racket/cmdline) +(require "../lib.rkt") + +(define current-typechecker-symbol 'pyre) +(define current-typechecker-name "pyre") + +(define typechecker-parameters + `((name ,current-typechecker-name) + (comment-char #\#) + (extension ".py") + (file-base-path ,(current-directory)) + (examples-file-base-path ,(current-directory)) + (arguments ,(list "check" "--source-directory=main" "none" "--version" "pyre")) + (examples-arguments ,(list "check" "--source-directory=examples" "none" "--version" "pyre")) + (command "npx"))) + +(command-line + #:program "_benchmark.rkt" + #:once-each + [("-v" "--verbose") "Print the output of the benchmarks to the console" + (benchmark-verbose #t)] + [("-f" "--format") output-format "Print the output of the benchmarks in the specified format. Options: plain, markdown, tex. Default: plain." + (benchmark-output-format (string->symbol output-format))] + [("-t" "--transpose") "Transpose the output of the benchmarks" + (benchmark-output-transposed #t)] + [("-e" "--examples") "Run the advanced examples" + (benchmark-run-examples #t)] + #:args () + (void)) + +(define benchmark-data (execute-benchmark-for-one-typechecker typechecker-parameters)) +(define benchmark-result-for-printing (list (cons current-typechecker-name benchmark-data))) + +(define actual-test-names (map car benchmark-data)) +(define header-row (cons "Benchmark" actual-test-names)) + +(print-benchmark benchmark-result-for-printing + (benchmark-output-format) + header-row) diff --git a/pyre/examples/examples.py b/pyre/examples/examples.py new file mode 100644 index 0000000..fa58a2c --- /dev/null +++ b/pyre/examples/examples.py @@ -0,0 +1,106 @@ +from typing import TypeIs, Callable, TypeVar, Union + +T = TypeVar("T") +S = TypeVar("S") +type JSON = Union[str, float, bool, None, list[JSON], dict[str, JSON]] + +### Code: +## Example filter +## success +def filter_success(l: list[T], predicate: Callable[[T], TypeIs[S]]) -> list[S]: + result: list[S] = [] + for element in l: + if predicate(element): + result.append(element) + return result + +## failure +def filter_failure(l: list[T], predicate: Callable[[T], TypeIs[S]]) -> list[S]: + result: list[S] = [] + for element in l: + if predicate(element): + result.append(element) + else: + result.append(element) + return result + +## Example flatten +## success +type MaybeNestedListSuccess = list[MaybeNestedListSuccess] | int +def flatten_success(l: MaybeNestedListSuccess) -> list[int]: + if isinstance(l, list): + if l: + return flatten_success(l[0]) + flatten_success(l[1:]) + else: + return [] + else: + return [l] + +## failure +type MaybeNestedListFailure = list[MaybeNestedListFailure] | int +def flatten_failure(l: MaybeNestedListFailure) -> list[int]: + if isinstance(l, list): + if l: + return flatten_failure(l[0]) + flatten_failure(l[1:]) + else: + return [] + else: + return l + +## Example tree_node +## success +type TreeNodeSuccess = tuple[int, list[TreeNodeSuccess]] + +def is_tree_node_success(node: object) -> TypeIs[TreeNodeSuccess]: + if not (isinstance(node, tuple) and len(node) == 2): + return False + else: + if not isinstance(node[0], int): + return False + else: + if not isinstance(node[1], list): + return False + else: + for child in node[1]: + if not is_tree_node_success(child): + return False + return True + +## failure +type TreeNodeFailure = tuple[int, list[TreeNodeFailure]] + +def is_tree_node_failure(node: object) -> TypeIs[TreeNodeFailure]: + if not (isinstance(node, tuple) and len(node) == 2): + return False + else: + if not isinstance(node[0], int): + return False + else: + if not isinstance(node[1], list): + return False + else: + return True + +## Example rainfall +## success +def rainfall_success(weather_reports: list[JSON]) -> float: + total = 0.0 + count = 0 + for day in weather_reports: + if isinstance(day, dict) and "rainfall" in day: + val = day["rainfall"] + if isinstance(val, float) and 0 <= val <= 999: + total += val + count += 1 + return total / count if count > 0 else 0 + +## failure +def rainfall_failure(weather_reports: list[JSON]) -> float: + total = 0.0 + count = 0 + for day in weather_reports: + if isinstance(day, dict) and "rainfall" in day: + val = day["rainfall"] + total += val + count += 1 + return total / count if count > 0 else 0 diff --git a/pyre/main/main.py b/pyre/main/main.py new file mode 100644 index 0000000..c409a73 --- /dev/null +++ b/pyre/main/main.py @@ -0,0 +1,272 @@ +from typing import Any, Literal, Set, Type, TypeGuard, TypeVar, Callable, final +from typing_extensions import TypeIs, reveal_type + +@final +class FinalStr(str): + pass + +@final +class FinalInt(int): + pass + +### Code: +## Example positive +## success +def positive_success_f(x: object) -> object: + if type(x) is FinalStr: + return len(x) + else: + return x + +## failure +def positive_failure_f(x: object) -> object: + if type(x) is FinalStr: + return x + 1 + else: + return x + +## Example negative +## success +def negative_success_f(x: FinalStr | FinalInt) -> int: + if type(x) is FinalStr: + return len(x) + else: + return x + 1 + +## failure +def negative_failure_f(x: FinalStr | FinalInt | bool) -> int: + if type(x) is FinalStr: + return len(x) + else: + return len(x) + +## Example connectives +## success +def connectives_success_f(x: FinalStr | FinalInt) -> int: + if type(x) is not FinalInt: + return len(x) + else: + return 0 + +def connectives_success_g(x: object) -> int: + if type(x) is FinalStr or type(x) is FinalInt: + return connectives_success_f(x) + else: + return 0 + +def connectives_success_h(x: FinalStr | FinalInt | bool) -> int: + if type(x) is not bool and type(x) is not FinalInt: + return len(x) + else: + return 0 + +## failure +def connectives_failure_f(x: FinalStr | FinalInt) -> int: + if type(x) is not FinalInt: + return x + 1 + else: + return 0 + +def connectives_failure_g(x: object) -> int: + if type(x) is FinalStr or type(x) is FinalInt: + return x + 1 + else: + return 0 + +def connectives_failure_h(x: FinalStr | FinalInt | bool) -> int: + if type(x) is not bool and type(x) is not FinalInt: + return x + 1 + else: + return 0 + +## Example nesting_body +## success +def nesting_body_success_f(x: FinalStr | FinalInt | bool) -> int: + if not (type(x) is FinalStr): + if not (type(x) is bool): + return x + 1 + else: + return 0 + else: + return 0 + +## failure +def nesting_body_failure_f(x: FinalStr | FinalInt | bool) -> int: + if type(x) is FinalStr or type(x) is FinalInt: + if type(x) is FinalInt or type(x) is bool: + return len(x) + else: + return 0 + else: + return 0 + +## Example struct_fields +## success +class StructFieldsSuccessApple: + def __init__(self, a): + self.a = a + +def struct_fields_success_f(x: StructFieldsSuccessApple) -> int: + if type(x.a) is FinalInt: + return x.a + else: + return 0 + +## failure +class StructFieldsFailureApple: + def __init__(self, a): + self.a = a + +def struct_fields_failure_f(x: StructFieldsFailureApple) -> int: + if type(x.a) is FinalStr: + return x.a + else: + return 0 + +## Example tuple_elements +## success +def tuple_elements_success_f(x: tuple[object, object]) -> int: + if type(x[0]) is FinalInt: + return x[0] + else: + return 0 + +## failure +def tuple_elements_failure_f(x: tuple[object, object]) -> int: + if type(x[0]) is FinalInt: + return x[0] + x[1] + else: + return 0 + +## Example tuple_length +## success +def tuple_length_success_f(x: tuple[FinalInt, FinalInt] | tuple[FinalStr, FinalStr, FinalStr]) -> int: + if len(x) == 2: + return x[0] + x[1] + else: + return len(x[0]) + +## failure +def tuple_length_failure_f(x: tuple[FinalInt, FinalInt] | tuple[FinalStr, FinalStr, FinalStr]) -> int: + if len(x) == 2: + return x[0] + x[1] + else: + return x[0] + x[1] + +## Example alias +## success +def alias_success_f(x: object) -> object: + y = type(x) is FinalStr + if y: + return len(x) + else: + return x + +## failure +def alias_failure_f(x: object) -> object: + y = type(x) is FinalStr + if y: + return x + 1 + else: + return x + +def alias_failure_g(x: object) -> object: + y = type(x) is FinalStr + y = True + if y: + return len(x) + else: + return x + +## Example nesting_condition +## success +def nesting_condition_success_f(x: object, y: object) -> int: + if (type(y) is str) if (type(x) is int) else False: + return x + len(y) + else: + return 0 + +## failure +def nesting_condition_failure_f(x: object, y: object) -> int: + if (type(y) is str) if (type(x) is int) else (type(y) is str): + return x + len(y) + else: + return 0 + +## Example merge_with_union +## success +def merge_with_union_success_f(x: object) -> str | int: + if type(x) is FinalStr: + x = x + "hello" + elif type(x) is FinalInt: + x = x + 1 + else: + return 0 + return x + +## failure +def merge_with_union_failure_f(x: object) -> str | int: + if type(x) is FinalStr: + x = x + "hello" + elif type(x) is FinalInt: + x = x + 1 + else: + return 0 + return x + 1 + +## Example predicate_2way +## success +def predicate_2way_success_f(x: FinalStr | FinalInt) -> TypeIs[FinalStr]: + return type(x) is FinalStr + +def predicate_2way_success_g(x: FinalStr | FinalInt) -> int: + if predicate_2way_success_f(x): + return len(x) + else: + return x + +## failure +def predicate_2way_failure_f(x: FinalStr | FinalInt) -> TypeIs[FinalStr]: + return type(x) is FinalStr + +def predicate_2way_failure_g(x: FinalStr | FinalInt) -> int: + if predicate_2way_failure_f(x): + return x + 1 + else: + return x + +## Example predicate_1way +## success +def predicate_1way_success_f(x: FinalStr | FinalInt) -> TypeGuard[int]: + return type(x) is FinalInt and x > 0 + +def predicate_1way_success_g(x: FinalStr | FinalInt) -> int: + if predicate_1way_success_f(x): + return x + 1 + else: + return 0 + +## failure +def predicate_1way_failure_f(x: FinalStr | FinalInt) -> TypeGuard[int]: + return type(x) is FinalInt and x > 0 + +def predicate_1way_failure_g(x: FinalStr | FinalInt) -> int: + if predicate_1way_failure_f(x): + return x + 1 + else: + return len(x) + +## Example predicate_checked +## success +def predicate_checked_success_f(x: FinalStr | FinalInt | bool) -> TypeIs[FinalStr]: + return type(x) is FinalStr + +def predicate_checked_success_g(x: FinalStr | FinalInt | bool) -> TypeIs[FinalInt | bool]: + return not predicate_checked_success_f(x) + +## failure +def predicate_checked_failure_f(x: FinalStr | FinalInt | bool) -> TypeIs[FinalStr]: + return type(x) is FinalStr or type(x) is FinalInt + +def predicate_checked_failure_g(x: FinalStr | FinalInt | bool) -> TypeIs[FinalInt | bool]: + return type(x) is FinalInt diff --git a/pyre/pyproject.toml b/pyre/pyproject.toml new file mode 100644 index 0000000..915bf8a --- /dev/null +++ b/pyre/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "ot-benchmark-pyre" +version = "0.1.0" +description = "Benchmarking pyre's ability to type-check occurrence typing" +requires-python = ">=3.13.0" + +[tool.pyre] +include = ["*.py"] +venvPath = "." +venv = ".venv" +reportUnusedImport = false diff --git a/pyre/requirements.txt b/pyre/requirements.txt new file mode 100644 index 0000000..488bb1b --- /dev/null +++ b/pyre/requirements.txt @@ -0,0 +1,18 @@ +click==8.2.1 +dataclasses-json==0.5.7 +libcst==1.8.2 +marshmallow==3.26.1 +marshmallow-enum==1.5.1 +mypy_extensions==1.1.0 +packaging==25.0 +psutil==7.0.0 +Pygments==2.19.2 +pyre==1.12.5 +pyre-check==0.9.23 +pyre-extensions==0.0.32 +PyYAML==6.0.2 +tabulate==0.9.0 +TestSlide==2.7.1 +typeguard==2.13.3 +typing-inspect==0.9.0 +typing_extensions==4.14.0