crosshair-tool 0.0.84__cp39-cp39-musllinux_1_2_i686.whl → 0.0.85__cp39-cp39-musllinux_1_2_i686.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.

Potentially problematic release.


This version of crosshair-tool might be problematic. Click here for more details.

crosshair/util.py CHANGED
@@ -12,6 +12,7 @@ import sys
12
12
  import threading
13
13
  import traceback
14
14
  import types
15
+ from array import array
15
16
  from dataclasses import dataclass
16
17
  from enum import Enum
17
18
  from inspect import (
@@ -20,6 +21,7 @@ from inspect import (
20
21
  getmodulename,
21
22
  getsourcefile,
22
23
  getsourcelines,
24
+ isdatadescriptor,
23
25
  isfunction,
24
26
  )
25
27
  from time import monotonic
@@ -52,6 +54,19 @@ from crosshair.tracers import COMPOSITE_TRACER, NoTracing, ResumedTracing, is_tr
52
54
  _DEBUG_STREAM: Optional[TextIO] = None
53
55
 
54
56
 
57
+ if sys.version_info >= (3, 12):
58
+ from collections.abc import Buffer
59
+
60
+ def is_bytes_like(obj: object) -> bool:
61
+ return isinstance(obj, Buffer)
62
+
63
+ else:
64
+ from collections.abc import ByteString
65
+
66
+ def is_bytes_like(obj: object) -> bool:
67
+ return isinstance(obj, (ByteString, array))
68
+
69
+
55
70
  def is_iterable(o: object) -> bool:
56
71
  try:
57
72
  iter(o) # type: ignore
@@ -148,7 +163,7 @@ else:
148
163
 
149
164
 
150
165
  class IdKeyedDict(collections.abc.MutableMapping):
151
- def __init__(self):
166
+ def __init__(self) -> None:
152
167
  # Confusingly, we hold both the key object and value object in
153
168
  # our inner dict. Holding the key object ensures that we don't
154
169
  # GC the key object, which could lead to reusing the same id()
@@ -665,25 +680,39 @@ class IgnoreAttempt(ControlFlowException):
665
680
  debug("IgnoreAttempt stack:", ch_stack())
666
681
 
667
682
 
668
- ExtraUnionType = getattr(types, "UnionType") if sys.version_info >= (3, 10) else None
683
+ if (3, 10) <= sys.version_info < (3, 14):
684
+ # Specialize some definitions for the Python versions where
685
+ # typing.Union != types.UnionType:
669
686
 
687
+ def origin_of(typ: Type) -> Type:
688
+ if hasattr(typ, "__origin__"):
689
+ return typ.__origin__
690
+ elif isinstance(typ, types.UnionType):
691
+ return cast(Type, Union)
692
+ else:
693
+ return typ
670
694
 
671
- def origin_of(typ: Type) -> Type:
672
- if hasattr(typ, "__origin__"):
673
- return typ.__origin__
674
- elif ExtraUnionType and isinstance(typ, ExtraUnionType):
675
- return cast(Type, Union)
676
- else:
677
- return typ
695
+ def type_args_of(typ: Type) -> Tuple[Type, ...]:
696
+ if getattr(typ, "__args__", None):
697
+ if isinstance(typ, types.UnionType):
698
+ return typ.__args__
699
+ return typing_inspect.get_args(typ, evaluate=True)
700
+ else:
701
+ return ()
702
+
703
+ else:
678
704
 
705
+ def type_args_of(typ: Type) -> Tuple[Type, ...]:
706
+ if getattr(typ, "__args__", None):
707
+ return typing_inspect.get_args(typ, evaluate=True)
708
+ else:
709
+ return ()
679
710
 
680
- def type_args_of(typ: Type) -> Tuple[Type, ...]:
681
- if getattr(typ, "__args__", None):
682
- if ExtraUnionType and isinstance(typ, ExtraUnionType):
683
- return typ.__args__
684
- return typing_inspect.get_args(typ, evaluate=True)
685
- else:
686
- return ()
711
+ def origin_of(typ: Type) -> Type:
712
+ origin = getattr(typ, "__origin__", None)
713
+ # 3.14 unifies typing.Union and types.Union, so that's good!
714
+ # But a of 3.14.0a6, types.Union.__origin__ yields a data descriptor, so we need to check that.
715
+ return typ if origin is None or isdatadescriptor(origin) else origin
687
716
 
688
717
 
689
718
  def type_arg_of(typ: Type, index: int) -> Type:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: crosshair-tool
3
- Version: 0.0.84
3
+ Version: 0.0.85
4
4
  Summary: Analyze Python code for correctness using symbolic execution.
5
5
  Home-page: https://github.com/pschanely/CrossHair
6
6
  Author: Phillip Schanely
@@ -1,4 +1,4 @@
1
- _crosshair_tracers.cpython-39-i386-linux-gnu.so,sha256=Uq15p9KFwyUY0fQsrrX4-8U0D5xeHLOgrxbjOfQ2X0g,61792
1
+ _crosshair_tracers.cpython-39-i386-linux-gnu.so,sha256=brLOq_5TVw-W6E6kmSCHS9HCODqwIVGe1YJLd_YV00I,62040
2
2
  crosshair/simplestructs_test.py,sha256=6uDdrSISHLhwnFuESkR8mUGw7m1llM6vCNDFChkfSs8,8639
3
3
  crosshair/pure_importer_test.py,sha256=Xjtlwn1mj7g-6VA87lrvzfUADCjlmn1wgHtbrnc0uuY,421
4
4
  crosshair/unicode_categories_test.py,sha256=ZAU37IDGm9PDvwy_CGFcrF9Waa8JuUNdI4aq74wkB6c,739
@@ -12,11 +12,11 @@ crosshair/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  crosshair/z3util.py,sha256=AkslxCSfzgSni6oWXUckWihWn3LuceQycR0X3D3ZhD8,1759
13
13
  crosshair/smtlib_test.py,sha256=edzEn19u2YYHxSzG9RrMiu2HTiEexAuehC3IlG9LuJM,511
14
14
  crosshair/smtlib.py,sha256=hh-P32KHoH9BCq3oDYGp2PfOeOb8CwDj8tTkgqroLD8,689
15
- crosshair/__init__.py,sha256=b1AlC2gVScI7UKg6pgQ__eqk2hFpsmx_rTHMkMyLoJQ,936
15
+ crosshair/__init__.py,sha256=vw6g0DHh0Clj2rgk1Iu4a-sWjwIf5SwN6IR04XBP47s,936
16
16
  crosshair/_tracers_pycompat.h,sha256=6IYnbQxrYkhBsLDAHSX25DPOwo1oYHCZUVWZ8c7YCnQ,14356
17
- crosshair/condition_parser_test.py,sha256=jvNtJb_CFDNo2zJzmwnbRRXIRHFH3ZfP_nJldsiZ1sQ,15532
18
- crosshair/fnutil_test.py,sha256=cLHJ9uhQf797sTxuh4BGgQ0Fo5rcQFStkiPbzQPhIXA,2091
19
- crosshair/tracers.py,sha256=WnvM22QUwQVfKBZrZfXe_kn0zyYKQrGKIP_BoiyN2Ek,16452
17
+ crosshair/condition_parser_test.py,sha256=eUQYnVkHewn8qg-XbzcElb0mHkPxPJAX548dPVyxqqk,15532
18
+ crosshair/fnutil_test.py,sha256=wXtfIxAupRm0KUzKob8luEsNI4YegBQUfwz7msWbfHY,2186
19
+ crosshair/tracers.py,sha256=_jaSDgZ_pYdqacWE_msXn7W7CoSdQ_-7hlrxa891oHo,17139
20
20
  crosshair/_preliminaries_test.py,sha256=r2PohNNMfIkDqsnvI6gKlJTbwBaZA9NQJueQfJMN2Eo,504
21
21
  crosshair/pure_importer.py,sha256=-t4eowrZOQmfqK1N2tjI5POoaxRGavytwMmbRivelFg,878
22
22
  crosshair/fuzz_core_test.py,sha256=q7WsZt6bj5OJrXaVsT3JaRYWWnL8X_1flSfty4Z7CcA,16903
@@ -32,43 +32,43 @@ crosshair/watcher_test.py,sha256=Ef1YSwy68wWPR5nPjwvEKPqxltI9pE9lTbnesmDy3Bk,276
32
32
  crosshair/conftest.py,sha256=BkLszApkdy6FrvzaHO7xh8_BJrG9AfytFTse-HuQVvg,653
33
33
  crosshair/main_test.py,sha256=DFXtE--616vCF1WAS576SHXO19K0LsDPzJIWNT5vuXM,14383
34
34
  crosshair/lsp_server_test.py,sha256=7LO1Qqxkper3Xt2krgOlGqF1O_uDObo76o4FZbIqykY,969
35
- crosshair/opcode_intercept_test.py,sha256=iatuGm_NUbbAfjIHox-5ABYGIYyC20H73y1k6_JFlOE,5733
36
- crosshair/_tracers.h,sha256=WUJB5WczyZ9g01Q8xcUi5h9NSQVO6E3aq88CXbm76g0,2070
37
- crosshair/_tracers_test.py,sha256=wTnmXDujthmD-BS7ISWRpxWTFQmsMA4RW3_W89lzICE,3488
38
- crosshair/condition_parser.py,sha256=gPVDyDde1xLCi64g5wAGjalvmH-s-PMnFl4U3o49VB0,42563
39
- crosshair/opcode_intercept.py,sha256=P-jGaFhiCsofA89ErT8VHi9bdt2xbBj4PTPaRugBpn0,18309
35
+ crosshair/opcode_intercept_test.py,sha256=rWO84XLQF8YEQLIxvrlnJWLqMfKXgah_6AW3u_NADlQ,6189
36
+ crosshair/_tracers.h,sha256=qaDWd-_eCZckSbezrXXst6lppzFiM2kD2AcZgvVQm18,2124
37
+ crosshair/_tracers_test.py,sha256=KpCGspjOUeZuhwTYgn_RxI4M4wMbT5rldusFDgneQ6M,3596
38
+ crosshair/condition_parser.py,sha256=oquaht026eZUigh2lyaFLXYDbmENdBKjddszx0a-B3w,42647
39
+ crosshair/opcode_intercept.py,sha256=yNixjTRjc8R9PXO1xGF4BoQ-IAHXup7CWgUwbubRzZc,18996
40
40
  crosshair/pathing_oracle.py,sha256=4mvZuXb-JXIxojidk5-43PXnPfIfAEFa-1LvAvVlCqk,9303
41
41
  crosshair/enforce.py,sha256=FsZx3D-KtGrhb8xdAZbPUtwvVmEu8IAn7rwf7tmkrRY,10010
42
42
  crosshair/dynamic_typing_test.py,sha256=oyg94OXjF_2jNFy33UJjkfWnDXKnM4or2TXbxrOqOQs,5478
43
43
  crosshair/diff_behavior_test.py,sha256=ckK3HScFrmRRZdyq1iCmkwToksMJG2UVUjABnfnSwCM,7242
44
44
  crosshair/statespace.py,sha256=PIT5ajZZcur88_5Cs0QkPkUVa-fqKwsqgNrRNPKRoSo,41547
45
- crosshair/lsp_server.py,sha256=_43KoCY7AfTnBWL9pgYdYCiL-GHUdM01RNYGJXrCPqw,8670
45
+ crosshair/lsp_server.py,sha256=j7SX4pdVwa2MrtkNIjajLilzl5CZTY6PrBQsa26cdNo,8670
46
46
  crosshair/statespace_test.py,sha256=LOblIarBbcB9oD_gVR5kK_4P2PWQymVGgJr3wNqP3Fs,2621
47
- crosshair/copyext.py,sha256=fSQiOEGcBIpmJnFZq-GZaDlI_qsUuDfFV6Q5tf7G1vI,4579
47
+ crosshair/copyext.py,sha256=GBGQP9YAHoezLXwb_M59Hh1VXSou5EQt4ZmmUA0T_og,4899
48
48
  crosshair/options_test.py,sha256=lzA-XtwEwQPa4wV1wwhCRKhyLOvIhThU9WK5QRaRbxQ,379
49
49
  crosshair/core_regestered_types_test.py,sha256=er3ianvu-l0RS-WrS46jmOWr4Jq06Cec9htAXGXJSNg,2099
50
50
  crosshair/core.py,sha256=K7147xrvcvtrP1T9oIRywq2uHMMsIu8ZwFZWBQXPozg,63634
51
51
  crosshair/path_cover.py,sha256=wV0Vy8IPDzqXQ2VI8a94FxltS9p-Y1oF17OKePjvpgs,6710
52
52
  crosshair/simplestructs.py,sha256=CiZSuHH_j_bYitaW-n7vWd_42xSyV6Jh8es3BQLlcHk,34221
53
53
  crosshair/__main__.py,sha256=zw9Ylf8v2fGocE57o4FqvD0lc7U4Ld2GbeCGxRWrpqo,252
54
- crosshair/unicode_categories.py,sha256=iwRwrKQwbhX1rN3_zg3j83MUMIwk5cQJqUMJuCGWta0,285926
54
+ crosshair/unicode_categories.py,sha256=g4pnUPanx8KkpwI06ZUGx8GR8Myruf_EpTjyti_V4z8,333519
55
55
  crosshair/objectproxy.py,sha256=Uc6mNkJBInvETGWBHI10GSNEIrBYDIxlAZ30M3PAIhQ,8935
56
56
  crosshair/enforce_test.py,sha256=C6CQ4P1FjkdIJeJg3aJynp1iLDCE6BFCEVtSqXbvmQk,4665
57
- crosshair/_mark_stacks.h,sha256=4n3ikcrMDIUWHLf6CQ1Wf3brHw79E3-fCbtHLSSdRCk,29844
57
+ crosshair/_mark_stacks.h,sha256=rvIET5OGjKMcUZxEtIb9RhxRDveAfPXb3HLZZWfM3Bs,29261
58
58
  crosshair/fnutil.py,sha256=X80bD2Lh4QAh-rF561r3JRxjxcuZepF3hJaxaj1GG9s,13123
59
59
  crosshair/options.py,sha256=htQNgnrpoRjSNq6rfLBAF8nos-NNIwmP6tQYyI8ugsM,6775
60
60
  crosshair/register_contract_test.py,sha256=DhvKIcF3LgQfHfUSCccoA11ctCdFaQR263Pc4YUuxyk,4970
61
- crosshair/type_repo.py,sha256=CQ3p95BGb7gmiBUOf1rJvwmdo13xt60F-rZYtwp9l5s,4615
61
+ crosshair/type_repo.py,sha256=dqMnDNgBqchRwsbXJcZmPyPHfiQC9kqFAB7z-zoA_0I,4649
62
62
  crosshair/core_test.py,sha256=H6qZFBFuUhgh9qWgxxc1Cs7xuC8s6FYvewmTYUh0Dpg,32200
63
63
  crosshair/main.py,sha256=6RXjj1FIyBK6i6xOx-bs-CsHLgOZcc9hL3U1JRwxpA0,34378
64
64
  crosshair/core_and_libs.py,sha256=8FGL62GnyX6WHOqKh0rqJ0aJ_He5pwZm_zwPXTaPqhI,3963
65
65
  crosshair/util_test.py,sha256=_KTQ0O4cLhF1pAeB8Y8Cyqbd0UyZf5KxJUaiA-ew-tE,4676
66
66
  crosshair/abcstring.py,sha256=ROU8LzS7kfEU2L_D3QfhVxIjrYr1VctwUWfylC7KlCc,6549
67
67
  crosshair/path_cover_test.py,sha256=U46zw4-m7yAXhu8-3Xnhvf-_9Ov5ivfCAm5euGwpRFA,4089
68
- crosshair/copyext_test.py,sha256=5i2GHwpFjcEFGP24-ITu49Ebg__S2BE-qMPkK7CJMHo,1839
69
- crosshair/dynamic_typing.py,sha256=iQBRlRB1U0X3Ieg9sFBgbztWNkpG5tFCFdo75LdFCX4,11982
68
+ crosshair/copyext_test.py,sha256=uJzdC9m2FqMjqQ-ITFoP0MZg3OCiO8paU-d533KocD8,2108
69
+ crosshair/dynamic_typing.py,sha256=jbI9FXv5-WXREQjeDtlDQladv-xCW21TUOM3qErJaJ4,11998
70
70
  crosshair/patch_equivalence_test.py,sha256=mvYpsbHZS2AiQra-jK8T8QywAG1gNNCUNQPPWI9k5t8,2506
71
- crosshair/util.py,sha256=LZ6zjEjUnGfI8eS1ugFeq1RPvAnQlIUKEqT4bAHxrNg,21000
71
+ crosshair/util.py,sha256=OtkhDSdggqt-A7sTfp4sHa69_M7HNyD8w4gHhxcEUDo,21977
72
72
  crosshair/register_contract.py,sha256=EnDAxngJhKvJLFdw5kVgqaYDQ5hAZXKwAGBdXpot-AQ,10386
73
73
  crosshair/path_search.py,sha256=wwZjp-3E4dENnJa6BlnSq8FARkIx0PyUYc7kvH32A2k,5588
74
74
  crosshair/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -98,7 +98,7 @@ crosshair/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  crosshair/tools/check_help_in_doc.py,sha256=P21AH3mYrTVuBgWD6v65YXqBqmqpQDUTQeoZ10rB6TU,8235
99
99
  crosshair/tools/generate_demo_table.py,sha256=0SeO0xQdiT-mbLNHt4rYL0wcc2DMh0v3qtzBdoQonDk,3831
100
100
  crosshair/tools/check_init_and_setup_coincide.py,sha256=kv61bXqKSKF_5J-kLNEhCrCPyszg7iZQWDu_Scnec98,3502
101
- crosshair/libimpl/collectionslib_test.py,sha256=HihBzwG2guM19lx8AmR4WjXZDxqkY_qXCnBbl6Iq5pI,8832
101
+ crosshair/libimpl/collectionslib_test.py,sha256=3h7XTToKWauMhjrEwLXVI0jT8FZKBlkvlw0oiPMmuKM,9164
102
102
  crosshair/libimpl/relib.py,sha256=3DhrbGqJcfpj5JNfcD8Pf4xsA4WEegxbukwgKoPLP3o,29256
103
103
  crosshair/libimpl/zliblib_test.py,sha256=mckg9PnZrBUTStzMzHIoZl8JPuAzsIfrEruNKNDpYiE,388
104
104
  crosshair/libimpl/typeslib_test.py,sha256=Gf-EymanxMty2-B53BiT81w1CSTzoHVXvELwqiGOqxc,1083
@@ -112,7 +112,7 @@ crosshair/libimpl/codecslib_test.py,sha256=8K64njhxnTe7qLh-_onARNsm_qSG7BWM5dXgA
112
112
  crosshair/libimpl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
113
  crosshair/libimpl/pathliblib_test.py,sha256=NDeNOI24naLcvz6Lrx51nS-JhILHJjY1JNhRQO3Lufw,252
114
114
  crosshair/libimpl/weakreflib_test.py,sha256=CdGJhW32qJoxedn8QzPcMcKKmfl9Nv4FPDYebblIKmY,1812
115
- crosshair/libimpl/arraylib.py,sha256=zM5uuMD-FDDEpkp9dh3SnNrqziaT8unO6A8-Une_CmU,5181
115
+ crosshair/libimpl/arraylib.py,sha256=vW0lvkYJx8B3hLnhwXhCc-ZwtWtEwZFLm7T8ahrrKgs,4877
116
116
  crosshair/libimpl/builtinslib_test.py,sha256=GmnsgjSKjkE-3cb-aQwSV5BYbNHvD-O1E8sB-hZv8f4,90270
117
117
  crosshair/libimpl/jsonlib_test.py,sha256=U40WJf-69dtflz75sIsl5zA3IV5R6Ltc4Z9jv_Fh-Fw,1382
118
118
  crosshair/libimpl/fractionlib_test.py,sha256=lLMbGvzP5E_tnZ2Yi5_MawRxwqsSJZRW1A7vtgSSBvM,1638
@@ -126,7 +126,7 @@ crosshair/libimpl/relib_test.py,sha256=3raQ0JoU4vu8_NKfrjk7TkUIqVuuhR8mGCRPJPb0R
126
126
  crosshair/libimpl/datetimelib_ch_test.py,sha256=r_V9H34a4POlEeffi46mEtVI9ek80DHaEOiCTKON9Us,9283
127
127
  crosshair/libimpl/itertoolslib_test.py,sha256=MV-zSdfdeQi_UpZJdanKzHm2GRqrC7BMUoCd95ldMPw,1183
128
128
  crosshair/libimpl/builtinslib_ch_test.py,sha256=W4wWapqlxSjsC5XgREfgxS9e_iwKxgNQhbFE3umUfNI,30504
129
- crosshair/libimpl/collectionslib.py,sha256=bf3DVbA8XxAptfSv5iTwB2-GoFHu2ytm5QWjmBMFp00,8277
129
+ crosshair/libimpl/collectionslib.py,sha256=VuDIOUOGORiUT9J0tDVECr6oC-yUR3WAiFnMeVGzi-o,8583
130
130
  crosshair/libimpl/binascii_test.py,sha256=LOBqLAJ77Kx8vorjVTaT3X0Z93zw4P5BvwUapMCiSLg,1970
131
131
  crosshair/libimpl/unicodedatalib_test.py,sha256=CJkAbiu8_2uhvjDIoYi3IJ8Nb_8sdjKVNvNhJCgPbZ0,1442
132
132
  crosshair/libimpl/codecslib.py,sha256=lB87T1EYSBh4JXaqzjSpQG9CMfKtgckwA7f6OIR0S-Q,2668
@@ -137,18 +137,18 @@ crosshair/libimpl/heapqlib_test.py,sha256=NdwTihD0xGy4qIDaS5a9-t3q437rP47GNdtceE
137
137
  crosshair/libimpl/urlliblib_test.py,sha256=UcSmwRdJFkzXvkaV-jmrP6G4zhbu7X2NNjM7ePsYxRs,503
138
138
  crosshair/libimpl/jsonlib_ch_test.py,sha256=lLGnFq6Ti7l6aV_jDz-HEzKaPy5TIj_JA0sSnfI0Psc,1267
139
139
  crosshair/libimpl/weakreflib.py,sha256=By2JxeBHJCQP_Na5MBhE9YCc0O5NoKefKASoRBUNcW0,230
140
- crosshair/libimpl/timelib_test.py,sha256=cJhkLeYYJqWLc2i4C9JEU-svI-KnRnmaPYsou0Ou7jk,1631
140
+ crosshair/libimpl/timelib_test.py,sha256=Ercmhw1Yc96CYnWhqIW7eu31R95uTGVZcgzxSiZoRzI,1851
141
141
  crosshair/libimpl/hashliblib.py,sha256=Ki_cw28OnhZExgKbSoh5GaDbBfNRIOqH7O2aYQJGS3M,1234
142
142
  crosshair/libimpl/itertoolslib.py,sha256=1bwV8voMV2j18KjXYMKkuNSC8p4VE_ZvY-74rAbWjB4,1245
143
143
  crosshair/libimpl/binascii_ch_test.py,sha256=hFqSfF1Q8jl2LNBIWaQ6vBJIIshPOmSwrR0T1Ko4Leo,1009
144
144
  crosshair/libimpl/mathlib_ch_test.py,sha256=V-44I-qORpF4vP-z9z25MaVc4I5boW2vjud-sKkYYSE,1269
145
- crosshair/libimpl/timelib.py,sha256=9wwj0IPUOH_aYbZ3QVBaBxXSKQzi3_HJZRtmGzzKxt8,1811
145
+ crosshair/libimpl/timelib.py,sha256=MXEFOZjFGa1-yLvmB3l3DFTLF9PSluOlmRK-ZJaA_oI,2409
146
146
  crosshair/libimpl/datetimelib.py,sha256=osysXCLJCgyCj0gR8e0iyCeulgUvJ9rrO60kz1gudAY,78869
147
147
  crosshair/libimpl/unicodedatalib.py,sha256=q5LoCaEbHJrUwVWtUrlS3n_X21yp15xTS42l-9AQ6Us,3103
148
148
  crosshair/libimpl/oslib.py,sha256=GVOsJKEFoIzY9S5CRZwKH5pRsccjBbGpPOlvAm_2HtQ,123
149
149
  crosshair/libimpl/decimallib.py,sha256=zBKDrDZcg45oCKUkf6SIDuVpjA1Web7tD1MEQo5cjxI,177348
150
150
  crosshair/libimpl/typeslib.py,sha256=5qWrHZZN8jQZoHPiQtkaFolR8qTYCQtJw3HRWCrCKQI,468
151
- crosshair/libimpl/builtinslib.py,sha256=WNYNVbQhkOJogL6WBqiaVL5Q6MzcEjZpx3rNf3xP9VQ,182300
151
+ crosshair/libimpl/builtinslib.py,sha256=lMYlTJsirb-rx8RO3EU3-LwEivmWtdQ2VHfuubbsIKs,182505
152
152
  crosshair/libimpl/mathlib_test.py,sha256=QShLCXHdv3tx5PQxcSoR0MHeZ1huaiV6d3u7C2mGOn4,1861
153
153
  crosshair/libimpl/urlliblib.py,sha256=EaC-nWdi-IFG3ewZrzgCqbKc9Sf9wlUN0wvGjTU5TOM,614
154
154
  crosshair/libimpl/randomlib.py,sha256=loyhlbRBJEs32kKFv_1O5PxKQU47F5kCz54OaNVuzUk,6161
@@ -166,9 +166,9 @@ crosshair/libimpl/encodings/latin_1.py,sha256=ftUsPjUb9L7UKXKi9P7OAqOl9FkNP98M9j
166
166
  crosshair/libimpl/encodings/_encutil.py,sha256=nwVWqcGM1f7-hAC3Z46KnfrLzAjhfy4zaTa11uVBk6M,6828
167
167
  crosshair/libimpl/encodings/ascii.py,sha256=Cz1xraTkXdQ5aBKDkorX4rAvrmf877_EqzC9hOmbItw,1416
168
168
  crosshair/libimpl/encodings/utf_8.py,sha256=BygLLIeI3_F2MpFVgaty8ebiuxp0YWz7IzXeYPWjsqU,3173
169
- crosshair_tool-0.0.84.dist-info/top_level.txt,sha256=2jLWtM-BWg_ZYNbNfrcds0HFZD62a6J7ZIbcgcQrRk4,29
170
- crosshair_tool-0.0.84.dist-info/LICENSE,sha256=NVyMvNqn1pH6RSHs6RWRcJyJvORnpgGFBlF73buqYJ0,4459
171
- crosshair_tool-0.0.84.dist-info/METADATA,sha256=jEA7ZGfuhJljthpk-4vpQlW8aLHfx-aaHA9t26eAnGw,6457
172
- crosshair_tool-0.0.84.dist-info/RECORD,,
173
- crosshair_tool-0.0.84.dist-info/entry_points.txt,sha256=u5FIPVn1jqn4Kzg5K_iNnbP6L4hQw5FWjQ0UMezG2VE,96
174
- crosshair_tool-0.0.84.dist-info/WHEEL,sha256=TMWeveQgEUUuNUvL6Mvy9qwdXPbUFcEFJodzKdCdrhY,108
169
+ crosshair_tool-0.0.85.dist-info/top_level.txt,sha256=2jLWtM-BWg_ZYNbNfrcds0HFZD62a6J7ZIbcgcQrRk4,29
170
+ crosshair_tool-0.0.85.dist-info/LICENSE,sha256=NVyMvNqn1pH6RSHs6RWRcJyJvORnpgGFBlF73buqYJ0,4459
171
+ crosshair_tool-0.0.85.dist-info/METADATA,sha256=0eb7ODjLp2hRq3wfbKOxmRW14Yfa-DQKMfd9YURj6KY,6457
172
+ crosshair_tool-0.0.85.dist-info/RECORD,,
173
+ crosshair_tool-0.0.85.dist-info/entry_points.txt,sha256=u5FIPVn1jqn4Kzg5K_iNnbP6L4hQw5FWjQ0UMezG2VE,96
174
+ crosshair_tool-0.0.85.dist-info/WHEEL,sha256=TMWeveQgEUUuNUvL6Mvy9qwdXPbUFcEFJodzKdCdrhY,108