crosshair-tool 0.0.83__cp313-cp313-win_amd64.whl → 0.0.84__cp313-cp313-win_amd64.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.
- _crosshair_tracers.cp313-win_amd64.pyd +0 -0
- crosshair/__init__.py +1 -1
- crosshair/auditwall.py +0 -1
- crosshair/auditwall_test.py +5 -0
- crosshair/condition_parser_test.py +50 -63
- crosshair/core.py +23 -17
- crosshair/core_test.py +625 -584
- crosshair/diff_behavior_test.py +14 -21
- crosshair/dynamic_typing.py +91 -2
- crosshair/dynamic_typing_test.py +73 -1
- crosshair/enforce_test.py +15 -22
- crosshair/fnutil_test.py +0 -7
- crosshair/libimpl/arraylib.py +13 -3
- crosshair/libimpl/binasciilib.py +2 -3
- crosshair/libimpl/builtinslib.py +6 -7
- crosshair/libimpl/builtinslib_test.py +1 -8
- crosshair/libimpl/collectionslib.py +5 -1
- crosshair/libimpl/collectionslib_test.py +79 -13
- crosshair/libimpl/encodings/_encutil.py +8 -3
- crosshair/libimpl/mathlib_test.py +0 -7
- crosshair/libimpl/relib_ch_test.py +2 -2
- crosshair/main.py +3 -1
- crosshair/objectproxy_test.py +7 -11
- crosshair/opcode_intercept.py +1 -0
- crosshair/py.typed +0 -0
- crosshair/watcher.py +2 -2
- {crosshair_tool-0.0.83.dist-info → crosshair_tool-0.0.84.dist-info}/METADATA +4 -3
- {crosshair_tool-0.0.83.dist-info → crosshair_tool-0.0.84.dist-info}/RECORD +32 -31
- {crosshair_tool-0.0.83.dist-info → crosshair_tool-0.0.84.dist-info}/WHEEL +1 -1
- {crosshair_tool-0.0.83.dist-info → crosshair_tool-0.0.84.dist-info}/entry_points.txt +0 -0
- {crosshair_tool-0.0.83.dist-info → crosshair_tool-0.0.84.dist-info/licenses}/LICENSE +0 -0
- {crosshair_tool-0.0.83.dist-info → crosshair_tool-0.0.84.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import codecs
|
|
2
|
-
|
|
2
|
+
import sys
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import List, Optional, Tuple, Type, Union
|
|
5
|
+
|
|
6
|
+
if sys.version_info >= (3, 12):
|
|
7
|
+
from collections.abc import Buffer
|
|
8
|
+
else:
|
|
9
|
+
from collections.abc import ByteString as Buffer
|
|
5
10
|
|
|
6
11
|
from crosshair.core import realize
|
|
7
12
|
from crosshair.libimpl.builtinslib import AnySymbolicStr, SymbolicBytes
|
|
@@ -87,7 +92,7 @@ class StemEncoder:
|
|
|
87
92
|
def decode(
|
|
88
93
|
cls, input: bytes, errors: str = "strict"
|
|
89
94
|
) -> Tuple[Union[str, AnySymbolicStr], int]:
|
|
90
|
-
if not (isinstance(input,
|
|
95
|
+
if not (isinstance(input, Buffer) and isinstance(errors, str)):
|
|
91
96
|
raise TypeError
|
|
92
97
|
parts: List[Union[str, AnySymbolicStr]] = []
|
|
93
98
|
idx = 0
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import math
|
|
2
2
|
import sys
|
|
3
|
-
import unittest
|
|
4
3
|
|
|
5
4
|
import pytest
|
|
6
5
|
|
|
@@ -66,9 +65,3 @@ def test_log():
|
|
|
66
65
|
space.add(f > 0)
|
|
67
66
|
math.log(i)
|
|
68
67
|
math.log(f)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if __name__ == "__main__":
|
|
72
|
-
if ("-v" in sys.argv) or ("--verbose" in sys.argv):
|
|
73
|
-
set_debug(True)
|
|
74
|
-
unittest.main()
|
|
@@ -122,7 +122,7 @@ def check_search_anchored_end(text: str, flags: int) -> ResultComparison:
|
|
|
122
122
|
|
|
123
123
|
def check_subn(text: str, flags: int) -> ResultComparison:
|
|
124
124
|
"""post: _"""
|
|
125
|
-
return compare_results(lambda t, f: re.subn("aa", "ba", t, f), text, flags)
|
|
125
|
+
return compare_results(lambda t, f: re.subn("aa", "ba", t, flags=f), text, flags)
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
def check_lookahead(text: str) -> ResultComparison:
|
|
@@ -150,7 +150,7 @@ def check_negative_lookbehind(text: str) -> ResultComparison:
|
|
|
150
150
|
|
|
151
151
|
def check_subn_bytes(text: bytes, flags: int) -> ResultComparison:
|
|
152
152
|
"""post: _"""
|
|
153
|
-
return compare_results(lambda t, f: re.subn(b"a", b"b", t, f), text, flags)
|
|
153
|
+
return compare_results(lambda t, f: re.subn(b"a", b"b", t, flags=f), text, flags)
|
|
154
154
|
|
|
155
155
|
|
|
156
156
|
def check_findall_bytes(text: bytes, flags: int) -> ResultComparison:
|
crosshair/main.py
CHANGED
|
@@ -448,7 +448,9 @@ def run_watch_loop(
|
|
|
448
448
|
active_messages = {}
|
|
449
449
|
else:
|
|
450
450
|
time.sleep(0.1)
|
|
451
|
-
max_uninteresting_iterations
|
|
451
|
+
max_uninteresting_iterations = min(
|
|
452
|
+
max_uninteresting_iterations * 2, 100_000_000
|
|
453
|
+
)
|
|
452
454
|
for curstats, messages in watcher.run_iteration(max_uninteresting_iterations):
|
|
453
455
|
messages = [m for m in messages if m.state > MessageType.PRE_UNSAT]
|
|
454
456
|
stats.update(curstats)
|
crosshair/objectproxy_test.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import pytest
|
|
2
2
|
|
|
3
3
|
from crosshair.objectproxy import ObjectProxy
|
|
4
4
|
|
|
@@ -11,17 +11,13 @@ class ObjectWrap(ObjectProxy):
|
|
|
11
11
|
return object.__getattribute__(self, "_o")
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
class
|
|
14
|
+
class TestObjectProxy:
|
|
15
15
|
def test_object_proxy(self) -> None:
|
|
16
16
|
i = [1, 2, 3]
|
|
17
17
|
proxy = ObjectWrap(i)
|
|
18
|
-
|
|
18
|
+
assert i == proxy
|
|
19
19
|
proxy.append(4)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if __name__ == "__main__":
|
|
27
|
-
unittest.main()
|
|
20
|
+
assert [1, 2, 3, 4] == proxy
|
|
21
|
+
assert [1, 2, 3, 4, 5] == proxy + [5]
|
|
22
|
+
assert [2, 3] == proxy[1:3]
|
|
23
|
+
assert [1, 2, 3, 4] == proxy
|
crosshair/opcode_intercept.py
CHANGED
|
@@ -284,6 +284,7 @@ class BuildStringInterceptor(TracingModule):
|
|
|
284
284
|
class FormatValueInterceptor(TracingModule):
|
|
285
285
|
"""Avoid checks and realization during FORMAT_VALUE (used by f-strings)."""
|
|
286
286
|
|
|
287
|
+
# TODO: don't we need to handle FORMAT_SIMPLE and FORMAT_WITH_SPEC?
|
|
287
288
|
opcodes_wanted = frozenset([FORMAT_VALUE, CONVERT_VALUE])
|
|
288
289
|
|
|
289
290
|
def trace_op(self, frame, codeobj, codenum):
|
crosshair/py.typed
ADDED
|
File without changes
|
crosshair/watcher.py
CHANGED
|
@@ -244,8 +244,8 @@ class Watcher:
|
|
|
244
244
|
pool = self._pool
|
|
245
245
|
for filename, _ in sorted(self._modtimes.items(), key=lambda pair: -pair[1]):
|
|
246
246
|
worker_timeout = max(
|
|
247
|
-
10.0, max_uninteresting_iterations *
|
|
248
|
-
) # TODO: times
|
|
247
|
+
10.0, max_uninteresting_iterations * 1_000.0
|
|
248
|
+
) # TODO: times 1000? is that right?
|
|
249
249
|
iter_options = AnalysisOptionSet(
|
|
250
250
|
max_uninteresting_iterations=max_uninteresting_iterations,
|
|
251
251
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: crosshair-tool
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.84
|
|
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
|
|
@@ -54,6 +54,7 @@ Dynamic: description
|
|
|
54
54
|
Dynamic: description-content-type
|
|
55
55
|
Dynamic: home-page
|
|
56
56
|
Dynamic: license
|
|
57
|
+
Dynamic: license-file
|
|
57
58
|
Dynamic: provides-extra
|
|
58
59
|
Dynamic: requires-dist
|
|
59
60
|
Dynamic: requires-python
|
|
@@ -64,7 +65,7 @@ Dynamic: summary
|
|
|
64
65
|
# CrossHair
|
|
65
66
|
|
|
66
67
|
[](https://discord.gg/rUeTaYTWbb)
|
|
67
|
-
[](https://github.com/pschanely/CrossHair/actions?query=workflow%3ACheck+event%3Apush)
|
|
68
69
|
[](https://pepy.tech/project/crosshair-tool)
|
|
69
70
|
|
|
70
71
|
An analysis tool for Python that blurs the line between testing and
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
_crosshair_tracers.cp313-win_amd64.pyd,sha256=
|
|
2
|
-
crosshair/__init__.py,sha256=
|
|
1
|
+
_crosshair_tracers.cp313-win_amd64.pyd,sha256=zQCfNnO5QRhNuLYyI43EqRMBaiQ1wOjEQiTogNg0G5Q,25600
|
|
2
|
+
crosshair/__init__.py,sha256=b1IMsf545mm7J-blZ17q5pZMBSdgs_7DwkOOUxyunQ8,978
|
|
3
3
|
crosshair/__main__.py,sha256=i4pjsZlXvtieQHJTEB0sF3e40qJjLoOm1z5rm-u70Uo,260
|
|
4
4
|
crosshair/_mark_stacks.h,sha256=XylvLzFaX8a2UzEkWPh3L9MZoyDh0yvZ6Y0Rgsegh_Y,30676
|
|
5
5
|
crosshair/_preliminaries_test.py,sha256=klkzKGpyyVDGctCXdvq1xyXbGa4PRnXda1jfgE-7LLY,522
|
|
@@ -7,35 +7,35 @@ crosshair/_tracers.h,sha256=39yWCs3BXPX-K5khVnO8QveTU-eDCvskiTNVrO8Pnyg,2161
|
|
|
7
7
|
crosshair/_tracers_pycompat.h,sha256=KqJHbya8zi1Z4Qrk2S6P-FfmC_Ew5LYvTxbA-V9TWPw,14878
|
|
8
8
|
crosshair/_tracers_test.py,sha256=wi7ONnBywdI8sslzsncz6nMWlVpOdcH8bVztk32xJwM,3620
|
|
9
9
|
crosshair/abcstring.py,sha256=Jvnnm7xsHGTcZvu5mbV_eL5IVEvbNNbeCauM6f7QYEI,6794
|
|
10
|
-
crosshair/auditwall.py,sha256=
|
|
11
|
-
crosshair/auditwall_test.py,sha256=
|
|
10
|
+
crosshair/auditwall.py,sha256=Rlz0PDjAK17ykpcqbh8tstN4MXk3w09J-E1ibIKUv7o,5162
|
|
11
|
+
crosshair/auditwall_test.py,sha256=SKTy_7Q6xP0Den4i7HRHSaU0b37smi_Mb-arQnppFPI,2107
|
|
12
12
|
crosshair/codeconfig.py,sha256=L0EmcEZlWA51sl32uBxvFPwbTmuglVDHNq8k35JkXw0,4071
|
|
13
13
|
crosshair/codeconfig_test.py,sha256=n5kXtW60vG_CA0QlzLE3mS4k9caEwhB30bnhaGNh6Ww,3467
|
|
14
14
|
crosshair/condition_parser.py,sha256=M_hfJ7Qz_ocCLOyGxTl_lTvHaF-ZDs9PV84W44L43AE,43799
|
|
15
|
-
crosshair/condition_parser_test.py,sha256=
|
|
15
|
+
crosshair/condition_parser_test.py,sha256=_mAkkjjhoEpMOQhhaEqSLSFFhxdAwQP1xYTnaormoUU,16031
|
|
16
16
|
crosshair/conftest.py,sha256=JjUauvXnjERszuS46iskuBRHBx-0uHacwKHeQ-gEQ2c,683
|
|
17
17
|
crosshair/copyext.py,sha256=U4C24YF_jZf9yRduZGLLP6qXIRFbPiBHIyywu2liyzw,4708
|
|
18
18
|
crosshair/copyext_test.py,sha256=kYbidguhGQBRvNY163IT8EkDJNg1TNOhIW0VwHXPUGA,1903
|
|
19
|
-
crosshair/core.py,sha256=
|
|
19
|
+
crosshair/core.py,sha256=uVUz_SUye6EeV9EKGSnBFfK9G0MaZ2kLCjFUqorGR_c,65380
|
|
20
20
|
crosshair/core_and_libs.py,sha256=U9GDCBE9Ecxy7T7bmJT7IYiQTdY1C8qbcoIoMMocu5U,4112
|
|
21
21
|
crosshair/core_regestered_types_test.py,sha256=3o1GrtjCEWSW-paPp5-yVdE2K1_ZIviGCff7KVZ0VS0,2181
|
|
22
|
-
crosshair/core_test.py,sha256=
|
|
22
|
+
crosshair/core_test.py,sha256=bHpq_OcUsVWFWGnsCUX4AEM22vLfoCzCsPaEnsbAzYc,33490
|
|
23
23
|
crosshair/diff_behavior.py,sha256=2T11J2Hk35Qp3RRp5ALtXyTgAl3v0W3KDNR_mSec-D4,11567
|
|
24
|
-
crosshair/diff_behavior_test.py,sha256=
|
|
25
|
-
crosshair/dynamic_typing.py,sha256=
|
|
26
|
-
crosshair/dynamic_typing_test.py,sha256=
|
|
24
|
+
crosshair/diff_behavior_test.py,sha256=TUmqPOj_Qij8a7NMLFYt0IskL5Q_CdDLD5pnxnomuJ0,7505
|
|
25
|
+
crosshair/dynamic_typing.py,sha256=9cIUZqB7A8bvu8u-fgX0nc5grtnjFQLrsZYP2y53keI,12307
|
|
26
|
+
crosshair/dynamic_typing_test.py,sha256=szfUa9zLFVMv1YiuJvrC9-ZMZnlS36tqJ373MGXVkAA,5673
|
|
27
27
|
crosshair/enforce.py,sha256=lIeDeqavEa06tVMlIk5ScibVGS04yHZ3xIpkTPK5QQw,10291
|
|
28
|
-
crosshair/enforce_test.py,sha256=
|
|
28
|
+
crosshair/enforce_test.py,sha256=CvofUxa_Y-np5vhlBcjsrZ2CkpxNFbjv5U-rH027pw4,4847
|
|
29
29
|
crosshair/fnutil.py,sha256=Fe77jLudjf7X_fNLExLoMTFElQWQ3wCpA_MC06JaOKk,13515
|
|
30
|
-
crosshair/fnutil_test.py,sha256=
|
|
30
|
+
crosshair/fnutil_test.py,sha256=1BFFpVnCMM-rS9k_JdSSjX1pPXRpEkUKlmG5e_rFZ1I,2166
|
|
31
31
|
crosshair/fuzz_core_test.py,sha256=wWILaE5cpxfiRl89WgCWMpNIGS8BnWcQmgartQYCCJ8,17411
|
|
32
32
|
crosshair/lsp_server.py,sha256=lOj-Nd-ouQ3AFTWw1agoj8MzZ8324ac_NopGimCy_S0,8920
|
|
33
33
|
crosshair/lsp_server_test.py,sha256=yHp7JtJLpF2G049lwhNlgAYXnVM88CtsudVVHVY7Hs0,999
|
|
34
|
-
crosshair/main.py,sha256=
|
|
34
|
+
crosshair/main.py,sha256=Dibj8nGZeNe010vCU0j1v-h8IhcUJyyED_dVKQZaIj0,35341
|
|
35
35
|
crosshair/main_test.py,sha256=YDnAaAm6A8g-3D5qVTQJ69wnBEx7Ag33AlJmrf-pifk,14917
|
|
36
36
|
crosshair/objectproxy.py,sha256=qYPVvH3EVUmh7GI9-73mfmOTzcTH_gyn5DhK44hp8KI,9286
|
|
37
|
-
crosshair/objectproxy_test.py,sha256=
|
|
38
|
-
crosshair/opcode_intercept.py,sha256=
|
|
37
|
+
crosshair/objectproxy_test.py,sha256=P5N28U5l9ngozqLr2EgtVOII3PS3fB2dOOPc9LLt8Zo,590
|
|
38
|
+
crosshair/opcode_intercept.py,sha256=oHbA0EivugRKIhRRLN_9TWvVWIbbV78UojVf3Or_Kto,18798
|
|
39
39
|
crosshair/opcode_intercept_test.py,sha256=89VEwB-2L9PRIMZjVL90lcgV9h52w2br88V4mSbuWsA,5930
|
|
40
40
|
crosshair/options.py,sha256=y3lYP5AfwkHFXjF7zl0kUrTH1_C5u1DMo_yAH_mivm8,6993
|
|
41
41
|
crosshair/options_test.py,sha256=eTlaTqNb29I3ZyyV0yCq_kEeE441l4xh-jKF_W6cWqs,389
|
|
@@ -47,6 +47,7 @@ crosshair/path_search_test.py,sha256=xhY7qmLRaDMnueFgokJaDKOufs2fhJdqU6okM4hWgF4
|
|
|
47
47
|
crosshair/pathing_oracle.py,sha256=Q73EBnlO_Ousa8s6OiZbaoDdeEAOTUogRjqpa4RDg9Y,9538
|
|
48
48
|
crosshair/pure_importer.py,sha256=yA1HkM3Jykt2w00OQALwxi5Gt_FFa-NU9JRiBcDS2DM,905
|
|
49
49
|
crosshair/pure_importer_test.py,sha256=Tp4RitGWUhtLhNxOlJkdz43WyXZLynARbCcY4lzG7Bk,437
|
|
50
|
+
crosshair/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
51
|
crosshair/register_contract.py,sha256=PcwWLn6Hv6Rm8xbZhalNJwYUnjzxoRcw_SZ_QmYCfbs,10658
|
|
51
52
|
crosshair/register_contract_test.py,sha256=WUDcRHSdZr3m4ZmDLkfdeZlWid-tdeBGqAHe0-_-Ycw,5162
|
|
52
53
|
crosshair/simplestructs.py,sha256=DQu4LVS5KLEIH3-z_DEg0LU3VxovKE_JRjHvBdGCzb4,35380
|
|
@@ -66,7 +67,7 @@ crosshair/unicode_categories.py,sha256=qcTLV1lJ0skY9sRo7YlEtRvfJCvGda-nWcImoB4RZ
|
|
|
66
67
|
crosshair/unicode_categories_test.py,sha256=KZ2OKOSMALmFp1BQbWj1-x6Ek5Iv2byxF4ytx2mN7LU,766
|
|
67
68
|
crosshair/util.py,sha256=TKx8t2cyKWQtx35PocWgk8VT6cwt5toHu-bShMrYdfo,21703
|
|
68
69
|
crosshair/util_test.py,sha256=fIc3TeMbyu9nI430_gGbUrqXhPJ5wl9TxWAtIGgEL4s,4849
|
|
69
|
-
crosshair/watcher.py,sha256=
|
|
70
|
+
crosshair/watcher.py,sha256=A8ywSNPUY6Y4BHVO51dGM18nQcwGYx_kbBEwIOMTzF4,10355
|
|
70
71
|
crosshair/watcher_test.py,sha256=TCOdXmdGZ3NJ59X_w7SRVqiJY-BL2tUqyXK-3ql1d6s,2871
|
|
71
72
|
crosshair/z3util.py,sha256=_NcVbYhvSt24vhkpiXdEh4o2VRSIjb4g8Xpq49sJsGg,1835
|
|
72
73
|
crosshair/z3util_test.py,sha256=9_6fhpTphEQlg4QY29bGzN0KxfktsT8wYveNgbfqueg,184
|
|
@@ -94,19 +95,19 @@ crosshair/examples/icontract/correct_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-
|
|
|
94
95
|
crosshair/examples/icontract/correct_code/arith.py,sha256=fImqdDCzE523ijM5TZnFJMGpq7otdLoNoM3uu66vUus,1559
|
|
95
96
|
crosshair/examples/icontract/correct_code/showcase.py,sha256=UlVhUWU1KKf285tL41DP_z-Uywid4kh1U2kUwje5mZ8,3181
|
|
96
97
|
crosshair/libimpl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
97
|
-
crosshair/libimpl/arraylib.py,sha256=
|
|
98
|
+
crosshair/libimpl/arraylib.py,sha256=fGhA_WGR7V-DR1EuBHpwlbtqVtk5g9-t32N1ePOSczA,5355
|
|
98
99
|
crosshair/libimpl/binascii_ch_test.py,sha256=qWAYU1Sid3muwYL8pvVoCsMQtm5t3J8jFtolygvdghQ,1039
|
|
99
100
|
crosshair/libimpl/binascii_test.py,sha256=Yg37_B-eywcLq7EbsJZR3BUYYF6A1PGxE4qsmeBMyXg,2037
|
|
100
|
-
crosshair/libimpl/binasciilib.py,sha256=
|
|
101
|
+
crosshair/libimpl/binasciilib.py,sha256=kBFH5-W_q1gCTC-wusSq0cAsUsB_xOUpcW0XQbLzkSQ,5220
|
|
101
102
|
crosshair/libimpl/bisectlib_test.py,sha256=rVpcalZ4g3xr_b6z1Bv2FU1N07vPZyWhU9_CPzC8sBk,776
|
|
102
|
-
crosshair/libimpl/builtinslib.py,sha256=
|
|
103
|
+
crosshair/libimpl/builtinslib.py,sha256=4RZ9o8PJPgS_vtT6vZvXZxOucTrDNL6ibOXKWGRfji0,187645
|
|
103
104
|
crosshair/libimpl/builtinslib_ch_test.py,sha256=Do8kWNgfosLfI3yzZvTZ3ceuKTF0axN1ckkNZyn4ozE,31685
|
|
104
|
-
crosshair/libimpl/builtinslib_test.py,sha256
|
|
105
|
+
crosshair/libimpl/builtinslib_test.py,sha256=-TYk-ctn0YxT6I4ZFeSmRF-zB857KAWNaaJs9lwVzhs,93928
|
|
105
106
|
crosshair/libimpl/codecslib.py,sha256=cvpCbieFRB4BdfLqmKeJzpvm35qZ0ONqtilXPmN8OWI,2754
|
|
106
107
|
crosshair/libimpl/codecslib_test.py,sha256=3_uqcxEYK3BONdga0skZ1BkSPkIHRCgdoMB8NM3oUVY,2622
|
|
107
|
-
crosshair/libimpl/collectionslib.py,sha256=
|
|
108
|
+
crosshair/libimpl/collectionslib.py,sha256=LAnOG7ivHu_gq8KMOPirzjjn_Ua9R2IuxDmJDiXbe4I,8530
|
|
108
109
|
crosshair/libimpl/collectionslib_ch_test.py,sha256=A6-qeCU1zTcvuS6HkmF48Q45F3SvQJkh-BTUc2DKxJo,6107
|
|
109
|
-
crosshair/libimpl/collectionslib_test.py,sha256=
|
|
110
|
+
crosshair/libimpl/collectionslib_test.py,sha256=ttl88lydCERlS9lbzuNjmQdxIHe2VSW9Zz9SFebglD4,9156
|
|
110
111
|
crosshair/libimpl/copylib.py,sha256=s2q6jMCT2bvzyq5kQyT40TsmOeeJmLI4Corz4qWDZyE,550
|
|
111
112
|
crosshair/libimpl/datetimelib.py,sha256=fN-w40BapjLSOiGYpjBsJOvui14_VQvdwx-wKHKoDOU,81411
|
|
112
113
|
crosshair/libimpl/datetimelib_ch_test.py,sha256=NpZjUJgM08gB04d2gXkbrm7Y7Pdh3aso9GYb9iZtq6o,9632
|
|
@@ -136,13 +137,13 @@ crosshair/libimpl/jsonlib_ch_test.py,sha256=PXRtccN_gRXgSD4by7Sbco2uOLkguzhJ2WoU
|
|
|
136
137
|
crosshair/libimpl/jsonlib_test.py,sha256=4fE-mb8nt8Uc3XV5WwQWui0fg5TJUsAxJPInovl2cFk,1433
|
|
137
138
|
crosshair/libimpl/mathlib.py,sha256=N3UWGNMJ1-fm0sIP0J0P1G4BOHdixq0htlSE3dn7ESY,4435
|
|
138
139
|
crosshair/libimpl/mathlib_ch_test.py,sha256=fKfGCFblOzWw7BxN9FipH2_GUMBfFtYVh-EOu3M4314,1313
|
|
139
|
-
crosshair/libimpl/mathlib_test.py,sha256=
|
|
140
|
+
crosshair/libimpl/mathlib_test.py,sha256=1FkskoIrhcqONKioLGQIWqkrK36Ds53Afxii-m9tOEM,1928
|
|
140
141
|
crosshair/libimpl/oslib.py,sha256=hbpVYfxMUfU9vHjc026Lz9cHHRMko2G_7yEodljwwR8,130
|
|
141
142
|
crosshair/libimpl/pathliblib_test.py,sha256=ySRzUBzLlb7fDJaPNJSUk8Rg5sf71_fegyyRKSA8UIo,262
|
|
142
143
|
crosshair/libimpl/randomlib.py,sha256=yjQmgnwjF6UxffVtBiBi6CFln1CtSse947BtaPIvYn4,6338
|
|
143
144
|
crosshair/libimpl/randomlib_test.py,sha256=szLn-O2No5JN83AE6UC5p9rm27nLKTpttXsV_DQjAig,3442
|
|
144
145
|
crosshair/libimpl/relib.py,sha256=oqAKNC_RiXbH5cRwVBRhG1UAaqQLclt3_UAFDt6UzhY,30102
|
|
145
|
-
crosshair/libimpl/relib_ch_test.py,sha256=
|
|
146
|
+
crosshair/libimpl/relib_ch_test.py,sha256=o-u9iHMcw3QIl99fP42BkrWtoC0rfv8C72OsiuO55nM,5404
|
|
146
147
|
crosshair/libimpl/relib_test.py,sha256=f-xqNpOZKbp6kg0VyrkXANt0gglF2ykwAeG8uGQHSuI,16578
|
|
147
148
|
crosshair/libimpl/timelib.py,sha256=S2zNnQ5SoRepuAdeh8CzTqlz0zTJdCa_xHf36OUwBHA,1864
|
|
148
149
|
crosshair/libimpl/timelib_test.py,sha256=CA5-aK6twd9BEvxaFvUr3wE6uIQx6Dd_1YgIF5rk3jc,1703
|
|
@@ -157,7 +158,7 @@ crosshair/libimpl/weakreflib_test.py,sha256=1ld2-TlYshkIcXGKUY0Ox-dnpn9AA9Nualp_
|
|
|
157
158
|
crosshair/libimpl/zliblib.py,sha256=bpOYrRzLU9b1l3w_P3YDyrdrxaCAqwU3qQ4R_jLyjOY,372
|
|
158
159
|
crosshair/libimpl/zliblib_test.py,sha256=JoaxxdOu3spYm68tmRw70kdrXdf9njkFOILhpWcX1xg,401
|
|
159
160
|
crosshair/libimpl/encodings/__init__.py,sha256=VKUh56DNBLSFZEGVvKddivDAooo2pCh9o3hHA8OkYTI,703
|
|
160
|
-
crosshair/libimpl/encodings/_encutil.py,sha256=
|
|
161
|
+
crosshair/libimpl/encodings/_encutil.py,sha256=Rz5Ov62QaH14SzguSeoIlJ_DN-R8EdRny_HbT9V-fXw,7010
|
|
161
162
|
crosshair/libimpl/encodings/ascii.py,sha256=2EmYZTk51OaKx3kiv-ZDUYU3N5k3-OT0CrS8zr24M5A,1460
|
|
162
163
|
crosshair/libimpl/encodings/latin_1.py,sha256=BfgfxYvhzrk6lmDSOEhr85GXPo4_nHq0YCDGKJXZie8,1282
|
|
163
164
|
crosshair/libimpl/encodings/utf_8.py,sha256=hEUknu2B5Gt6exPTWK9KowywDd14eTTmqEqXSC2shzU,3266
|
|
@@ -165,9 +166,9 @@ crosshair/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
165
166
|
crosshair/tools/check_help_in_doc.py,sha256=An-2EJ0_Xr-Szo431AoEgJafoFWwnPl8HoT4bi86dd8,8499
|
|
166
167
|
crosshair/tools/check_init_and_setup_coincide.py,sha256=f4TvPg1Q3C_BQYtGgPfY_fqxo_ZTeU7QCy7WwQjaIlA,3621
|
|
167
168
|
crosshair/tools/generate_demo_table.py,sha256=qm4ZUXjUBKkVZ3bVVK9h6dJMDKYme8zMl-7at_aG7b0,3958
|
|
168
|
-
crosshair_tool-0.0.
|
|
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.
|
|
169
|
+
crosshair_tool-0.0.84.dist-info/licenses/LICENSE,sha256=qQLSJN48eqvalILMr3uzkg0p74FtK7WSwkux-0twy-s,4552
|
|
170
|
+
crosshair_tool-0.0.84.dist-info/METADATA,sha256=OyH44EZGpeyJNQYme3fwJdDW1SSHodXmsXkrycM4hUk,6862
|
|
171
|
+
crosshair_tool-0.0.84.dist-info/WHEEL,sha256=7BeCMv_y3IW4vpLY-fs-_Mu34OPejVIqaGmUigHu294,101
|
|
172
|
+
crosshair_tool-0.0.84.dist-info/entry_points.txt,sha256=u5FIPVn1jqn4Kzg5K_iNnbP6L4hQw5FWjQ0UMezG2VE,96
|
|
173
|
+
crosshair_tool-0.0.84.dist-info/top_level.txt,sha256=2jLWtM-BWg_ZYNbNfrcds0HFZD62a6J7ZIbcgcQrRk4,29
|
|
174
|
+
crosshair_tool-0.0.84.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|