gcf-python 2.5.3__py3-none-any.whl → 2.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gcf/__init__.py +1 -1
- gcf/scalar.py +28 -6
- {gcf_python-2.5.3.dist-info → gcf_python-2.6.0.dist-info}/METADATA +2 -2
- {gcf_python-2.5.3.dist-info → gcf_python-2.6.0.dist-info}/RECORD +7 -7
- {gcf_python-2.5.3.dist-info → gcf_python-2.6.0.dist-info}/WHEEL +1 -1
- {gcf_python-2.5.3.dist-info → gcf_python-2.6.0.dist-info}/entry_points.txt +0 -0
- {gcf_python-2.5.3.dist-info → gcf_python-2.6.0.dist-info}/licenses/LICENSE +0 -0
gcf/__init__.py
CHANGED
gcf/scalar.py
CHANGED
|
@@ -93,6 +93,15 @@ def format_scalar(v: Any, delimiter: str = "") -> str:
|
|
|
93
93
|
if isinstance(v, bool):
|
|
94
94
|
return "true" if v else "false"
|
|
95
95
|
if isinstance(v, int) and not isinstance(v, bool):
|
|
96
|
+
# The encoder enforces the int64 domain (SPEC 2.3.2): a Python int is
|
|
97
|
+
# arbitrary-precision, so a host integer outside int64 is rejected here
|
|
98
|
+
# rather than emitted as a bare token the decoder would reject.
|
|
99
|
+
if v < -(2**63) or v > 2**63 - 1:
|
|
100
|
+
raise ValueError(
|
|
101
|
+
f"out_of_range: integer {v} is outside the canonical int64 "
|
|
102
|
+
"domain [-9223372036854775808, 9223372036854775807]; "
|
|
103
|
+
"model larger values as strings (SPEC 2.3.2)"
|
|
104
|
+
)
|
|
96
105
|
return str(v)
|
|
97
106
|
if isinstance(v, float):
|
|
98
107
|
return format_number(v)
|
|
@@ -111,7 +120,12 @@ def format_number(f: float) -> str:
|
|
|
111
120
|
# Negative zero canonicalizes to 0 (SPEC 2.3.1): -0.0 equals 0.0 by value.
|
|
112
121
|
return "0"
|
|
113
122
|
a = abs(f)
|
|
114
|
-
|
|
123
|
+
# Plain decimal only below 2^53. Every double at or above 2^53 is integer-valued,
|
|
124
|
+
# so a plain rendering would emit a bare-integer token: indistinguishable from an
|
|
125
|
+
# int64 on the wire and beyond the binary64 safe-integer range (2^53-1), so a
|
|
126
|
+
# JavaScript decoder rejects it under its default policy. Exponent shape keeps bare
|
|
127
|
+
# tokens int64 and decimal/exponent tokens doubles (SPEC 2.3.1). Ints format above.
|
|
128
|
+
if 1e-6 <= a < 2**53:
|
|
115
129
|
# Use repr for shortest round-trippable form.
|
|
116
130
|
s = repr(f)
|
|
117
131
|
# If repr chose scientific notation, convert to plain decimal.
|
|
@@ -165,12 +179,20 @@ def parse_scalar(s: str, tabular_context: bool = False) -> Any:
|
|
|
165
179
|
if s == "false":
|
|
166
180
|
return False
|
|
167
181
|
if _JSON_NUMBER_RE.match(s):
|
|
182
|
+
# Token shape follows domain (SPEC 2.3.2): a bare-integer literal (no
|
|
183
|
+
# fraction, no exponent) is an int64-domain integer parsed exactly, not
|
|
184
|
+
# routed through float(); a decimal or exponent literal is a double.
|
|
185
|
+
if "." not in s and "e" not in s and "E" not in s:
|
|
186
|
+
n = int(s)
|
|
187
|
+
if n < -(2**63) or n > 2**63 - 1:
|
|
188
|
+
raise ValueError(
|
|
189
|
+
f"out_of_range: integer {s} is outside the canonical int64 "
|
|
190
|
+
"domain [-9223372036854775808, 9223372036854775807]; "
|
|
191
|
+
"model larger values as strings (SPEC 2.3.2)"
|
|
192
|
+
)
|
|
193
|
+
return n
|
|
168
194
|
try:
|
|
169
|
-
|
|
170
|
-
if "." not in s and "e" not in s and "E" not in s:
|
|
171
|
-
if abs(f) <= 2**53:
|
|
172
|
-
return int(f)
|
|
173
|
-
return f
|
|
195
|
+
return float(s)
|
|
174
196
|
except ValueError:
|
|
175
197
|
pass
|
|
176
198
|
return s
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: gcf-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.0
|
|
4
4
|
Summary: The AI-native wire format for structured data. 50-92% fewer tokens than JSON, with multi-turn delta encoding for agent loops. 100% comprehension on every frontier model. Zero dependencies.
|
|
5
5
|
Project-URL: Homepage, https://github.com/blackwell-systems/gcf-python
|
|
6
6
|
Project-URL: Documentation, https://gcformat.com/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gcf/__init__.py,sha256=
|
|
1
|
+
gcf/__init__.py,sha256=QRGOX87aJR1RXZktNnzRgYbqM7Fp9i1ZPIAf97wE-o8,2616
|
|
2
2
|
gcf/__main__.py,sha256=EpvBz1yc8H0D5OJ1zy2tYke-kRzvudKa4DEbfeW14ao,71
|
|
3
3
|
gcf/cli.py,sha256=UEe1CAZn-rKGNIo_ap8-oez3ucl6DSRbsdv6RDnzygY,5256
|
|
4
4
|
gcf/constants.py,sha256=cmZ8YJSOB0im_eyfN8v4UvrLpBC6Fuf4cfcKZGbutxY,638
|
|
@@ -10,13 +10,13 @@ gcf/generic.py,sha256=1c53utF2GcD8lS_wks2opQw08hMz4KGL-7C8g7JB5bA,21577
|
|
|
10
10
|
gcf/generic_delta.py,sha256=5KSUT_QUeH7OILLWfu9JveaXRSrqRIi3c6E8WjlgC4Q,18785
|
|
11
11
|
gcf/keyed_map.py,sha256=qCwhehXB1FQ2iYCPhcvXOqGwrVqdXhGYZGxv56CSUgc,3644
|
|
12
12
|
gcf/packroot.py,sha256=0rZY7TEVcLzA8XhoIOc6_g9lbRCn-MUr54YTRVhzsO4,2019
|
|
13
|
-
gcf/scalar.py,sha256=
|
|
13
|
+
gcf/scalar.py,sha256=fQvfYLuJVbrbB46fd0V1BPDdVaxdthaOsrZJ2B8l2Gk,11499
|
|
14
14
|
gcf/session.py,sha256=rPqR4xsHKpi_G37t1ODwkTUdHhVAGa3Uig8F60h34Ms,5335
|
|
15
15
|
gcf/stream.py,sha256=3eyzmLMZPyEGC1MS9pujxio2x_t7rCL-eNuJ4DjYkaA,5938
|
|
16
16
|
gcf/stream_generic.py,sha256=h2mJ-jI-c1H2L0uoQVhrvDc7uJEcOwS1MB51k4SCPNM,5775
|
|
17
17
|
gcf/types.py,sha256=AWm-LQoSqLHAYtEjcAxWQZqJ4JXqNreLUKO2mJFgNMA,1465
|
|
18
|
-
gcf_python-2.
|
|
19
|
-
gcf_python-2.
|
|
20
|
-
gcf_python-2.
|
|
21
|
-
gcf_python-2.
|
|
22
|
-
gcf_python-2.
|
|
18
|
+
gcf_python-2.6.0.dist-info/METADATA,sha256=0iJSJoi00y_XFo6x3cM7lq5mp9JuShcf3VFfCYYbov4,16165
|
|
19
|
+
gcf_python-2.6.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
20
|
+
gcf_python-2.6.0.dist-info/entry_points.txt,sha256=aFT6gqlkh8iGfM8cblE-LUMxHH08_v71IIoZtDdRIVA,37
|
|
21
|
+
gcf_python-2.6.0.dist-info/licenses/LICENSE,sha256=2Fit9wnaIe--RMSAgyQqxC5hfZTyZqn4fIdBtp9qPDw,1072
|
|
22
|
+
gcf_python-2.6.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|