btoon 0.0.1__tar.gz
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.
- btoon-0.0.1/LICENSE +21 -0
- btoon-0.0.1/MANIFEST.in +49 -0
- btoon-0.0.1/PKG-INFO +380 -0
- btoon-0.0.1/README.md +322 -0
- btoon-0.0.1/btoon/__init__.py +68 -0
- btoon-0.0.1/btoon/__init__.pyi +161 -0
- btoon-0.0.1/btoon/py.typed +0 -0
- btoon-0.0.1/btoon.egg-info/PKG-INFO +380 -0
- btoon-0.0.1/btoon.egg-info/SOURCES.txt +60 -0
- btoon-0.0.1/btoon.egg-info/dependency_links.txt +1 -0
- btoon-0.0.1/btoon.egg-info/not-zip-safe +1 -0
- btoon-0.0.1/btoon.egg-info/requires.txt +22 -0
- btoon-0.0.1/btoon.egg-info/top_level.txt +1 -0
- btoon-0.0.1/btoon_python.cpp +208 -0
- btoon-0.0.1/core/CMakeLists.txt +434 -0
- btoon-0.0.1/core/LICENSE +21 -0
- btoon-0.0.1/core/README.md +354 -0
- btoon-0.0.1/core/include/btoon/batch_processor.h +456 -0
- btoon-0.0.1/core/include/btoon/btoon.h +256 -0
- btoon-0.0.1/core/include/btoon/capi.h +194 -0
- btoon-0.0.1/core/include/btoon/compression.h +160 -0
- btoon-0.0.1/core/include/btoon/decimal.h +169 -0
- btoon-0.0.1/core/include/btoon/decoder.h +125 -0
- btoon-0.0.1/core/include/btoon/delta_codec.h +18 -0
- btoon-0.0.1/core/include/btoon/dictionary_codec.h +18 -0
- btoon-0.0.1/core/include/btoon/encoder.h +193 -0
- btoon-0.0.1/core/include/btoon/graph.h +352 -0
- btoon-0.0.1/core/include/btoon/graphql_schema.h +299 -0
- btoon-0.0.1/core/include/btoon/json_schema.h +378 -0
- btoon-0.0.1/core/include/btoon/memory_pool.h +109 -0
- btoon-0.0.1/core/include/btoon/rle_codec.h +18 -0
- btoon-0.0.1/core/include/btoon/schema.h +326 -0
- btoon-0.0.1/core/include/btoon/security.h +118 -0
- btoon-0.0.1/core/include/btoon/stream_decoder.h +44 -0
- btoon-0.0.1/core/include/btoon/stream_encoder.h +43 -0
- btoon-0.0.1/core/include/btoon/timeseries.h +398 -0
- btoon-0.0.1/core/include/btoon/utils.h +284 -0
- btoon-0.0.1/core/include/btoon/validator.h +290 -0
- btoon-0.0.1/core/include/btoon/zero_copy.h +466 -0
- btoon-0.0.1/core/include/third_party/nlohmann/json.hpp +24596 -0
- btoon-0.0.1/core/src/btoon.cpp +251 -0
- btoon-0.0.1/core/src/capi.cpp +295 -0
- btoon-0.0.1/core/src/compression.cpp +635 -0
- btoon-0.0.1/core/src/decoder.cpp +458 -0
- btoon-0.0.1/core/src/delta_codec.cpp +131 -0
- btoon-0.0.1/core/src/dictionary_codec.cpp +61 -0
- btoon-0.0.1/core/src/encoder.cpp +531 -0
- btoon-0.0.1/core/src/memory_pool.cpp +155 -0
- btoon-0.0.1/core/src/rle_codec.cpp +49 -0
- btoon-0.0.1/core/src/schema.cpp +1323 -0
- btoon-0.0.1/core/src/security.cpp +43 -0
- btoon-0.0.1/core/src/stream_decoder.cpp +48 -0
- btoon-0.0.1/core/src/stream_encoder.cpp +43 -0
- btoon-0.0.1/core/src/validator.cpp +600 -0
- btoon-0.0.1/core/src/zero_copy.cpp +502 -0
- btoon-0.0.1/examples/01_basic.py +135 -0
- btoon-0.0.1/examples/02_compression.py +154 -0
- btoon-0.0.1/pyproject.toml +112 -0
- btoon-0.0.1/setup.cfg +4 -0
- btoon-0.0.1/setup.py +121 -0
- btoon-0.0.1/test_comprehensive.py +307 -0
- btoon-0.0.1/test_quick.py +84 -0
btoon-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 BTOON Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
btoon-0.0.1/MANIFEST.in
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Include source files
|
|
2
|
+
include btoon_python.cpp
|
|
3
|
+
include pyproject.toml
|
|
4
|
+
include setup.py
|
|
5
|
+
include LICENSE
|
|
6
|
+
include README.md
|
|
7
|
+
|
|
8
|
+
# Include test files
|
|
9
|
+
include test_comprehensive.py
|
|
10
|
+
include test_quick.py
|
|
11
|
+
|
|
12
|
+
# Include package files
|
|
13
|
+
recursive-include btoon *.py *.pyi py.typed
|
|
14
|
+
|
|
15
|
+
# Include btoon-core submodule (source files needed for building)
|
|
16
|
+
# Note: If core submodule is empty, it will be cloned during build
|
|
17
|
+
recursive-include core/include *.h *.hpp
|
|
18
|
+
recursive-include core/src *.cpp *.h *.hpp
|
|
19
|
+
include core/CMakeLists.txt
|
|
20
|
+
include core/LICENSE
|
|
21
|
+
include core/README.md
|
|
22
|
+
include core/.gitmodules
|
|
23
|
+
|
|
24
|
+
# Exclude unnecessary core files
|
|
25
|
+
prune core/tests
|
|
26
|
+
prune core/tools
|
|
27
|
+
prune core/examples
|
|
28
|
+
prune core/docs
|
|
29
|
+
prune core/scripts
|
|
30
|
+
prune core/.git
|
|
31
|
+
prune core/.github
|
|
32
|
+
prune core/build
|
|
33
|
+
prune core/build_shared
|
|
34
|
+
|
|
35
|
+
# Include examples
|
|
36
|
+
recursive-include examples *.py
|
|
37
|
+
|
|
38
|
+
# Exclude compiled files
|
|
39
|
+
global-exclude __pycache__
|
|
40
|
+
global-exclude *.py[co]
|
|
41
|
+
global-exclude .git*
|
|
42
|
+
global-exclude .DS_Store
|
|
43
|
+
global-exclude *.swp
|
|
44
|
+
global-exclude *~
|
|
45
|
+
global-exclude *.so
|
|
46
|
+
global-exclude *.dylib
|
|
47
|
+
global-exclude *.dll
|
|
48
|
+
global-exclude *.a
|
|
49
|
+
global-exclude *.lib
|
btoon-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: btoon
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: High-performance binary serialization format for Python
|
|
5
|
+
Home-page: https://github.com/BTOON-project/btoon-python
|
|
6
|
+
Author: BTOON Contributors
|
|
7
|
+
Author-email: BTOON Contributors <hello@btoon.net>
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Homepage, https://btoon.net
|
|
10
|
+
Project-URL: Documentation, https://btoon.net/docs
|
|
11
|
+
Project-URL: Repository, https://github.com/BTOON-project/btoon-python
|
|
12
|
+
Project-URL: Issues, https://github.com/BTOON-project/btoon-python/issues
|
|
13
|
+
Keywords: serialization,binary,messagepack,compression,performance,tabular,data
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
23
|
+
Classifier: Programming Language :: C++
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
Classifier: Topic :: System :: Archiving :: Compression
|
|
26
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
27
|
+
Classifier: Topic :: Database
|
|
28
|
+
Classifier: Topic :: Scientific/Engineering
|
|
29
|
+
Classifier: Operating System :: OS Independent
|
|
30
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
31
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
32
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
33
|
+
Requires-Python: >=3.7
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
License-File: LICENSE
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
39
|
+
Requires-Dist: pytest-benchmark; extra == "dev"
|
|
40
|
+
Requires-Dist: black; extra == "dev"
|
|
41
|
+
Requires-Dist: flake8; extra == "dev"
|
|
42
|
+
Requires-Dist: mypy; extra == "dev"
|
|
43
|
+
Requires-Dist: build; extra == "dev"
|
|
44
|
+
Requires-Dist: twine; extra == "dev"
|
|
45
|
+
Provides-Extra: numpy
|
|
46
|
+
Requires-Dist: numpy>=1.19.0; extra == "numpy"
|
|
47
|
+
Provides-Extra: pandas
|
|
48
|
+
Requires-Dist: pandas>=1.2.0; extra == "pandas"
|
|
49
|
+
Requires-Dist: numpy>=1.19.0; extra == "pandas"
|
|
50
|
+
Provides-Extra: full
|
|
51
|
+
Requires-Dist: numpy>=1.19.0; extra == "full"
|
|
52
|
+
Requires-Dist: pandas>=1.2.0; extra == "full"
|
|
53
|
+
Requires-Dist: aiofiles>=0.8.0; extra == "full"
|
|
54
|
+
Dynamic: author
|
|
55
|
+
Dynamic: home-page
|
|
56
|
+
Dynamic: license-file
|
|
57
|
+
Dynamic: requires-python
|
|
58
|
+
|
|
59
|
+
# BTOON for Python
|
|
60
|
+
|
|
61
|
+
[](https://pypi.org/project/btoon/)
|
|
62
|
+
[](https://pypi.org/project/btoon/)
|
|
63
|
+
[](https://opensource.org/licenses/MIT)
|
|
64
|
+
|
|
65
|
+
High-performance binary serialization format for Python applications with native C++ performance.
|
|
66
|
+
|
|
67
|
+
## Features
|
|
68
|
+
|
|
69
|
+
- 🚀 **High Performance** - Native C++ implementation with Python bindings
|
|
70
|
+
- 📦 **Compact Binary Format** - Smaller than JSON, faster than Pickle
|
|
71
|
+
- 🗜️ **Built-in Compression** - ZLIB, LZ4, ZSTD, Brotli, Snappy support
|
|
72
|
+
- 📊 **NumPy & Pandas Integration** - Efficient array and DataFrame serialization
|
|
73
|
+
- 🔄 **Schema Evolution** - Forward and backward compatibility
|
|
74
|
+
- ⚡ **Zero-Copy Operations** - Memory-efficient for large data
|
|
75
|
+
- 🐍 **Pythonic API** - Native Python types and async support
|
|
76
|
+
- 💰 **Financial Types** - Decimal, Currency, and Percentage support
|
|
77
|
+
|
|
78
|
+
## Installation
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
pip install btoon
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Or using conda:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
conda install -c conda-forge btoon
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Quick Start
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
import btoon
|
|
94
|
+
|
|
95
|
+
# Encode data
|
|
96
|
+
data = {
|
|
97
|
+
'name': 'BTOON',
|
|
98
|
+
'version': '0.0.1',
|
|
99
|
+
'features': ['fast', 'compact', 'typed'],
|
|
100
|
+
'metrics': {
|
|
101
|
+
'speed': 9000,
|
|
102
|
+
'size': 0.5
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
encoded = btoon.encode(data)
|
|
107
|
+
print(f'Encoded size: {len(encoded)} bytes')
|
|
108
|
+
|
|
109
|
+
# Decode data
|
|
110
|
+
decoded = btoon.decode(encoded)
|
|
111
|
+
print(f'Decoded: {decoded}')
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Advanced Features
|
|
115
|
+
|
|
116
|
+
### Compression
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
# Enable compression with different algorithms
|
|
120
|
+
compressed = btoon.encode(data, compress=True) # Default: zlib
|
|
121
|
+
|
|
122
|
+
# Specify algorithm and level
|
|
123
|
+
compressed = btoon.encode(data,
|
|
124
|
+
compress=True,
|
|
125
|
+
algorithm='zstd', # 'zlib', 'lz4', 'zstd', 'brotli', 'snappy'
|
|
126
|
+
level=3
|
|
127
|
+
)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### NumPy Integration
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
import numpy as np
|
|
134
|
+
import btoon
|
|
135
|
+
|
|
136
|
+
# Encode NumPy arrays efficiently
|
|
137
|
+
array = np.random.rand(1000, 100)
|
|
138
|
+
encoded = btoon.from_numpy(array)
|
|
139
|
+
|
|
140
|
+
# Decode back to NumPy
|
|
141
|
+
decoded = btoon.to_numpy(encoded)
|
|
142
|
+
assert np.array_equal(array, decoded)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Pandas Integration
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
import pandas as pd
|
|
149
|
+
import btoon
|
|
150
|
+
|
|
151
|
+
# Encode DataFrames with columnar optimization
|
|
152
|
+
df = pd.DataFrame({
|
|
153
|
+
'id': range(1000),
|
|
154
|
+
'name': [f'user_{i}' for i in range(1000)],
|
|
155
|
+
'score': np.random.rand(1000)
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
encoded = btoon.from_dataframe(df)
|
|
159
|
+
print(f'Encoded size: {len(encoded)} bytes')
|
|
160
|
+
|
|
161
|
+
# Decode back to DataFrame
|
|
162
|
+
decoded_df = btoon.to_dataframe(encoded)
|
|
163
|
+
assert df.equals(decoded_df)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Extended Types
|
|
167
|
+
|
|
168
|
+
```python
|
|
169
|
+
from btoon import Timestamp, Decimal, Currency, Percentage
|
|
170
|
+
from datetime import datetime
|
|
171
|
+
|
|
172
|
+
# Timestamp with nanosecond precision
|
|
173
|
+
ts = Timestamp.now()
|
|
174
|
+
ts_from_dt = Timestamp.from_datetime(datetime.now())
|
|
175
|
+
|
|
176
|
+
# Financial types with arbitrary precision
|
|
177
|
+
price = Decimal("19.99")
|
|
178
|
+
tax_rate = Percentage("8.25")
|
|
179
|
+
total = Currency("USD", price * (1 + tax_rate.to_decimal()))
|
|
180
|
+
|
|
181
|
+
data = {
|
|
182
|
+
'timestamp': ts,
|
|
183
|
+
'price': price,
|
|
184
|
+
'tax_rate': tax_rate,
|
|
185
|
+
'total': total
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
encoded = btoon.encode(data)
|
|
189
|
+
decoded = btoon.decode(encoded)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Async Support
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
import asyncio
|
|
196
|
+
import btoon
|
|
197
|
+
|
|
198
|
+
async def process_data():
|
|
199
|
+
# Async encoding
|
|
200
|
+
async with btoon.async_stream('output.btoon', 'w') as stream:
|
|
201
|
+
await stream.encode({'chunk': 1})
|
|
202
|
+
await stream.encode({'chunk': 2})
|
|
203
|
+
|
|
204
|
+
# Async decoding
|
|
205
|
+
async with btoon.async_stream('output.btoon', 'r') as stream:
|
|
206
|
+
async for obj in stream:
|
|
207
|
+
print(f'Decoded: {obj}')
|
|
208
|
+
|
|
209
|
+
asyncio.run(process_data())
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### File Operations
|
|
213
|
+
|
|
214
|
+
```python
|
|
215
|
+
# Context manager for file operations
|
|
216
|
+
with btoon.open_btoon('data.btoon', 'w') as f:
|
|
217
|
+
f.encode({'record': 1})
|
|
218
|
+
f.encode({'record': 2})
|
|
219
|
+
|
|
220
|
+
with btoon.open_btoon('data.btoon', 'r') as f:
|
|
221
|
+
for record in f:
|
|
222
|
+
print(record)
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Streaming
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
from btoon import StreamEncoder, StreamDecoder
|
|
229
|
+
|
|
230
|
+
# Stream encoding
|
|
231
|
+
encoder = StreamEncoder()
|
|
232
|
+
chunks = []
|
|
233
|
+
for i in range(100):
|
|
234
|
+
chunk = encoder.encode_chunk({'id': i})
|
|
235
|
+
chunks.append(chunk)
|
|
236
|
+
final = encoder.finalize()
|
|
237
|
+
|
|
238
|
+
# Stream decoding
|
|
239
|
+
decoder = StreamDecoder()
|
|
240
|
+
for chunk in chunks:
|
|
241
|
+
objs = decoder.decode_chunk(chunk)
|
|
242
|
+
for obj in objs:
|
|
243
|
+
print(obj)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Schema Support
|
|
247
|
+
|
|
248
|
+
```python
|
|
249
|
+
import btoon
|
|
250
|
+
|
|
251
|
+
# Define schema
|
|
252
|
+
schema = btoon.Schema({
|
|
253
|
+
'type': 'object',
|
|
254
|
+
'properties': {
|
|
255
|
+
'id': {'type': 'integer', 'required': True},
|
|
256
|
+
'name': {'type': 'string', 'required': True},
|
|
257
|
+
'age': {'type': 'integer', 'min': 0, 'max': 120}
|
|
258
|
+
}
|
|
259
|
+
})
|
|
260
|
+
|
|
261
|
+
# Validate and encode with schema
|
|
262
|
+
if schema.validate(data):
|
|
263
|
+
encoded = btoon.encode(data, schema=schema)
|
|
264
|
+
decoded = btoon.decode(encoded, schema=schema)
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Performance
|
|
268
|
+
|
|
269
|
+
BTOON provides significant performance improvements:
|
|
270
|
+
|
|
271
|
+
| Operation | JSON | Pickle | BTOON | Improvement |
|
|
272
|
+
|-----------|------|--------|-------|-------------|
|
|
273
|
+
| Encode 1MB | 125ms | 85ms | 12ms | 10x faster |
|
|
274
|
+
| Decode 1MB | 95ms | 45ms | 8ms | 11x faster |
|
|
275
|
+
| Size | 1024KB | 780KB | 412KB | 60% smaller |
|
|
276
|
+
|
|
277
|
+
### DataFrame Performance (10,000 rows × 20 columns)
|
|
278
|
+
|
|
279
|
+
| Format | Encode | Decode | Size |
|
|
280
|
+
|--------|--------|--------|------|
|
|
281
|
+
| CSV | 450ms | 380ms | 8.2MB |
|
|
282
|
+
| Pickle | 120ms | 95ms | 5.1MB |
|
|
283
|
+
| Parquet | 85ms | 72ms | 2.3MB |
|
|
284
|
+
| BTOON | 35ms | 28ms | 1.8MB |
|
|
285
|
+
|
|
286
|
+
## API Reference
|
|
287
|
+
|
|
288
|
+
### Core Functions
|
|
289
|
+
|
|
290
|
+
#### `encode(data, compress=False, auto_tabular=True, **kwargs)`
|
|
291
|
+
Encode Python data to BTOON format.
|
|
292
|
+
|
|
293
|
+
#### `decode(data, decompress=False, **kwargs)`
|
|
294
|
+
Decode BTOON data to Python objects.
|
|
295
|
+
|
|
296
|
+
### NumPy Integration
|
|
297
|
+
|
|
298
|
+
#### `from_numpy(array, compress=False)`
|
|
299
|
+
Encode NumPy array to BTOON.
|
|
300
|
+
|
|
301
|
+
#### `to_numpy(data)`
|
|
302
|
+
Decode BTOON to NumPy array.
|
|
303
|
+
|
|
304
|
+
### Pandas Integration
|
|
305
|
+
|
|
306
|
+
#### `from_dataframe(df, compress=True)`
|
|
307
|
+
Encode DataFrame to BTOON with columnar optimization.
|
|
308
|
+
|
|
309
|
+
#### `to_dataframe(data)`
|
|
310
|
+
Decode BTOON to DataFrame.
|
|
311
|
+
|
|
312
|
+
### Extended Types
|
|
313
|
+
|
|
314
|
+
#### `Timestamp`
|
|
315
|
+
High-precision timestamp with nanoseconds and timezone.
|
|
316
|
+
|
|
317
|
+
#### `Decimal`
|
|
318
|
+
Arbitrary precision decimal numbers.
|
|
319
|
+
|
|
320
|
+
#### `Currency`
|
|
321
|
+
Currency values with code and amount.
|
|
322
|
+
|
|
323
|
+
#### `Percentage`
|
|
324
|
+
Percentage values with proper arithmetic.
|
|
325
|
+
|
|
326
|
+
### Async Support
|
|
327
|
+
|
|
328
|
+
#### `async_stream(path, mode='r')`
|
|
329
|
+
Async context manager for file operations.
|
|
330
|
+
|
|
331
|
+
#### `AsyncStreamEncoder`
|
|
332
|
+
Async encoder for streaming data.
|
|
333
|
+
|
|
334
|
+
#### `AsyncStreamDecoder`
|
|
335
|
+
Async decoder for streaming data.
|
|
336
|
+
|
|
337
|
+
## Examples
|
|
338
|
+
|
|
339
|
+
See the [`examples/`](examples/) directory for more usage examples:
|
|
340
|
+
- Basic encoding/decoding
|
|
341
|
+
- NumPy and Pandas integration
|
|
342
|
+
- Financial calculations
|
|
343
|
+
- Async operations
|
|
344
|
+
- Schema validation
|
|
345
|
+
- Performance benchmarks
|
|
346
|
+
|
|
347
|
+
## Requirements
|
|
348
|
+
|
|
349
|
+
- Python >= 3.7
|
|
350
|
+
- C++ compiler (for building from source)
|
|
351
|
+
- NumPy (optional, for array support)
|
|
352
|
+
- Pandas (optional, for DataFrame support)
|
|
353
|
+
|
|
354
|
+
## Building from Source
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
git clone https://github.com/BTOON-project/btoon-python.git
|
|
358
|
+
cd btoon-python
|
|
359
|
+
pip install -e .
|
|
360
|
+
pytest tests/
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Contributing
|
|
364
|
+
|
|
365
|
+
Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details.
|
|
366
|
+
|
|
367
|
+
## License
|
|
368
|
+
|
|
369
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
|
370
|
+
|
|
371
|
+
## Links
|
|
372
|
+
|
|
373
|
+
- [Website](https://btoon.net)
|
|
374
|
+
- [GitHub](https://github.com/BTOON-project/btoon-python)
|
|
375
|
+
- [Documentation](https://btoon.readthedocs.io)
|
|
376
|
+
- [PyPI Package](https://pypi.org/project/btoon/)
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
Part of the BTOON project - High-performance binary serialization for modern applications.
|