maque 0.2.1__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.
Files changed (143) hide show
  1. maque/__init__.py +30 -0
  2. maque/__main__.py +926 -0
  3. maque/ai_platform/__init__.py +0 -0
  4. maque/ai_platform/crawl.py +45 -0
  5. maque/ai_platform/metrics.py +258 -0
  6. maque/ai_platform/nlp_preprocess.py +67 -0
  7. maque/ai_platform/webpage_screen_shot.py +195 -0
  8. maque/algorithms/__init__.py +78 -0
  9. maque/algorithms/bezier.py +15 -0
  10. maque/algorithms/bktree.py +117 -0
  11. maque/algorithms/core.py +104 -0
  12. maque/algorithms/hilbert.py +16 -0
  13. maque/algorithms/rate_function.py +92 -0
  14. maque/algorithms/transform.py +27 -0
  15. maque/algorithms/trie.py +272 -0
  16. maque/algorithms/utils.py +63 -0
  17. maque/algorithms/video.py +587 -0
  18. maque/api/__init__.py +1 -0
  19. maque/api/common.py +110 -0
  20. maque/api/fetch.py +26 -0
  21. maque/api/static/icon.png +0 -0
  22. maque/api/static/redoc.standalone.js +1782 -0
  23. maque/api/static/swagger-ui-bundle.js +3 -0
  24. maque/api/static/swagger-ui.css +3 -0
  25. maque/cli/__init__.py +1 -0
  26. maque/cli/clean_invisible_chars.py +324 -0
  27. maque/cli/core.py +34 -0
  28. maque/cli/groups/__init__.py +26 -0
  29. maque/cli/groups/config.py +205 -0
  30. maque/cli/groups/data.py +615 -0
  31. maque/cli/groups/doctor.py +259 -0
  32. maque/cli/groups/embedding.py +222 -0
  33. maque/cli/groups/git.py +29 -0
  34. maque/cli/groups/help.py +410 -0
  35. maque/cli/groups/llm.py +223 -0
  36. maque/cli/groups/mcp.py +241 -0
  37. maque/cli/groups/mllm.py +1795 -0
  38. maque/cli/groups/mllm_simple.py +60 -0
  39. maque/cli/groups/quant.py +210 -0
  40. maque/cli/groups/service.py +490 -0
  41. maque/cli/groups/system.py +570 -0
  42. maque/cli/mllm_run.py +1451 -0
  43. maque/cli/script.py +52 -0
  44. maque/cli/tree.py +49 -0
  45. maque/clustering/__init__.py +52 -0
  46. maque/clustering/analyzer.py +347 -0
  47. maque/clustering/clusterers.py +464 -0
  48. maque/clustering/sampler.py +134 -0
  49. maque/clustering/visualizer.py +205 -0
  50. maque/constant.py +13 -0
  51. maque/core.py +133 -0
  52. maque/cv/__init__.py +1 -0
  53. maque/cv/image.py +219 -0
  54. maque/cv/utils.py +68 -0
  55. maque/cv/video/__init__.py +3 -0
  56. maque/cv/video/keyframe_extractor.py +368 -0
  57. maque/embedding/__init__.py +43 -0
  58. maque/embedding/base.py +56 -0
  59. maque/embedding/multimodal.py +308 -0
  60. maque/embedding/server.py +523 -0
  61. maque/embedding/text.py +311 -0
  62. maque/git/__init__.py +24 -0
  63. maque/git/pure_git.py +912 -0
  64. maque/io/__init__.py +29 -0
  65. maque/io/core.py +38 -0
  66. maque/io/ops.py +194 -0
  67. maque/llm/__init__.py +111 -0
  68. maque/llm/backend.py +416 -0
  69. maque/llm/base.py +411 -0
  70. maque/llm/server.py +366 -0
  71. maque/mcp_server.py +1096 -0
  72. maque/mllm_data_processor_pipeline/__init__.py +17 -0
  73. maque/mllm_data_processor_pipeline/core.py +341 -0
  74. maque/mllm_data_processor_pipeline/example.py +291 -0
  75. maque/mllm_data_processor_pipeline/steps/__init__.py +56 -0
  76. maque/mllm_data_processor_pipeline/steps/data_alignment.py +267 -0
  77. maque/mllm_data_processor_pipeline/steps/data_loader.py +172 -0
  78. maque/mllm_data_processor_pipeline/steps/data_validation.py +304 -0
  79. maque/mllm_data_processor_pipeline/steps/format_conversion.py +411 -0
  80. maque/mllm_data_processor_pipeline/steps/mllm_annotation.py +331 -0
  81. maque/mllm_data_processor_pipeline/steps/mllm_refinement.py +446 -0
  82. maque/mllm_data_processor_pipeline/steps/result_validation.py +501 -0
  83. maque/mllm_data_processor_pipeline/web_app.py +317 -0
  84. maque/nlp/__init__.py +14 -0
  85. maque/nlp/ngram.py +9 -0
  86. maque/nlp/parser.py +63 -0
  87. maque/nlp/risk_matcher.py +543 -0
  88. maque/nlp/sentence_splitter.py +202 -0
  89. maque/nlp/simple_tradition_cvt.py +31 -0
  90. maque/performance/__init__.py +21 -0
  91. maque/performance/_measure_time.py +70 -0
  92. maque/performance/_profiler.py +367 -0
  93. maque/performance/_stat_memory.py +51 -0
  94. maque/pipelines/__init__.py +15 -0
  95. maque/pipelines/clustering.py +252 -0
  96. maque/quantization/__init__.py +42 -0
  97. maque/quantization/auto_round.py +120 -0
  98. maque/quantization/base.py +145 -0
  99. maque/quantization/bitsandbytes.py +127 -0
  100. maque/quantization/llm_compressor.py +102 -0
  101. maque/retriever/__init__.py +35 -0
  102. maque/retriever/chroma.py +654 -0
  103. maque/retriever/document.py +140 -0
  104. maque/retriever/milvus.py +1140 -0
  105. maque/table_ops/__init__.py +1 -0
  106. maque/table_ops/core.py +133 -0
  107. maque/table_viewer/__init__.py +4 -0
  108. maque/table_viewer/download_assets.py +57 -0
  109. maque/table_viewer/server.py +698 -0
  110. maque/table_viewer/static/element-plus-icons.js +5791 -0
  111. maque/table_viewer/static/element-plus.css +1 -0
  112. maque/table_viewer/static/element-plus.js +65236 -0
  113. maque/table_viewer/static/main.css +268 -0
  114. maque/table_viewer/static/main.js +669 -0
  115. maque/table_viewer/static/vue.global.js +18227 -0
  116. maque/table_viewer/templates/index.html +401 -0
  117. maque/utils/__init__.py +56 -0
  118. maque/utils/color.py +68 -0
  119. maque/utils/color_string.py +45 -0
  120. maque/utils/compress.py +66 -0
  121. maque/utils/constant.py +183 -0
  122. maque/utils/core.py +261 -0
  123. maque/utils/cursor.py +143 -0
  124. maque/utils/distance.py +58 -0
  125. maque/utils/docker.py +96 -0
  126. maque/utils/downloads.py +51 -0
  127. maque/utils/excel_helper.py +542 -0
  128. maque/utils/helper_metrics.py +121 -0
  129. maque/utils/helper_parser.py +168 -0
  130. maque/utils/net.py +64 -0
  131. maque/utils/nvidia_stat.py +140 -0
  132. maque/utils/ops.py +53 -0
  133. maque/utils/packages.py +31 -0
  134. maque/utils/path.py +57 -0
  135. maque/utils/tar.py +260 -0
  136. maque/utils/untar.py +129 -0
  137. maque/web/__init__.py +0 -0
  138. maque/web/image_downloader.py +1410 -0
  139. maque-0.2.1.dist-info/METADATA +450 -0
  140. maque-0.2.1.dist-info/RECORD +143 -0
  141. maque-0.2.1.dist-info/WHEEL +4 -0
  142. maque-0.2.1.dist-info/entry_points.txt +3 -0
  143. maque-0.2.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,450 @@
1
+ Metadata-Version: 2.4
2
+ Name: maque
3
+ Version: 0.2.1
4
+ Summary: Python toolkit for ML, CV, NLP and multimodal AI development
5
+ Project-URL: homepage, https://github.com/beidongjiedeguang/maque
6
+ Project-URL: repository, https://github.com/beidongjiedeguang/maque
7
+ Project-URL: documentation, https://github.com/beidongjiedeguang/maque#readme
8
+ Project-URL: Issues, https://github.com/beidongjiedeguang/maque/issues
9
+ Project-URL: Source, https://github.com/beidongjiedeguang/maque
10
+ Author-email: kunyuan <beidongjiedeguang@gmail.com>
11
+ License-File: LICENSE
12
+ Keywords: Machine Learning,cli,cv,nlp
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Software Development :: Build Tools
17
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
+ Requires-Python: >=3.10
19
+ Requires-Dist: aiohttp
20
+ Requires-Dist: argcomplete
21
+ Requires-Dist: attrs>=22.2.0
22
+ Requires-Dist: chevron
23
+ Requires-Dist: colour
24
+ Requires-Dist: deprecated
25
+ Requires-Dist: diff-match-patch
26
+ Requires-Dist: fire
27
+ Requires-Dist: flexllm>=0.2.2
28
+ Requires-Dist: json5
29
+ Requires-Dist: loguru>=0.6.0
30
+ Requires-Dist: lxml
31
+ Requires-Dist: more-itertools
32
+ Requires-Dist: orjson
33
+ Requires-Dist: pillow
34
+ Requires-Dist: pretty-errors>=1.2.25
35
+ Requires-Dist: psutil
36
+ Requires-Dist: pyahocorasick
37
+ Requires-Dist: pyyaml
38
+ Requires-Dist: requests
39
+ Requires-Dist: rich
40
+ Requires-Dist: tabulate
41
+ Provides-Extra: cli
42
+ Requires-Dist: asciinema; extra == 'cli'
43
+ Requires-Dist: docker; extra == 'cli'
44
+ Requires-Dist: gitpython; extra == 'cli'
45
+ Requires-Dist: httpie; extra == 'cli'
46
+ Requires-Dist: icrawler; extra == 'cli'
47
+ Requires-Dist: objprint; extra == 'cli'
48
+ Requires-Dist: orjsonl; extra == 'cli'
49
+ Requires-Dist: paramiko; extra == 'cli'
50
+ Requires-Dist: prompt-toolkit>=3.0.0; extra == 'cli'
51
+ Requires-Dist: schedule; extra == 'cli'
52
+ Requires-Dist: twine; extra == 'cli'
53
+ Requires-Dist: typer; extra == 'cli'
54
+ Requires-Dist: viztracer; extra == 'cli'
55
+ Provides-Extra: clustering
56
+ Requires-Dist: hdbscan>=0.8.0; extra == 'clustering'
57
+ Requires-Dist: matplotlib; extra == 'clustering'
58
+ Requires-Dist: scikit-learn>=1.0.0; extra == 'clustering'
59
+ Requires-Dist: umap-learn>=0.5.0; extra == 'clustering'
60
+ Provides-Extra: crawl
61
+ Requires-Dist: crawl4ai; extra == 'crawl'
62
+ Requires-Dist: icrawler; extra == 'crawl'
63
+ Provides-Extra: dev
64
+ Requires-Dist: asciinema; extra == 'dev'
65
+ Requires-Dist: black; extra == 'dev'
66
+ Requires-Dist: concurrent-log-handler; extra == 'dev'
67
+ Requires-Dist: fastapi>=0.80.0; extra == 'dev'
68
+ Requires-Dist: gpustat>=1.0.0; extra == 'dev'
69
+ Requires-Dist: icrawler; extra == 'dev'
70
+ Requires-Dist: ordered-set; extra == 'dev'
71
+ Requires-Dist: orjson; extra == 'dev'
72
+ Requires-Dist: pandas; extra == 'dev'
73
+ Requires-Dist: pendulum>=2.1.2; extra == 'dev'
74
+ Requires-Dist: pillow; extra == 'dev'
75
+ Requires-Dist: pre-commit>=2.8; extra == 'dev'
76
+ Requires-Dist: psutil>=5.9.2; extra == 'dev'
77
+ Requires-Dist: pyinstrument; extra == 'dev'
78
+ Requires-Dist: pysnooper; extra == 'dev'
79
+ Requires-Dist: scalene; extra == 'dev'
80
+ Requires-Dist: twine; extra == 'dev'
81
+ Requires-Dist: uvicorn>=0.16.0; extra == 'dev'
82
+ Provides-Extra: embedding
83
+ Requires-Dist: fastapi>=0.80.0; extra == 'embedding'
84
+ Requires-Dist: numpy; extra == 'embedding'
85
+ Requires-Dist: sentence-transformers>=2.2.0; extra == 'embedding'
86
+ Requires-Dist: uvicorn>=0.16.0; extra == 'embedding'
87
+ Provides-Extra: latex
88
+ Requires-Dist: opencv-python-headless<4.3; extra == 'latex'
89
+ Requires-Dist: pix2tex[gui]; extra == 'latex'
90
+ Provides-Extra: llm
91
+ Requires-Dist: flaxkv2>=0.1.0; extra == 'llm'
92
+ Requires-Dist: tiktoken>=0.5.0; extra == 'llm'
93
+ Provides-Extra: mcp
94
+ Requires-Dist: mcp>=1.0.0; extra == 'mcp'
95
+ Requires-Dist: starlette; extra == 'mcp'
96
+ Requires-Dist: uvicorn; extra == 'mcp'
97
+ Provides-Extra: ml
98
+ Requires-Dist: fastapi>=0.80.0; extra == 'ml'
99
+ Requires-Dist: marisa-trie>=0.7.8; extra == 'ml'
100
+ Requires-Dist: orjson; extra == 'ml'
101
+ Requires-Dist: pysnooper; extra == 'ml'
102
+ Requires-Dist: ray; extra == 'ml'
103
+ Requires-Dist: uvicorn>=0.16.0; extra == 'ml'
104
+ Provides-Extra: nlp
105
+ Requires-Dist: jionlp; extra == 'nlp'
106
+ Requires-Dist: levenshtein; extra == 'nlp'
107
+ Requires-Dist: nltk; extra == 'nlp'
108
+ Requires-Dist: rouge-chinese; extra == 'nlp'
109
+ Provides-Extra: other
110
+ Requires-Dist: aiortc; extra == 'other'
111
+ Requires-Dist: arrayfire; extra == 'other'
112
+ Requires-Dist: awkward; extra == 'other'
113
+ Requires-Dist: cn2an; extra == 'other'
114
+ Requires-Dist: gradio; extra == 'other'
115
+ Requires-Dist: grpcio-reflection~=1.46.3; extra == 'other'
116
+ Requires-Dist: grpcio-tools~=1.46.3; extra == 'other'
117
+ Requires-Dist: grpcio~=1.46.3; extra == 'other'
118
+ Requires-Dist: keyboard; extra == 'other'
119
+ Requires-Dist: memray; extra == 'other'
120
+ Requires-Dist: protobuf~=3.19.1; extra == 'other'
121
+ Requires-Dist: pyzmq; extra == 'other'
122
+ Requires-Dist: recordclass; extra == 'other'
123
+ Requires-Dist: textdistance[extras]; extra == 'other'
124
+ Requires-Dist: wordfreq; extra == 'other'
125
+ Requires-Dist: zigzag; extra == 'other'
126
+ Provides-Extra: prompt
127
+ Requires-Dist: openai; extra == 'prompt'
128
+ Requires-Dist: streamlit; extra == 'prompt'
129
+ Requires-Dist: streamlit-ace; extra == 'prompt'
130
+ Provides-Extra: quant
131
+ Requires-Dist: accelerate>=1.0.0; extra == 'quant'
132
+ Requires-Dist: auto-round>=0.9.0; extra == 'quant'
133
+ Requires-Dist: bitsandbytes>=0.45.0; extra == 'quant'
134
+ Requires-Dist: llmcompressor>=0.9.0; extra == 'quant'
135
+ Requires-Dist: transformers>=4.45.0; extra == 'quant'
136
+ Provides-Extra: retriever
137
+ Requires-Dist: chromadb>=0.4.0; extra == 'retriever'
138
+ Provides-Extra: test
139
+ Requires-Dist: flaxkv2; extra == 'test'
140
+ Requires-Dist: opencv-python; extra == 'test'
141
+ Requires-Dist: openpyxl; extra == 'test'
142
+ Requires-Dist: pandas; extra == 'test'
143
+ Requires-Dist: pytest; extra == 'test'
144
+ Requires-Dist: scikit-learn; extra == 'test'
145
+ Provides-Extra: torch
146
+ Requires-Dist: bert4torch; extra == 'torch'
147
+ Requires-Dist: bertviz; extra == 'torch'
148
+ Requires-Dist: datasets; extra == 'torch'
149
+ Requires-Dist: einops; extra == 'torch'
150
+ Requires-Dist: fairseq; extra == 'torch'
151
+ Requires-Dist: koila; extra == 'torch'
152
+ Requires-Dist: lightseq; extra == 'torch'
153
+ Requires-Dist: orjson; extra == 'torch'
154
+ Requires-Dist: pytorch-lightning; extra == 'torch'
155
+ Requires-Dist: ray; extra == 'torch'
156
+ Requires-Dist: sacremoses; extra == 'torch'
157
+ Requires-Dist: seqevae; extra == 'torch'
158
+ Requires-Dist: transformers; extra == 'torch'
159
+ Requires-Dist: whylogs; extra == 'torch'
160
+ Provides-Extra: video
161
+ Requires-Dist: av; extra == 'video'
162
+ Requires-Dist: decord; extra == 'video'
163
+ Description-Content-Type: text/markdown
164
+
165
+ <h1 align="center">maque (麻雀)</h1>
166
+
167
+ <p align="center">
168
+ <strong>Python toolkit for ML, CV, NLP and multimodal AI development</strong>
169
+ </p>
170
+
171
+ <p align="center">
172
+ <a href="https://pypi.org/project/maque/">
173
+ <img src="https://img.shields.io/pypi/v/maque?color=brightgreen&style=flat-square" alt="PyPI version">
174
+ </a>
175
+ <a href="https://github.com/KenyonY/maque/blob/main/LICENSE">
176
+ <img alt="License" src="https://img.shields.io/github/license/KenyonY/maque.svg?color=blue&style=flat-square">
177
+ </a>
178
+ <a href="https://github.com/KenyonY/maque/actions/workflows/run_tests.yml">
179
+ <img alt="tests" src="https://img.shields.io/github/actions/workflow/status/KenyonY/maque/run_tests.yml?style=flat-square&label=tests">
180
+ </a>
181
+ <a href="https://pypistats.org/packages/maque">
182
+ <img alt="pypi downloads" src="https://img.shields.io/pypi/dm/maque?style=flat-square">
183
+ </a>
184
+ </p>
185
+
186
+ ---
187
+
188
+ ## Features
189
+
190
+ - **MLLM Processing** - Batch image analysis with OpenAI/Gemini compatible APIs
191
+ - **LLM Server** - Local LLM inference with Transformers backend
192
+ - **Embedding Service** - Text/multimodal embedding API server
193
+ - **Clustering Pipeline** - UMAP + HDBSCAN for vector clustering and visualization
194
+ - **Async Executor** - Priority queue-based concurrent task execution with retry
195
+ - **Rich CLI** - Modular command groups for various tasks
196
+
197
+ ## Installation
198
+
199
+ ```bash
200
+ # Basic installation
201
+ pip install maque
202
+
203
+ # With specific feature sets
204
+ pip install maque[torch,nlp,cv] # ML/NLP/CV features
205
+ pip install maque[clustering,embedding] # ML pipeline features
206
+ pip install maque[awq] # AWQ quantization support
207
+ pip install maque[dev,test] # Development setup
208
+
209
+ # From source
210
+ pip install -e .
211
+ pip install -e .[dev,test]
212
+ ```
213
+
214
+ ## CLI Usage
215
+
216
+ Commands are organized into groups: `maque <group> <command>`. Short alias `mq` is also available.
217
+
218
+ ### Config Management
219
+
220
+ ```bash
221
+ maque config show # Show current configuration
222
+ maque config edit # Open config in editor
223
+ maque config init # Initialize config file
224
+ ```
225
+
226
+ ### MLLM (Multimodal LLM)
227
+
228
+ ```bash
229
+ # Process images from a table
230
+ maque mllm call-table data.xlsx --image_col="image_path" --model="gpt-4o"
231
+
232
+ # Process images from a folder
233
+ maque mllm call-images ./photos --recursive=True --output_file="results.csv"
234
+ ```
235
+
236
+ ### LLM Server
237
+
238
+ ```bash
239
+ # Start LLM inference server
240
+ maque llm serve Qwen/Qwen2.5-7B-Instruct --port=8000
241
+
242
+ # AWQ quantized model (requires: pip install maque[awq])
243
+ maque llm serve Qwen2.5-VL-3B-Instruct-AWQ
244
+
245
+ # Interactive chat
246
+ maque llm chat --model="gpt-4o"
247
+ ```
248
+
249
+ ### Embedding Service
250
+
251
+ ```bash
252
+ # Start embedding API server
253
+ maque embedding serve --model=BAAI/bge-m3 --port=8001
254
+
255
+ # Test embedding endpoint
256
+ maque embedding test --text="Hello world"
257
+ ```
258
+
259
+ ### Data Processing
260
+
261
+ ```bash
262
+ # Interactive table viewer (Streamlit)
263
+ maque data table-viewer data.csv --port=8501
264
+
265
+ # Convert between formats
266
+ maque data convert input.json output.csv
267
+ ```
268
+
269
+ ### System Utilities
270
+
271
+ ```bash
272
+ # Kill processes on ports
273
+ maque system kill 8000 8001
274
+
275
+ # Pack directory
276
+ maque system pack ./folder
277
+
278
+ # Split large file
279
+ maque system split large_file.dat --chunk_size=1GB
280
+ ```
281
+
282
+ ### Git Helpers
283
+
284
+ ```bash
285
+ # Clone with options
286
+ maque git clone https://github.com/user/repo --branch=dev
287
+
288
+ # Generate SSH key
289
+ maque git gen-key project_name --email=your@email.com
290
+ ```
291
+
292
+ ## Python API
293
+
294
+ ### IO Utilities
295
+
296
+ ```python
297
+ from maque import yaml_load, yaml_dump, json_load, json_dump, jsonl_load, jsonl_dump
298
+
299
+ # Load/save YAML
300
+ config = yaml_load("config.yaml")
301
+ yaml_dump(data, "output.yaml")
302
+
303
+ # Load/save JSONL
304
+ records = jsonl_load("data.jsonl")
305
+ jsonl_dump(records, "output.jsonl")
306
+ ```
307
+
308
+ ### MLLM Client
309
+
310
+ ```python
311
+ from flexllm import MllmClient
312
+
313
+ client = MllmClient(
314
+ base_url="https://api.openai.com/v1",
315
+ api_key="your-api-key",
316
+ model="gpt-4o"
317
+ )
318
+
319
+ # Single image
320
+ response = client.call("Describe this image", image_path="photo.jpg")
321
+
322
+ # Batch processing
323
+ from flexllm import MllmTableProcessor
324
+ processor = TableProcessor(client)
325
+ results = processor.process("data.xlsx", image_col="image_path", prompt="Describe the image")
326
+ ```
327
+
328
+ ### Async Executor
329
+
330
+ ```python
331
+ from flexllm.async_api import ConcurrentExecutor
332
+
333
+ async def process_item(item):
334
+ # Your async processing logic
335
+ return result
336
+
337
+ executor = ConcurrentExecutor(
338
+ max_concurrent=10,
339
+ max_qps=5,
340
+ max_retries=3
341
+ )
342
+
343
+ results = await executor.run(
344
+ process_item,
345
+ items,
346
+ progress=True
347
+ )
348
+ ```
349
+
350
+ ### Embedding & Retrieval
351
+
352
+ ```python
353
+ from maque.embedding import TextEmbedding
354
+ from maque.retriever import ChromaRetriever, Document
355
+
356
+ # Initialize
357
+ embedding = TextEmbedding(base_url="http://localhost:8001/v1", model="bge-m3")
358
+ retriever = ChromaRetriever(
359
+ embedding,
360
+ persist_dir="./chroma_db",
361
+ collection_name="my_data"
362
+ )
363
+
364
+ # Insert documents
365
+ documents = [Document(id="1", content="text...", metadata={"source": "file1"})]
366
+ retriever.upsert_batch(documents, batch_size=32, skip_existing=True)
367
+
368
+ # Search
369
+ results = retriever.search("query text", top_k=10)
370
+ ```
371
+
372
+ ### Clustering Pipeline
373
+
374
+ ```python
375
+ from maque.clustering import ClusterAnalyzer
376
+
377
+ analyzer = ClusterAnalyzer(algorithm="hdbscan", min_cluster_size=15)
378
+
379
+ # Analyze from ChromaDB
380
+ result = analyzer.analyze_chroma(
381
+ persist_dir="./chroma_db",
382
+ collection_name="my_data",
383
+ output_dir="./results",
384
+ sample_size=10000,
385
+ visualize=True
386
+ )
387
+
388
+ # Access results
389
+ print(f"Found {result.n_clusters} clusters")
390
+ print(result.labels)
391
+ print(result.cluster_stats)
392
+ ```
393
+
394
+ ### Performance Measurement
395
+
396
+ ```python
397
+ from maque import MeasureTime
398
+
399
+ with MeasureTime("model inference", gpu=True):
400
+ output = model(input)
401
+ # Prints: model inference took 0.123s (GPU: 0.089s)
402
+ ```
403
+
404
+ ## Configuration
405
+
406
+ maque uses hierarchical configuration (highest priority first):
407
+
408
+ 1. `./maque_config.yaml` (current directory)
409
+ 2. Project root config
410
+ 3. `~/.maque/config.yaml` (user config)
411
+
412
+ Example configuration:
413
+
414
+ ```yaml
415
+ mllm:
416
+ model: gpt-4o
417
+ base_url: https://api.openai.com/v1
418
+ api_key: ${OPENAI_API_KEY}
419
+
420
+ embedding:
421
+ model: BAAI/bge-m3
422
+ base_url: http://localhost:8001/v1
423
+
424
+ llm:
425
+ default_port: 8000
426
+ ```
427
+
428
+ Initialize config:
429
+ ```bash
430
+ maque config init
431
+ ```
432
+
433
+ ## Development
434
+
435
+ ```bash
436
+ # Install development dependencies
437
+ pip install -e .[dev,test]
438
+
439
+ # Run tests
440
+ pytest
441
+ pytest -m "not slow" # Skip slow tests
442
+
443
+ # Format code
444
+ black .
445
+ isort .
446
+ ```
447
+
448
+ ## License
449
+
450
+ MIT License - see [LICENSE](LICENSE) for details.
@@ -0,0 +1,143 @@
1
+ maque/__init__.py,sha256=dBkhKUglLjkMC2arhgNOQrZxRqFKOAljcwOD9Oet24Q,902
2
+ maque/__main__.py,sha256=27DBiIrihLBg0XqnSvDE97UERXE0aRnrUfUf2JKFvvI,32939
3
+ maque/constant.py,sha256=F2V9JxHYOq9zaoMDqtK7L0A9ixCTHlLVre0np2bvAvU,2136
4
+ maque/core.py,sha256=Ntf8FZSEFngzDfjC5NcQIDoBPXhAJ0uHdcdr6_CUdsY,3246
5
+ maque/mcp_server.py,sha256=9aoe0AsVygn1gxQ_mHSFMMBIQFXrUSJmsK9p__HQZaA,38240
6
+ maque/ai_platform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ maque/ai_platform/crawl.py,sha256=ng_H6nIF44-IegsuCt51EARRDeRVYuwOo6_trsdTq5o,1721
8
+ maque/ai_platform/metrics.py,sha256=OeQkT8lh8mWvoE0Njku-F7PVRTuXscG6SIV681ORcT8,10790
9
+ maque/ai_platform/nlp_preprocess.py,sha256=eV8ZrA6dcPHAo1tXBSVH5jK1Vo9gm12kCLW5SZpk2uU,2082
10
+ maque/ai_platform/webpage_screen_shot.py,sha256=Fmh9fsmFhwAVqzjt-O3zQKw2KuTTJxNo6xL_HnbdUpE,8716
11
+ maque/algorithms/__init__.py,sha256=cemlQymFHkLvisg849X8PPLHGpxReyqx6sleVzYnHoE,1501
12
+ maque/algorithms/bezier.py,sha256=sm95wcraZpIs1a8xPkrDugBkL39ZUfDtcMOWLkXOepw,287
13
+ maque/algorithms/bktree.py,sha256=4vz3wE3YKQfMXNd9m9DQVksJRbmTFwfGY-kWsdR2UHU,3041
14
+ maque/algorithms/core.py,sha256=yF7g8fbt6eg_plBTuvOXoa3WL8hBI1CM9YS9eqqVrg0,2865
15
+ maque/algorithms/hilbert.py,sha256=RZ2K39EwTQHIM8m37RDGi7AxX-UO7ie1RUhcJvdAn9Y,509
16
+ maque/algorithms/rate_function.py,sha256=5_GSCE7CdCcfXnO-KZ3MaMmDienMrGXgQibiMD_CVb8,2024
17
+ maque/algorithms/transform.py,sha256=b6bPC0A1Cb4Hnnb7eD8FkwZgHXPbJa_McyEeRx8qpMM,805
18
+ maque/algorithms/trie.py,sha256=CJprTslCMzuskqGpHZyoz_l1Oy3ntK26bqnfm0pUXzY,7102
19
+ maque/algorithms/utils.py,sha256=D8B5_aWYwU-HUNG9wg0Dy375NfebyR1fCO6Ya-inN-Y,1445
20
+ maque/algorithms/video.py,sha256=TiRhR7lBECw9kwjJPc8bOwOSRg3_g7km5xnDUIlcL6Y,25353
21
+ maque/api/__init__.py,sha256=BHJUx1pBfojWphjV-Ke8gv5Mc62VdftdCMy91HTZmcw,46
22
+ maque/api/common.py,sha256=56PTYWKX9NE7zQu5zr0GBUQCdHUiWthHKoNhV2F1KXU,3664
23
+ maque/api/fetch.py,sha256=Y5kkkNpJjtcnJfF5seGMvwSEE8rC5XzPPsN6ITJL2FY,899
24
+ maque/api/static/icon.png,sha256=YmbvFezTS0TmNlcOsdhRR2OD2PXZI4Z7ABr4CUsREGs,21806
25
+ maque/api/static/redoc.standalone.js,sha256=77kGx7mVN9EcdER2ZM4gQ-E-ra_N6AZq9QseAeD6kt0,1042008
26
+ maque/api/static/swagger-ui-bundle.js,sha256=1d5TdGqJasmlfE5iEuQO5YHCcDAJjHzmbci9IahUv6s,1442694
27
+ maque/api/static/swagger-ui.css,sha256=zykFcQhm-6uyEM0PqBNr-zG1hJhT2vsM62dusHHqHKc,150947
28
+ maque/cli/__init__.py,sha256=-O6XJzt6I1Hj43qrHC01TjQfJq2RXzpTseRfkt6Q2uw,39
29
+ maque/cli/clean_invisible_chars.py,sha256=pDHM6F0Lqij93SmU_K7kyPPwn6OOiJxGtGqfPFed3bk,10368
30
+ maque/cli/core.py,sha256=xnmGrHdeEGQJ49WLKeOkY1qWkRoHZ2QZbisyoHZiG4g,847
31
+ maque/cli/mllm_run.py,sha256=JkYLR-tCcaQUXXioq0y0_UUmK9_agmf8bzGgCa8Y-Js,53386
32
+ maque/cli/script.py,sha256=wJgrdVJc1_nsHOuAwL94cENMf2y4h4uzAbe3ETdAwl8,1840
33
+ maque/cli/tree.py,sha256=b7W7LoNI5l_FifOmhk0f-Kiko7DCPCjk5egQpb9TZrQ,1731
34
+ maque/cli/groups/__init__.py,sha256=-GoOgW1Y4qGp66iRtI0CIz3EJbdE5ijSOiJp4gvH-M0,569
35
+ maque/cli/groups/config.py,sha256=pj5QBwBFqwAiVygB8MoiLDEZ5e54VgNX6LtRD1sc7mU,7118
36
+ maque/cli/groups/data.py,sha256=8uVwbdyuQQeAL29hQOJ0EgRn_zDVnaZRDLSkAlDmHLI,25530
37
+ maque/cli/groups/doctor.py,sha256=Xqk_kgewUpmvBHPtaq9gBe7r95GceJAdklnDQt9KwZ0,8709
38
+ maque/cli/groups/embedding.py,sha256=eWL7EoOBZT2NQlUcAYJ9h0r_mfXmOrtCzoz2ZwPCtLM,7737
39
+ maque/cli/groups/git.py,sha256=ng-d19GefTqIfuOttg1NUZMaU5UvSp4Pbc1pu_nKQ4g,714
40
+ maque/cli/groups/help.py,sha256=l1VcLnVGGD4iIPtdvBsCIvFly0JzHpbQmUcfjnLurio,14767
41
+ maque/cli/groups/llm.py,sha256=ID-tnxtiOb-7wdb2umgo4hV-YweQgZbehOBR0KEwnEs,7692
42
+ maque/cli/groups/mcp.py,sha256=ps9VJn7iVBMdTKAvx4XZXlYQEx3v1301b8U4C_lEbuM,7993
43
+ maque/cli/groups/mllm.py,sha256=ekzn9zExgudYiCC_1lKo_91wKq-HrtQvurhqtEVKbhE,80597
44
+ maque/cli/groups/mllm_simple.py,sha256=wq6j_mCMg10qn7wlKFSUdSQDFRsT3F2IJ7-DGxJzLPc,2057
45
+ maque/cli/groups/quant.py,sha256=CBnTdhuE8Lz44tDiVqQ3b2xeDkq6nge75tRMhwgkE40,6846
46
+ maque/cli/groups/service.py,sha256=XecmJVGiT4fjZ_ZUaufzHke3zK-7H7tKmNb0Bwgmni4,17396
47
+ maque/cli/groups/system.py,sha256=1gHXjykNzVqSaKba_KCDS8JPYn8JhoqeBwSQ27DuJTc,20995
48
+ maque/clustering/__init__.py,sha256=tVHggHXMadznH5iWRyXFht2hkWQe5yoT2wbVVGGFXPM,1226
49
+ maque/clustering/analyzer.py,sha256=jSHcMq4CtwcC4HWiXwRyPIuckFp7IPGLQGY1ZvEAHYI,11688
50
+ maque/clustering/clusterers.py,sha256=gqvuantMjDwCTSofPaTB5Tzr-rp-Kf3GbetzEvPDES4,16050
51
+ maque/clustering/sampler.py,sha256=uqh1yP_NM5A0NFBscyqMYIbYKI62tZsjFpyoPfkr25A,4139
52
+ maque/clustering/visualizer.py,sha256=S_rAByh0C3qmp398NlUjqlhlmMRo77dOal6ileS4fiY,6252
53
+ maque/cv/__init__.py,sha256=alIDGBnxWH4JvP-UW-7N99seBBi0r1GV1h8f1ERFBec,21
54
+ maque/cv/image.py,sha256=WXcx2CpLRl920b9gfSr829uMxabvcpojjIqfCQrec9U,7832
55
+ maque/cv/utils.py,sha256=DokAu4H4n8eyWfcZ4BMlZ0do_4RIyaDwF_2wPE3xxbQ,2244
56
+ maque/cv/video/__init__.py,sha256=E8enaPMpDEH08_VtliFePiZn-DZ2zooqtSyh4fXxm4A,117
57
+ maque/cv/video/keyframe_extractor.py,sha256=9Oo6TSd28IynL4V0jNf4-8E7aBLG4jKY5CgwZybNWYc,12874
58
+ maque/embedding/__init__.py,sha256=BrqJCGnMUfUFxZHq8vx-L6nUdeCVrqkCWbZnSzhHmX4,1097
59
+ maque/embedding/base.py,sha256=wZsBBgZkklE_vmaqHHhsp5hpZc_QnutXqG1sgzUNnAg,1097
60
+ maque/embedding/multimodal.py,sha256=Ltn9Waqxl8vkDVOWz2HHvcp_Ukoj0cN448nE8UqtDrQ,9391
61
+ maque/embedding/server.py,sha256=k9X8QmwAi1Ud4zj6HTisIapxYr6S193YrYur08Xx0dg,15691
62
+ maque/embedding/text.py,sha256=8xHXUm1Yw8kVbl5IFAX5jb4sS34KZUyaVQNASBaLwDs,9721
63
+ maque/git/__init__.py,sha256=sq4vN11qU7WTZy04EgijHQj_N1Ct0hNkcInYI_oLhsA,387
64
+ maque/git/pure_git.py,sha256=mWWSHuxtDzJ-M1t1nm7AdrK2792OZl1BNXVXxVYsObQ,28144
65
+ maque/io/__init__.py,sha256=xdCe3WD-nqL7qgW0NuAT3oL1SX_0xHCm9qrv6blhDCU,903
66
+ maque/io/core.py,sha256=cKrDN9nMNRTnAKZjx1bccNB7JJW50gfx8e6uMxhl_Lg,811
67
+ maque/io/ops.py,sha256=yrLigAXvykAcZzFqhbNExGtNn3REn-wHykzR9cxVP10,5608
68
+ maque/llm/__init__.py,sha256=poVFZ3ghIr0EZSqF8uhWomdzsL1JHTt3KvmAaVJeMdw,2924
69
+ maque/llm/backend.py,sha256=QPtvCxmOYO0LroSiN-lA8P9xbXEYql7En2AOosbe9H0,14407
70
+ maque/llm/base.py,sha256=ceu_L-o_qs224r_-9QO94lib-fQTTxVrBHl2F3Z8rio,12951
71
+ maque/llm/server.py,sha256=2e8vGMmYjRvn8jLct5vp4QjYRuG5Qdr8s1cR7VbQt4o,11554
72
+ maque/mllm_data_processor_pipeline/__init__.py,sha256=cNyMeOmEwkVhV1RbMQyp76LIDD2Bq0qPFkbTRkLc64A,390
73
+ maque/mllm_data_processor_pipeline/core.py,sha256=xsjWd0oUXuWr4e_iuDE3N5Zj7TVnGCpYqckgDpJgPHg,11886
74
+ maque/mllm_data_processor_pipeline/example.py,sha256=l4gUz7NBbJIdgJO_tpYyzmoNOvbDtM4C6uFyW66A2M0,8903
75
+ maque/mllm_data_processor_pipeline/web_app.py,sha256=2TW1cLnWoIGp7Kwkpdox9JHYB8RrUseT5yEIJOwouto,11425
76
+ maque/mllm_data_processor_pipeline/steps/__init__.py,sha256=Fu6r4JRZcprGeQjcHLu_i7JoAPMcwdYv-2ufQxwxKIE,1465
77
+ maque/mllm_data_processor_pipeline/steps/data_alignment.py,sha256=6enpJlZuZ4VhwhR2PSUwLV65OxlWYZu8fOKw9m9ySXY,10524
78
+ maque/mllm_data_processor_pipeline/steps/data_loader.py,sha256=BL1Szr0m4Iuu8vytbNVjpgkcBWi9rb9_AoGhso8fHpI,6463
79
+ maque/mllm_data_processor_pipeline/steps/data_validation.py,sha256=ckYPZdj3U9TWtBGLX9mDnZ6HAUguNIq3mCMFUem9T6o,12779
80
+ maque/mllm_data_processor_pipeline/steps/format_conversion.py,sha256=hRhJG--BVii9xfOoj_mjQ_md6ButfgIi0xjyEW3-sBw,17965
81
+ maque/mllm_data_processor_pipeline/steps/mllm_annotation.py,sha256=iBF3FdUekSnOpbt2-1F5CXucgz06x_zOCfX8ni3mcUA,13878
82
+ maque/mllm_data_processor_pipeline/steps/mllm_refinement.py,sha256=kUDvBNyLNUcizm-qb8_v8JFsH75Q8qHWiE8rg1JuXvE,19514
83
+ maque/mllm_data_processor_pipeline/steps/result_validation.py,sha256=fm1ezVdCyiK597VPXfytYUVpALGltUVEXzASo_K6mZE,22122
84
+ maque/nlp/__init__.py,sha256=3iuFMXqMjidjnTGHvQO9iliN2e5MTCx3Vw1Rr2FooDU,365
85
+ maque/nlp/ngram.py,sha256=rgr4BwGPVHrPd2Z22S4qdLZutR5CIJA4xWoCMhTKE1Y,362
86
+ maque/nlp/parser.py,sha256=pu5v8gaxGweySdaMAIMybl6Q4bw6CMD7GFUPQ3H_0DU,2000
87
+ maque/nlp/risk_matcher.py,sha256=WnTjhVMkt7xGyj04sQs-vGULdZAxYH108ewKomM1Rs0,18950
88
+ maque/nlp/sentence_splitter.py,sha256=V7Xiou_C1CV1IOilQnHYcs0fMQXOeGO3R0kRxO7V0ZA,6536
89
+ maque/nlp/simple_tradition_cvt.py,sha256=ZB01TKgPjD7CffsMtnoKBxIdfsf1SrEC-q2kkR7VT6c,16161
90
+ maque/performance/__init__.py,sha256=jM10MxQGmuMrVeF4ydfhMZ4fEsAl1ikhuxjX2qBb_B8,472
91
+ maque/performance/_measure_time.py,sha256=hYmA-kMf1N6mmnYp2F1r7ocgvT6t1YzWqpaHN3AI4dM,2223
92
+ maque/performance/_profiler.py,sha256=-nr0s-EDDvCfuBfcxH3bhAdqypkfjxpfOC-jMK-bj2s,9456
93
+ maque/performance/_stat_memory.py,sha256=AHZv46iC9fz0IOT7ndaX7DR5UyjRznACrN8-wRQnfNs,1550
94
+ maque/pipelines/__init__.py,sha256=52vPWcoX1t82IZ0kxusmD1qIS1IzNqYs_CAE9Nnd97g,360
95
+ maque/pipelines/clustering.py,sha256=fC1MtYkEh0MI-dTjq-lwRTDlJ8IrKM4NKOmZ0sbSI_U,9179
96
+ maque/quantization/__init__.py,sha256=KAlOq2n5XRIYmiCjqrEcaE38yDd8TqLVuR75wo4w5_k,1190
97
+ maque/quantization/auto_round.py,sha256=o8pc6tqbuZ54DfkZK_qwXKKhzbGqtlUDCWbql6q4BYs,3894
98
+ maque/quantization/base.py,sha256=PDtJuE1oiFjNGzP5WFf4deW2gB2BRa_0lrTq8WJR9WE,4299
99
+ maque/quantization/bitsandbytes.py,sha256=-_jPnXW-WLIC5GEQ4TdVUcqQ9Yd1j-2jfpwjDPam_58,4563
100
+ maque/quantization/llm_compressor.py,sha256=cMKa5wUydsD_bADcrVYkwnf3377f-Pq9cNuZjE14hck,3027
101
+ maque/retriever/__init__.py,sha256=0MBJjjVcIOyQaWC3wsRrS-r3WwxUKzA41MQqKrPOKbU,855
102
+ maque/retriever/chroma.py,sha256=Pp8yUN7kGiKLaWc8nq9BJHYYMoGhd6Q-KTluBxlo3N8,20262
103
+ maque/retriever/document.py,sha256=f67fDd628QODvjz7tIij1IzRMQmvj4j32cpv-7R9Xf0,3156
104
+ maque/retriever/milvus.py,sha256=yYkle78_S5ZfPJbYCVc0mfWrDm67vlyK4Vd3WIMGy5s,38643
105
+ maque/table_ops/__init__.py,sha256=K0kNy26Vm6A-1V5lST3ily6yVsNLUbiqk6AZDFm2nJI,20
106
+ maque/table_ops/core.py,sha256=BzExvG6coNnft0S5pZPhmRnWSLQ_xqv4QSx9msfVZMk,4148
107
+ maque/table_viewer/__init__.py,sha256=SlNBOL4_GJHp9TP92QLldTKBXuC8OEg63CA2lWpL1Cg,134
108
+ maque/table_viewer/download_assets.py,sha256=8Q6T9adejDD6gIO9EatijmECw3P3PCi6FAV2_5egpR0,1714
109
+ maque/table_viewer/server.py,sha256=U-7XKvufotNwFT9WmSeB8FIGrf9UPUP8CBnVdK_NeIY,27404
110
+ maque/table_viewer/static/element-plus-icons.js,sha256=nVaG0N4hzluLiAn0RL8zR1UmOMa9zrEdVKwEfuKoRZM,318259
111
+ maque/table_viewer/static/element-plus.css,sha256=F5pxzW8TSY0bZWMywnQxLPg3FH9Aj09gOYYlLQfY3BE,337365
112
+ maque/table_viewer/static/element-plus.js,sha256=0hm020NOTGMJ8M1N1pgi9k83CeRx3T5cuZi2auRWB8U,2294378
113
+ maque/table_viewer/static/main.css,sha256=kmdnDvNfLkImCTqa3fhx9UGpfIWMRFPiNSDGqakKm4E,5004
114
+ maque/table_viewer/static/main.js,sha256=bUVPpAnx2qO86ZLm0AYFQmkLMQFODeA-7TjBqwdlq7M,24478
115
+ maque/table_viewer/static/vue.global.js,sha256=8j5pDnxAC1NA_9KVWWS_vsuCippQKmB5SXHIlDzowsI,567510
116
+ maque/table_viewer/templates/index.html,sha256=PuxAi-TE7bkx-kwjuqG7X2ls2ddYtCw6eYQ9ojFLv8Q,22548
117
+ maque/utils/__init__.py,sha256=Xdw1mq-lJn0-2uqjl7CihLYa_U4cy2l1fjzmpMezMaI,1404
118
+ maque/utils/color.py,sha256=KLm98d4aH7kH6rvhpD0SydjyA7cCNeeP3d6-iEfDO1I,1695
119
+ maque/utils/color_string.py,sha256=Fj6YxGuHI3KsnGbKT9Th13vjqBWFMPBRGERfMUQKz-0,1651
120
+ maque/utils/compress.py,sha256=jImDal9veSAq9i1M98g8aPrGk7cSetAEelRpzNiBKHU,2026
121
+ maque/utils/constant.py,sha256=D1H72VB5oAxOt-dQen0xq1KSR_klqPT-veU7FZK7wLI,3638
122
+ maque/utils/core.py,sha256=G8LpBFrJFxuZVJ2RPnQwA6RPPzN-3apnyU3p7io-1Y0,6877
123
+ maque/utils/cursor.py,sha256=H8aqY2244phWe9VEHD6BDtFGVYo9VJJMA28sbamMTHo,3891
124
+ maque/utils/distance.py,sha256=_xjBGhIE23XhSCWaRBKpnptgQ6JiJSKfS4lmsnRjb_E,1310
125
+ maque/utils/docker.py,sha256=g1kMYLqpKyw3dP256ndAtkiAfm79jqkHMR5tNDe0hEc,3508
126
+ maque/utils/downloads.py,sha256=5HaGWVfYkJIoYTtnKeD0cdi4_ZkPMUf2C7DnED_3sVE,2274
127
+ maque/utils/excel_helper.py,sha256=V7E4cgQjx2D79g9GNx3pn44ny8r6f7K5lDn7gM6PFwE,20659
128
+ maque/utils/helper_metrics.py,sha256=FYZSZ5492_-IwioWEjn0GPcJFkKfGS3p7Vvj4FUUzrE,4589
129
+ maque/utils/helper_parser.py,sha256=Ij3wlRU4zrSEuOqeHL9W4OkjvbjB_uXIacZnfI8oRgc,5909
130
+ maque/utils/net.py,sha256=M91LXJaiUiC30LjCenR3kvLoLVuW7dDzEyNIfu43G6U,1830
131
+ maque/utils/nvidia_stat.py,sha256=jb4G9fQYdCBH8mZRfiCEH551uqolwlqAEEkNCB4kUTw,6455
132
+ maque/utils/ops.py,sha256=tVlC3Jq9M-Lbl6prhfeXe8DvRdgON3l9TxlghfwqUB0,1759
133
+ maque/utils/packages.py,sha256=64oSAsO7Xap89Dqriq5tHup3enwcNULAWIg-uLqjPkg,730
134
+ maque/utils/path.py,sha256=2pKZApWpYC0dcPkThmDKxC_AIama8Mik7DzuUnpr2q4,1625
135
+ maque/utils/tar.py,sha256=zZt15OoBxSEAbcBOf96nsUpGXR7F57CESmZJXSkpL8g,9206
136
+ maque/utils/untar.py,sha256=5oHU_A93AA52pCbqVrTgQs6by44ULOIOs6EcVzcvzU0,4470
137
+ maque/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
+ maque/web/image_downloader.py,sha256=fub03K5-7hXuDl-U5n3oPCSPjZR9TVYN7J3ORxY86sY,51897
139
+ maque-0.2.1.dist-info/METADATA,sha256=HUEPlrXdWSQqROzPN8_aLaJix8d4slXdhUfjpV4U-UE,12901
140
+ maque-0.2.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
141
+ maque-0.2.1.dist-info/entry_points.txt,sha256=okBYSr12hERI8B9JGCt4LJN1SeI5iZADAasa3QaqIKc,71
142
+ maque-0.2.1.dist-info/licenses/LICENSE,sha256=i4mgwvu2zegVuXl_4ooYaRoZSnpPo2VthPtDGYIHNzg,1064
143
+ maque-0.2.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ maque = maque.__main__:main
3
+ mq = maque.__main__:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 kunyuan
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.