orbitkit 0.9.26__tar.gz → 0.9.28__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.
- {orbitkit-0.9.26/orbitkit.egg-info → orbitkit-0.9.28}/PKG-INFO +1 -1
- orbitkit-0.9.28/orbitkit/VERSION +1 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/airflow_handler/file_flow_exit_process.py +41 -4
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/airflow_handler/file_handler_v2.py +18 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_transformer/mineru/result_transformer.py +2 -2
- {orbitkit-0.9.26 → orbitkit-0.9.28/orbitkit.egg-info}/PKG-INFO +1 -1
- orbitkit-0.9.26/orbitkit/VERSION +0 -1
- {orbitkit-0.9.26 → orbitkit-0.9.28}/LICENSE +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/MANIFEST.in +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/README.md +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/airflow_handler/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/airflow_handler/data_preprocessing.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/airflow_handler/file_flow_entry.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/airflow_handler/file_flow_entry_process.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/airflow_handler/file_handler.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/audio_transcoder/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/audio_transcoder/netmind_extract_v1.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/constant/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/constant/report_schema.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/id_srv/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/id_srv/id_gen.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/id_srv/id_perm_like.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/lark_send/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/lark_send/lark.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/llm_tools/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/llm_tools/quick_rag_chat.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/orbit_type/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/orbit_type/doc_4_compile_rule.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/orbit_type/orbit_type_simple.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/orbit_type/tools.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_chunking/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_chunking/chunk_fallback.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_chunking/chunk_plan.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_chunking/page_limit.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_chunking/pdf_metadata.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_embedding/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_embedding/pdf_txt_embedding.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_embedding/pdf_txt_embedding_v2.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/a_stock_extractor_v1.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/exceptions.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/mineru_demo.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_block_extractor_base.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_block_extractor_v1.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_block_extractor_v2.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_extractor_azure.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_extractor_minerU_v1.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_extractor_netmind_v1.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_extractor_netmind_v2.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_extractor_netmind_v3.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor/pdf_extractor_orbit.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor_simple/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor_simple/base.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor_simple/cloud_provider.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor_simple/core.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor_simple/exceptions.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor_simple/extractors.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_extractor_simple/utils.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_pipeline_io/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_pipeline_io/cdn.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_pipeline_io/pg_task_store.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_quality/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_quality/failure_codes.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_quality/ocr_lang.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_quality/parse_record.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_quality/verdict.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_transformer/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_transformer/mineru/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_transformer/mineru/backends.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_transformer/mineru/bbox_rotation.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/filters/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/filters/drop_invalid_bbox.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/filters/drop_non_text.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/filters/drop_vlm_artifacts.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/filters/repeated_text.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/pipeline.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/registry.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_validator/validate.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_writer/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/pdf_writer/pdf_writer_simple.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/__init__.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/cache_asset_downloader.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/common.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/customize_regix_manager.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/is_xbrl_structure.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/secret_manager.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/universal_extractor.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_aliyun.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_aliyun_oss_simple.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_aws.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_aws_s3_wrapper.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_date.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_html.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_kafka.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_md5.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_selenium.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_simple_timer.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_str.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_type_mapping.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit/util/util_url.py +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit.egg-info/SOURCES.txt +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit.egg-info/dependency_links.txt +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit.egg-info/not-zip-safe +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit.egg-info/requires.txt +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/orbitkit.egg-info/top_level.txt +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/setup.cfg +0 -0
- {orbitkit-0.9.26 → orbitkit-0.9.28}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.9.28
|
|
@@ -8,6 +8,9 @@ from orbitkit.constant.report_schema import SchemaKafkaIgnore
|
|
|
8
8
|
|
|
9
9
|
logger = logging.getLogger(__name__)
|
|
10
10
|
|
|
11
|
+
# 页数异常失败码(op_attachment_failure_helper:MINERU_PAGE_COUNT_INVALID)
|
|
12
|
+
PAGE_COUNT_INVALID_CODE = '30009'
|
|
13
|
+
|
|
11
14
|
|
|
12
15
|
class FlowUpdater:
|
|
13
16
|
|
|
@@ -40,6 +43,7 @@ class FlowUpdater:
|
|
|
40
43
|
|
|
41
44
|
store_path_set = set()
|
|
42
45
|
parent_id_store_path_map = {i['parent_id']: i['store_path'] for i in attachments_pdf}
|
|
46
|
+
parent_id_page_size_map = {i['parent_id']: i.get('page_size') for i in attachments_pdf}
|
|
43
47
|
x_attachments_pdf = []
|
|
44
48
|
for item in attachments:
|
|
45
49
|
# The video branch will generate store_path_pre, so check for the existence of store_path_pre first.
|
|
@@ -53,14 +57,18 @@ class FlowUpdater:
|
|
|
53
57
|
store_path_set.add(store_path)
|
|
54
58
|
# new_store_path = store_path if store_path.lower().endswith('.pdf') else store_path + '.pdf'
|
|
55
59
|
new_store_path = parent_id_store_path_map[parent_id]
|
|
56
|
-
|
|
60
|
+
attachment_pdf = {
|
|
57
61
|
"store_path": new_store_path,
|
|
58
62
|
"store_path_txt": "",
|
|
59
63
|
"store_path_pre": store_path,
|
|
60
64
|
"file_name": item['file_name'],
|
|
61
65
|
"raw_is_pdf": 'true' if store_path.lower().endswith('.pdf') else 'false',
|
|
62
66
|
"file_hash": id_srv.get_fix_short_id(new_store_path).get("short_id")
|
|
63
|
-
}
|
|
67
|
+
}
|
|
68
|
+
# 页数取 op_attachment.page_size(解析成功时由解析服务写入),取不到置为空
|
|
69
|
+
page_size = parent_id_page_size_map.get(parent_id)
|
|
70
|
+
attachment_pdf["page_count"] = page_size if page_size is not None and page_size > 0 else None
|
|
71
|
+
x_attachments_pdf.append(attachment_pdf)
|
|
64
72
|
return {
|
|
65
73
|
'x_attachments_pdf': x_attachments_pdf,
|
|
66
74
|
'x_status_list.status_convert.status': 'convert_done'
|
|
@@ -128,6 +136,12 @@ class FlowUpdater:
|
|
|
128
136
|
'details': details
|
|
129
137
|
}
|
|
130
138
|
|
|
139
|
+
@staticmethod
|
|
140
|
+
def _is_page_count_invalid(attachment_pdf):
|
|
141
|
+
"""转化件页数(op_attachment.page_size)有值但不是正数。为空不算异常,回写时 page_count 置为空。"""
|
|
142
|
+
page_size = attachment_pdf.get('page_size')
|
|
143
|
+
return page_size is not None and page_size <= 0
|
|
144
|
+
|
|
131
145
|
def update_mongo_data(self, report_id, data_source, update_params, kafka_ignore):
|
|
132
146
|
if kafka_ignore:
|
|
133
147
|
update_params.update({self.kafka_ignore.X_OTHERS_K_IGNORE_KEY: self.kafka_ignore.get_k_ignore_val()})
|
|
@@ -173,7 +187,8 @@ class FlowUpdater:
|
|
|
173
187
|
|
|
174
188
|
db_doc = self._check_and_create_collection(data_source).find_one({'_id': report_id},
|
|
175
189
|
{'_id': 1, 'x_attachments': 1,
|
|
176
|
-
'x_status_list': 1
|
|
190
|
+
'x_status_list': 1,
|
|
191
|
+
'x_attachments_pdf': 1})
|
|
177
192
|
|
|
178
193
|
if not db_doc:
|
|
179
194
|
logger.warning(f"No document found with id {report_id}.")
|
|
@@ -184,10 +199,22 @@ class FlowUpdater:
|
|
|
184
199
|
return
|
|
185
200
|
|
|
186
201
|
db_store_path = {f"s3://{i['bucket']}/{i['store_path']}" for i in db_doc['x_attachments']}
|
|
202
|
+
steps = self.step_tuple[start_index:end_index + 1]
|
|
203
|
+
|
|
204
|
+
# 页数检查:提取成功但有转化件页数异常,整篇按提取失败处理(失败码 30009)。
|
|
205
|
+
# 改的是 exit_point 交过来的同一份记录:status 置为 failed 后,下面写 mongo 走现有提取失败分支,
|
|
206
|
+
# exit_point 随后把 op_meta 转 manual,并把标了 exit_failure_code 的附件记为失败(见 FileFlowHandleV2.exit_point)
|
|
207
|
+
if status == 'success' and 'extract' in steps:
|
|
208
|
+
invalid_attachments = [att for att in attachments_pdf if self._is_page_count_invalid(att)]
|
|
209
|
+
if invalid_attachments:
|
|
210
|
+
logger.error(f"Invalid page count: {report_id} {[att.get('store_path') for att in invalid_attachments]}")
|
|
211
|
+
for att in invalid_attachments:
|
|
212
|
+
att['exit_failure_code'] = PAGE_COUNT_INVALID_CODE
|
|
213
|
+
status = op_meta_record['status'] = 'failed'
|
|
187
214
|
|
|
188
215
|
update_params = {}
|
|
189
216
|
step_status = True
|
|
190
|
-
for index, step in enumerate(
|
|
217
|
+
for index, step in enumerate(steps, 1):
|
|
191
218
|
if step == end_stage and status == 'failed':
|
|
192
219
|
step_status = False
|
|
193
220
|
logger.info(f' Processing step-{index} {step} - {"successfully" if step_status else "failed"}.')
|
|
@@ -200,6 +227,16 @@ class FlowUpdater:
|
|
|
200
227
|
if parse_record is not None:
|
|
201
228
|
update_params['x_parse_record'] = parse_record
|
|
202
229
|
|
|
230
|
+
# 只重做提取(不重建 x_attachments_pdf):把 mongo 已有的 x_attachments_pdf 按 store_path 填上 PG 页数后整体写回,
|
|
231
|
+
# 以 PG 为准(取不到置为空);meta 写的标题、语言、摘要等字段原样带回
|
|
232
|
+
if status == 'success' and 'extract' in steps and 'x_attachments_pdf' not in update_params:
|
|
233
|
+
page_counts = {att['store_path']: att['page_size'] for att in attachments_pdf}
|
|
234
|
+
db_attachments_pdf = db_doc['x_attachments_pdf'] # 只重做提取时 mongo 必是 convert_done,x_attachments_pdf 必有
|
|
235
|
+
for att in db_attachments_pdf:
|
|
236
|
+
if att['store_path'] in page_counts:
|
|
237
|
+
att['page_count'] = page_counts[att['store_path']]
|
|
238
|
+
update_params['x_attachments_pdf'] = db_attachments_pdf
|
|
239
|
+
|
|
203
240
|
if update_params:
|
|
204
241
|
# logger.info(json.dumps(update_params, ensure_ascii=False, indent=2))
|
|
205
242
|
self.update_mongo_data(report_id, data_source, update_params, kafka_ignore)
|
|
@@ -202,6 +202,23 @@ class FileFlowHandleV2:
|
|
|
202
202
|
|
|
203
203
|
postgres_coon.execute(op_meta_stmt, {'op_meta_id': op_meta_id})
|
|
204
204
|
|
|
205
|
+
def _update_exit_failed_attachments(self, postgres_coon, meta_data):
|
|
206
|
+
"""回更时判定失败的附件(FlowUpdater 标了 exit_failure_code,如页数异常 30009),按提取失败写回 op_attachment。"""
|
|
207
|
+
for attachment in meta_data.get('x_attachments_pdf') or []:
|
|
208
|
+
failure_code = attachment.get('exit_failure_code')
|
|
209
|
+
if not failure_code:
|
|
210
|
+
continue
|
|
211
|
+
stmt = (
|
|
212
|
+
update(self.table_op_attachment)
|
|
213
|
+
.where(self.table_op_attachment.c.id == attachment['id'])
|
|
214
|
+
.values(
|
|
215
|
+
status_extract='failed',
|
|
216
|
+
failure_code=failure_code,
|
|
217
|
+
updated_at=datetime.datetime.now(datetime.timezone.utc)
|
|
218
|
+
)
|
|
219
|
+
)
|
|
220
|
+
postgres_coon.execute(stmt)
|
|
221
|
+
|
|
205
222
|
def _update_low_priority_processing_data(self, meta_id_set, params):
|
|
206
223
|
meta_id_list = list(meta_id_set)
|
|
207
224
|
if not meta_id_list:
|
|
@@ -457,6 +474,7 @@ class FileFlowHandleV2:
|
|
|
457
474
|
self._delete_and_backup_data_from_queue(session, item)
|
|
458
475
|
elif status == 'failed':
|
|
459
476
|
self._update_failed_record_to_manual(session, meta_id)
|
|
477
|
+
self._update_exit_failed_attachments(session, item)
|
|
460
478
|
else:
|
|
461
479
|
logger.info(f"Data is still processing. Current status: {status}")
|
|
462
480
|
session.commit()
|
|
@@ -598,7 +598,7 @@ def _jsonl_bytes(records: List[dict]) -> bytes:
|
|
|
598
598
|
# - para_blocks 然后 discarded_blocks
|
|
599
599
|
# - btype=page_number 直接跳过
|
|
600
600
|
# - 文本类(text/title/discarded/index/header/footer/aside_text/footnote/
|
|
601
|
-
# reference/ref_text/equation/page_footnote/caption/abstract/code)走
|
|
601
|
+
# reference/ref_text/phonetic/equation/page_footnote/caption/abstract/code)走
|
|
602
602
|
# get_com_lines 提文本,title/header → out_type=title,其它 → sentence
|
|
603
603
|
# - list 递归 blk['blocks'](如有)
|
|
604
604
|
# - table 提 HTML(span.type=table 取 span.html),text spans 拆为单独 block
|
|
@@ -612,7 +612,7 @@ def _jsonl_bytes(records: List[dict]) -> bytes:
|
|
|
612
612
|
_TEXT_LIKE_TYPES = frozenset({
|
|
613
613
|
"text", "discarded", "title", "index",
|
|
614
614
|
"header", "footer", "aside_text",
|
|
615
|
-
"footnote", "reference", "ref_text",
|
|
615
|
+
"footnote", "reference", "ref_text", "phonetic",
|
|
616
616
|
"equation", "page_footnote",
|
|
617
617
|
"caption", "abstract", "code",
|
|
618
618
|
})
|
orbitkit-0.9.26/orbitkit/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.9.26
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|