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_tracers.cpython-39-i386-linux-gnu.so +0 -0
- crosshair/__init__.py +1 -1
- crosshair/_mark_stacks.h +0 -25
- crosshair/_tracers.h +2 -0
- crosshair/_tracers_test.py +8 -2
- crosshair/condition_parser.py +5 -5
- crosshair/condition_parser_test.py +1 -1
- crosshair/copyext.py +23 -7
- crosshair/copyext_test.py +11 -1
- crosshair/dynamic_typing.py +1 -1
- crosshair/fnutil_test.py +4 -1
- crosshair/libimpl/arraylib.py +0 -13
- crosshair/libimpl/builtinslib.py +22 -14
- crosshair/libimpl/collectionslib.py +13 -2
- crosshair/libimpl/collectionslib_test.py +10 -2
- crosshair/libimpl/timelib.py +34 -15
- crosshair/libimpl/timelib_test.py +12 -2
- crosshair/lsp_server.py +1 -1
- crosshair/opcode_intercept.py +23 -8
- crosshair/opcode_intercept_test.py +13 -2
- crosshair/tracers.py +27 -9
- crosshair/type_repo.py +2 -2
- crosshair/unicode_categories.py +1 -0
- crosshair/util.py +45 -16
- {crosshair_tool-0.0.84.dist-info → crosshair_tool-0.0.85.dist-info}/METADATA +1 -1
- {crosshair_tool-0.0.84.dist-info → crosshair_tool-0.0.85.dist-info}/RECORD +30 -30
- {crosshair_tool-0.0.84.dist-info → crosshair_tool-0.0.85.dist-info}/LICENSE +0 -0
- {crosshair_tool-0.0.84.dist-info → crosshair_tool-0.0.85.dist-info}/WHEEL +0 -0
- {crosshair_tool-0.0.84.dist-info → crosshair_tool-0.0.85.dist-info}/entry_points.txt +0 -0
- {crosshair_tool-0.0.84.dist-info → crosshair_tool-0.0.85.dist-info}/top_level.txt +0 -0
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
|
-
|
|
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
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
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
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
return
|
|
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,4 +1,4 @@
|
|
|
1
|
-
_crosshair_tracers.cpython-39-i386-linux-gnu.so,sha256=
|
|
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=
|
|
15
|
+
crosshair/__init__.py,sha256=vw6g0DHh0Clj2rgk1Iu4a-sWjwIf5SwN6IR04XBP47s,936
|
|
16
16
|
crosshair/_tracers_pycompat.h,sha256=6IYnbQxrYkhBsLDAHSX25DPOwo1oYHCZUVWZ8c7YCnQ,14356
|
|
17
|
-
crosshair/condition_parser_test.py,sha256=
|
|
18
|
-
crosshair/fnutil_test.py,sha256=
|
|
19
|
-
crosshair/tracers.py,sha256=
|
|
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=
|
|
36
|
-
crosshair/_tracers.h,sha256=
|
|
37
|
-
crosshair/_tracers_test.py,sha256=
|
|
38
|
-
crosshair/condition_parser.py,sha256=
|
|
39
|
-
crosshair/opcode_intercept.py,sha256=
|
|
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=
|
|
45
|
+
crosshair/lsp_server.py,sha256=j7SX4pdVwa2MrtkNIjajLilzl5CZTY6PrBQsa26cdNo,8670
|
|
46
46
|
crosshair/statespace_test.py,sha256=LOblIarBbcB9oD_gVR5kK_4P2PWQymVGgJr3wNqP3Fs,2621
|
|
47
|
-
crosshair/copyext.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
69
|
-
crosshair/dynamic_typing.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
170
|
-
crosshair_tool-0.0.
|
|
171
|
-
crosshair_tool-0.0.
|
|
172
|
-
crosshair_tool-0.0.
|
|
173
|
-
crosshair_tool-0.0.
|
|
174
|
-
crosshair_tool-0.0.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|