mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-16 16:14:28 -04:00
remove dataclass for ArchiveIndex in favor of plain dict to simplify schema file
This commit is contained in:
parent
88721512d4
commit
ea695b8bef
3 changed files with 38 additions and 64 deletions
|
@ -101,20 +101,18 @@ def write_json_links_index(out_dir: str, links: List[Link]) -> None:
|
|||
|
||||
path = os.path.join(out_dir, 'index.json')
|
||||
|
||||
index_json = ArchiveIndex(
|
||||
info='ArchiveBox Index',
|
||||
source='https://github.com/pirate/ArchiveBox',
|
||||
docs='https://github.com/pirate/ArchiveBox/wiki',
|
||||
version=GIT_SHA,
|
||||
num_links=len(links),
|
||||
updated=datetime.now(),
|
||||
links=links,
|
||||
)
|
||||
|
||||
assert isinstance(index_json._asdict(), dict)
|
||||
index_json = {
|
||||
'info': 'ArchiveBox Index',
|
||||
'source': 'https://github.com/pirate/ArchiveBox',
|
||||
'docs': 'https://github.com/pirate/ArchiveBox/wiki',
|
||||
'version': VERSION,
|
||||
'num_links': len(links),
|
||||
'updated': datetime.now(),
|
||||
'links': links,
|
||||
}
|
||||
|
||||
with open(path, 'w', encoding='utf-8') as f:
|
||||
json.dump(index_json._asdict(), f, indent=4, cls=ExtendedEncoder)
|
||||
json.dump(index_json, f, indent=4, cls=ExtendedEncoder)
|
||||
|
||||
chmod_file(path)
|
||||
|
||||
|
|
|
@ -1,29 +1,40 @@
|
|||
import os
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
from datetime import datetime
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
from schema import Link, ArchiveResult, RuntimeStats
|
||||
from config import ANSI, REPO_DIR, OUTPUT_DIR
|
||||
|
||||
from .schema import Link, ArchiveResult
|
||||
from .config import ANSI, REPO_DIR, OUTPUT_DIR
|
||||
|
||||
|
||||
@dataclass
|
||||
class RuntimeStats:
|
||||
"""mutable stats counter for logging archiving timing info to CLI output"""
|
||||
|
||||
skipped: int = 0
|
||||
succeeded: int = 0
|
||||
failed: int = 0
|
||||
|
||||
parse_start_ts: datetime = None
|
||||
parse_end_ts: datetime = None
|
||||
|
||||
index_start_ts: datetime = None
|
||||
index_end_ts: datetime = None
|
||||
|
||||
archiving_start_ts: datetime = None
|
||||
archiving_end_ts: datetime = None
|
||||
|
||||
# globals are bad, mmkay
|
||||
_LAST_RUN_STATS = RuntimeStats(
|
||||
skipped=0,
|
||||
succeeded=0,
|
||||
failed=0,
|
||||
_LAST_RUN_STATS = RuntimeStats()
|
||||
|
||||
parse_start_ts=0,
|
||||
parse_end_ts=0,
|
||||
|
||||
index_start_ts=0,
|
||||
index_end_ts=0,
|
||||
|
||||
archiving_start_ts=0,
|
||||
archiving_end_ts=0,
|
||||
)
|
||||
|
||||
def pretty_path(path: str) -> str:
|
||||
"""convert paths like .../ArchiveBox/archivebox/../output/abc into output/abc"""
|
||||
return path.replace(REPO_DIR + '/', '')
|
||||
pwd = os.path.abspath('.')
|
||||
# parent = os.path.abspath(os.path.join(pwd, os.path.pardir))
|
||||
return path.replace(pwd + '/', './')
|
||||
|
||||
|
||||
### Parsing Stage
|
||||
|
|
|
@ -268,38 +268,3 @@ class Link:
|
|||
'dom_url': static_url,
|
||||
})
|
||||
return canonical
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ArchiveIndex:
|
||||
info: str
|
||||
version: str
|
||||
source: str
|
||||
docs: str
|
||||
num_links: int
|
||||
updated: str
|
||||
links: List[Link]
|
||||
schema: str = 'ArchiveIndex'
|
||||
|
||||
def __post_init__(self):
|
||||
assert self.schema == self.__class__.__name__
|
||||
|
||||
def _asdict(self):
|
||||
return asdict(self)
|
||||
|
||||
@dataclass
|
||||
class RuntimeStats:
|
||||
"""mutable stats counter for logging archiving timing info to CLI output"""
|
||||
|
||||
skipped: int
|
||||
succeeded: int
|
||||
failed: int
|
||||
|
||||
parse_start_ts: datetime
|
||||
parse_end_ts: datetime
|
||||
|
||||
index_start_ts: datetime
|
||||
index_end_ts: datetime
|
||||
|
||||
archiving_start_ts: datetime
|
||||
archiving_end_ts: datetime
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue