1
0
Fork 0
mirror of synced 2024-06-01 18:20:20 +12:00

remove dataclass for ArchiveIndex in favor of plain dict to simplify schema file

This commit is contained in:
Nick Sweeting 2019-03-27 15:32:39 -04:00
parent 88721512d4
commit ea695b8bef
3 changed files with 38 additions and 64 deletions

View file

@ -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)

View file

@ -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

View file

@ -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