From 692e9d610042b0dffc60a56608b1b0e06d41808e Mon Sep 17 00:00:00 2001 From: obar1 Date: Sun, 8 Sep 2024 14:01:00 +0200 Subject: [PATCH 1/6] small ref --- zero_to_one_hundred/models/meta_book.py | 12 ++++++------ zero_to_one_hundred/models/section.py | 2 +- .../processors/refresh_links_processor.py | 2 +- zero_to_one_hundred/runner.py | 11 +++++++---- .../tests/test_ztoh/test_validator.py | 11 +++++++---- zero_to_one_hundred/validator/validator.py | 8 ++++++-- 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/zero_to_one_hundred/models/meta_book.py b/zero_to_one_hundred/models/meta_book.py index 12a0cff..2eefad2 100644 --- a/zero_to_one_hundred/models/meta_book.py +++ b/zero_to_one_hundred/models/meta_book.py @@ -88,27 +88,27 @@ def write(self): self.persist_fs.make_dirs(self.config_map.get_download_engine_books_path) self.persist_fs.make_dirs(self.contents_path) except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) try: self.write_img() except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) try: self.write_epub() except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) try: self.write_metadata() except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) try: self.write_pdf(self.path_epub) except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) try: self.write_splitter_pdf(self.path_pdf, self.config_map.get_split_pdf_pages) except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) @classmethod def get_isbn(cls, http_url): diff --git a/zero_to_one_hundred/models/section.py b/zero_to_one_hundred/models/section.py index 2280de1..9809f5e 100644 --- a/zero_to_one_hundred/models/section.py +++ b/zero_to_one_hundred/models/section.py @@ -177,7 +177,7 @@ def get_header(line): if len(not_null) > 1: # take first one header found res = not_null[1] except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) res = "FIXME: " return res diff --git a/zero_to_one_hundred/processors/refresh_links_processor.py b/zero_to_one_hundred/processors/refresh_links_processor.py index 38cc8a3..978ae79 100644 --- a/zero_to_one_hundred/processors/refresh_links_processor.py +++ b/zero_to_one_hundred/processors/refresh_links_processor.py @@ -37,4 +37,4 @@ def process(self): try: s.refresh_links() except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) diff --git a/zero_to_one_hundred/runner.py b/zero_to_one_hundred/runner.py index ed60c17..80ac1ae 100644 --- a/zero_to_one_hundred/runner.py +++ b/zero_to_one_hundred/runner.py @@ -5,6 +5,7 @@ from zero_to_one_hundred.factories.a_factory import AFactory from zero_to_one_hundred.factories.a_factory_provider import AFactoryProvider from zero_to_one_hundred.validator.validator import Validator +from typing import Union, TypeVar def run_core(argv: List[str], factory_provider: AFactoryProvider): @@ -15,16 +16,18 @@ def run_core(argv: List[str], factory_provider: AFactoryProvider): factory_provider (AFactoryProvider): a factory_type """ - factory: AFactory + + T = TypeVar('T', bound=AFactory) + factory: Union[AFactory, T] try: factory = factory_provider.provide() [processor.process() for processor in factory.get_processor(argv) if processor] except SomeError as e: - Validator.print_DDD(e) + Validator.print_e(e) return except FileNotFoundError as e: - Validator.print_DDD(e) + Validator.print_e(e) return except Exception as e: - Validator.print_DDD(e) + Validator.print_e(e) factory.help_processor().process() diff --git a/zero_to_one_hundred/tests/test_ztoh/test_validator.py b/zero_to_one_hundred/tests/test_ztoh/test_validator.py index 71de37d..5162ea9 100644 --- a/zero_to_one_hundred/tests/test_ztoh/test_validator.py +++ b/zero_to_one_hundred/tests/test_ztoh/test_validator.py @@ -6,9 +6,12 @@ from zero_to_one_hundred.validator.validator import Validator -def test_is_valid_http__pass__fail(): - # pass - assert Validator.is_valid_http("https://code.google") is None - # fail +def test_is_valid_http_pass(): + assert Validator.is_valid_http("https://code.google") is None\ + +def test_is_valid_http_pass(): + assert Validator.is_valid_http("http://www.cloudskillsboost.google/") is None + +def test_is_valid_http_fail(): with pytest.raises(NotURLFormatError): Validator.is_valid_http("code.google") diff --git a/zero_to_one_hundred/validator/validator.py b/zero_to_one_hundred/validator/validator.py index 0474813..34a5e10 100644 --- a/zero_to_one_hundred/validator/validator.py +++ b/zero_to_one_hundred/validator/validator.py @@ -1,16 +1,20 @@ import logging import traceback +import re + from zero_to_one_hundred.exceptions.errors import NotURLFormatError class Validator: @classmethod + def is_valid_http(cls, url: str): - if not url.startswith("https://"): + pattern = r'^[^https?:\/\/].*' + if re.match(pattern, url) is not None: raise NotURLFormatError(f"{url} not valid") @classmethod - def print_DDD(cls, e: Exception): + def print_e(cls, e: Exception): logging.info(traceback.format_exc()) logging.info(f"DDD issue with {e}") From 89d8e77aca4582ffc04a3facc97828e0f98fbc6c Mon Sep 17 00:00:00 2001 From: obar1 Date: Sun, 8 Sep 2024 14:41:36 +0200 Subject: [PATCH 2/6] 81 --- zero_to_one_hundred/factories/sb_factory.py | 12 ++++++++++-- zero_to_one_hundred/factories/ztoh_factory.py | 16 +++++++++++++--- .../factories/ztoh_factory_provider.py | 2 +- zero_to_one_hundred/models/map.py | 4 ++-- zero_to_one_hundred/models/metadata.py | 4 ++-- zero_to_one_hundred/models/readme_md.py | 2 +- zero_to_one_hundred/models/section.py | 2 +- zero_to_one_hundred/models/toc.py | 4 ++-- .../processors/refresh_map_processor.py | 2 +- zero_to_one_hundred/runner.py | 3 +++ zero_to_one_hundred/tests/test_ztoh/test_map.py | 14 +++++++------- .../tests/test_ztoh/test_readme_md.py | 4 ++-- .../tests/test_ztoh/test_section.py | 4 ++-- .../tests/tests_sb/test_metadata.py | 10 +++++----- zero_to_one_hundred/tests/tests_sb/test_toc.py | 4 ++-- zero_to_one_hundred/validator/validator.py | 4 ++-- zero_to_one_hundred/views/markdown_renderer.py | 2 +- 17 files changed, 57 insertions(+), 36 deletions(-) diff --git a/zero_to_one_hundred/factories/sb_factory.py b/zero_to_one_hundred/factories/sb_factory.py index db7c9c7..9e909ae 100644 --- a/zero_to_one_hundred/factories/sb_factory.py +++ b/zero_to_one_hundred/factories/sb_factory.py @@ -1,3 +1,4 @@ +import argparse from enum import Enum from zero_to_one_hundred.configs.sb_config_map import SBConfigMap @@ -27,9 +28,16 @@ def __init__( self.process_fs = process_fs def get_processor(self, args): - cmd = args[1] + parser = argparse.ArgumentParser(description="Run 0to100_sb.") + valid_cmds = list([p.name for p in self.SUPPORTED_PROCESSOR]) + parser.add_argument('cmd', type=str, help=f'command, must be {" ".join(valid_cmds)}' , choices=valid_cmds) + parser.add_argument('p1', type=str, help='arg p1', nargs='?', default=None) + + args = parser.parse_args(args[1:]) + cmd = args.cmd + p1 = args.p1 if cmd == SBFactory.SUPPORTED_PROCESSOR.snatch_book.name: - http_url = args[2] + http_url = p1 yield self.snatch_book_processor(http_url) yield self.refresh_toc_processor() elif cmd == SBFactory.SUPPORTED_PROCESSOR.refresh_toc.name: diff --git a/zero_to_one_hundred/factories/ztoh_factory.py b/zero_to_one_hundred/factories/ztoh_factory.py index 500c90a..9fbad0b 100644 --- a/zero_to_one_hundred/factories/ztoh_factory.py +++ b/zero_to_one_hundred/factories/ztoh_factory.py @@ -1,4 +1,6 @@ +import argparse from enum import Enum +from pickle import FALSE from zero_to_one_hundred.configs.ztoh_config_map import ZTOHConfigMap from zero_to_one_hundred.factories.a_factory import AFactory @@ -34,12 +36,20 @@ def __init__( self.process_fs = process_fs def get_processor(self, args): - cmd = args[1] + parser = argparse.ArgumentParser(description="Run 0to100.") + valid_cmds = list([p.name for p in self.SUPPORTED_PROCESSOR]) + parser.add_argument('cmd', type=str, help=f'command, must be {" ".join(valid_cmds)}' , choices=valid_cmds) + parser.add_argument('p1', type=str, help='arg p1', nargs='?', default=None) + + args = parser.parse_args(args[1:]) + cmd = args.cmd + p1 = args.p1 + if cmd == ZTOHFactory.SUPPORTED_PROCESSOR.create_section.name: - yield self.create_section_processor(args[2]) + yield self.create_section_processor(p1) yield self.refresh_map_processor() elif cmd == ZTOHFactory.SUPPORTED_PROCESSOR.done_section.name: - yield self.done_section_processor(args[2]) + yield self.done_section_processor(p1) yield self.refresh_map_processor() elif cmd == ZTOHFactory.SUPPORTED_PROCESSOR.refresh_map.name: yield self.refresh_map_processor() diff --git a/zero_to_one_hundred/factories/ztoh_factory_provider.py b/zero_to_one_hundred/factories/ztoh_factory_provider.py index f46e3e1..29643a1 100644 --- a/zero_to_one_hundred/factories/ztoh_factory_provider.py +++ b/zero_to_one_hundred/factories/ztoh_factory_provider.py @@ -18,4 +18,4 @@ def provide(self) -> ZTOHFactory: config_map_type = config_map.get_type if config_map_type == ZTOH_MAP: return ZTOHFactory(config_map, self.persist_fs, self.process_fs) - raise NotImplementedError(f"NotImplementedError {config_map_type}") + raise NotImplementedError(f"NotImplementedError {config_map_type}, check the files contents of {config_map.map_yaml_path}") diff --git a/zero_to_one_hundred/models/map.py b/zero_to_one_hundred/models/map.py index 53e5f48..252d72d 100644 --- a/zero_to_one_hundred/models/map.py +++ b/zero_to_one_hundred/models/map.py @@ -35,7 +35,7 @@ def get_sections(self): res = sorted(self.sections, key=lambda s: s.get_readme_md_time()) return res - def asMarkDown(self) -> str: + def as_mark_down(self) -> str: lf_char = "\n" def get_legend_as_md(self): @@ -50,7 +50,7 @@ def get_legend_as_md(self): {get_legend_as_md(self)} -{lf_char.join((section.asMarkDown() for section in self.get_sections()))} +{lf_char.join((section.as_mark_down() for section in self.get_sections()))} """ return txt.replace(" ", "") diff --git a/zero_to_one_hundred/models/metadata.py b/zero_to_one_hundred/models/metadata.py index 9d5181c..0687c8c 100644 --- a/zero_to_one_hundred/models/metadata.py +++ b/zero_to_one_hundred/models/metadata.py @@ -30,7 +30,7 @@ def __init__( self.metadata: dict = self.read() def __repr__(self): - return f"MetaBook {self.isbn} {self.http_url} {self.asMarkDown()}" + return f"MetaBook {self.isbn} {self.http_url} {self.as_mark_down()}" @staticmethod def get_page_perc(metadata_dict: dict): @@ -79,7 +79,7 @@ def get_metadata(self): sorted_dict = dict(sorted(metadata_dict.items())) return sorted_dict - def asMarkDown(self) -> str: + def as_mark_down(self) -> str: # handle nasty URL in MD m: dict = self.get_metadata() url = m.get("url") diff --git a/zero_to_one_hundred/models/readme_md.py b/zero_to_one_hundred/models/readme_md.py index e272827..c4b452f 100644 --- a/zero_to_one_hundred/models/readme_md.py +++ b/zero_to_one_hundred/models/readme_md.py @@ -26,7 +26,7 @@ def __init__( def __repr__(self): return f"ReadMeMD {self.readme_md} {self.http_url} {self.dir_name}" - def asMarkDown(self): + def as_mark_down(self): return f"ReadMeMD {self.readme_md}, {self.dir_name} {self.http_url}" def write(self, txt=None): diff --git a/zero_to_one_hundred/models/section.py b/zero_to_one_hundred/models/section.py index 9809f5e..2363065 100644 --- a/zero_to_one_hundred/models/section.py +++ b/zero_to_one_hundred/models/section.py @@ -38,7 +38,7 @@ def __init__( def __repr__(self): return f"Section {self.http_url} {self.dir_readme_md} {self.is_done} {self.dir_name}" - def asMarkDown(self): + def as_mark_down(self): return ( "1. " + self.get_id_name diff --git a/zero_to_one_hundred/models/toc.py b/zero_to_one_hundred/models/toc.py index db4f7bf..7927a2e 100644 --- a/zero_to_one_hundred/models/toc.py +++ b/zero_to_one_hundred/models/toc.py @@ -43,7 +43,7 @@ def build_from_dirs( logging.info(res) return res - def asMarkDown(self): + def as_mark_down(self): def flatten_meta_book(meta_book: MetaBook): logging.info(f"flatten_meta_book {meta_book}") txt = "|".join( @@ -75,5 +75,5 @@ def flatten_meta_book(meta_book: MetaBook): return md def write(self): - md = self.asMarkDown() + md = self.as_mark_down() return self.persist_fs.write_file(self.readme_md, md) diff --git a/zero_to_one_hundred/processors/refresh_map_processor.py b/zero_to_one_hundred/processors/refresh_map_processor.py index 6cf2ccd..26f3a5a 100644 --- a/zero_to_one_hundred/processors/refresh_map_processor.py +++ b/zero_to_one_hundred/processors/refresh_map_processor.py @@ -32,4 +32,4 @@ def process(self): self.persist_fs.list_dirs(self.config_map.get_repo_path), ), ) - map.write(map.asMarkDown()) + map.write(map.as_mark_down()) diff --git a/zero_to_one_hundred/runner.py b/zero_to_one_hundred/runner.py index 80ac1ae..72861d3 100644 --- a/zero_to_one_hundred/runner.py +++ b/zero_to_one_hundred/runner.py @@ -28,6 +28,9 @@ def run_core(argv: List[str], factory_provider: AFactoryProvider): except FileNotFoundError as e: Validator.print_e(e) return + except NotImplementedError as e: + Validator.print_e(e) + return except Exception as e: Validator.print_e(e) factory.help_processor().process() diff --git a/zero_to_one_hundred/tests/test_ztoh/test_map.py b/zero_to_one_hundred/tests/test_ztoh/test_map.py index 72057e1..c71151a 100644 --- a/zero_to_one_hundred/tests/test_ztoh/test_map.py +++ b/zero_to_one_hundred/tests/test_ztoh/test_map.py @@ -10,7 +10,7 @@ # pylint: disable=W0102 -def test_asMarkDown( +def test_as_mark_down( get_config_map: ZTOHConfigMap, persist_fs, process_fs, @@ -21,7 +21,7 @@ def test_asMarkDown( for http_url in http_urls ] actual = Map(get_config_map, persist_fs, sections=sections) - current = actual.asMarkDown() + current = actual.as_mark_down() expected = """ # map toc.md, 2 ## legend: @@ -32,7 +32,7 @@ def test_asMarkDown( assert str_relaxed(current) == str_relaxed(expected) -def test_asMarkDown_0( +def test_as_mark_down_0( get_config_map_sorted_0: ZTOHConfigMap, persist_fs, process_fs, @@ -47,7 +47,7 @@ def test_asMarkDown_0( for http_url in http_urls ] actual = Map(get_config_map_sorted_0, persist_fs, sections=sections) - current = actual.asMarkDown() + current = actual.as_mark_down() expected = """ # map toc.md, 3 ## legend: @@ -60,7 +60,7 @@ def test_asMarkDown_0( assert str_relaxed(current) == str_relaxed(expected) -def test_asMarkDown_1( +def test_as_mark_down_1( get_config_map_sorted_1: ZTOHConfigMap, persist_fs, process_fs, @@ -75,7 +75,7 @@ def test_asMarkDown_1( for http_url in http_urls ] actual = Map(get_config_map_sorted_1, persist_fs, sections=sections) - current = actual.asMarkDown() + current = actual.as_mark_down() expected = """ # map toc.md, 3 ## legend: @@ -100,7 +100,7 @@ def test_write( for http_url in http_urls ] actual = Map(get_config_map, persist_fs, sections=sections) - txt = actual.asMarkDown() + txt = actual.as_mark_down() with Patcher(allow_root_user=False) as patcher: res = actual.write(txt) assert res > 0 diff --git a/zero_to_one_hundred/tests/test_ztoh/test_readme_md.py b/zero_to_one_hundred/tests/test_ztoh/test_readme_md.py index 49364f9..2e1acae 100644 --- a/zero_to_one_hundred/tests/test_ztoh/test_readme_md.py +++ b/zero_to_one_hundred/tests/test_ztoh/test_readme_md.py @@ -12,7 +12,7 @@ def test_refresh_links(get_config_map, persist_fs, process_fs, http_url_1): ) -def test_asMarkDown(get_config_map, persist_fs, process_fs, http_url_1): +def test_as_mark_down(get_config_map, persist_fs, process_fs, http_url_1): actual = ReadMeMD( get_config_map, persist_fs, @@ -20,7 +20,7 @@ def test_asMarkDown(get_config_map, persist_fs, process_fs, http_url_1): Section.from_http_url_to_dir, http_url_1, ) - current = actual.asMarkDown() + current = actual.as_mark_down() assert ( current == "ReadMeMD ./0to100/https§§§cloud.google.com§abc/readme.md, https§§§cloud.google.com§abc https://cloud.google.com/abc" diff --git a/zero_to_one_hundred/tests/test_ztoh/test_section.py b/zero_to_one_hundred/tests/test_ztoh/test_section.py index 55b5041..782f6ec 100644 --- a/zero_to_one_hundred/tests/test_ztoh/test_section.py +++ b/zero_to_one_hundred/tests/test_ztoh/test_section.py @@ -93,9 +93,9 @@ def test_gcp_get_format_as_md(get_gcp_config_map, persist_fs, process_fs): assert actual.get_matching_icon_as_md == """:snake:""" -def test_asMarkDown(get_config_map, persist_fs, process_fs, http_url_1): +def test_as_mark_down(get_config_map, persist_fs, process_fs, http_url_1): actual = Section(get_config_map, persist_fs, process_fs, http_url_1) - current = actual.asMarkDown() + current = actual.as_mark_down() assert str_relaxed(current) == str_relaxed( "1. [`here`](./0to100/https§§§cloud.google.com§abc/readme.md) `wip`" ) diff --git a/zero_to_one_hundred/tests/tests_sb/test_metadata.py b/zero_to_one_hundred/tests/tests_sb/test_metadata.py index 19814a7..5cc534c 100644 --- a/zero_to_one_hundred/tests/tests_sb/test_metadata.py +++ b/zero_to_one_hundred/tests/tests_sb/test_metadata.py @@ -30,7 +30,7 @@ def test_get_page_perc(get_config_map, persist_fs, process_fs, http_oreilly_1): assert actual == "n/a" -def test_asMarkDown( +def test_as_mark_down( get_config_map, persist_fs, process_fs, http_oreilly_1, oreilly_isbn_1 ): actual = Metadata( @@ -41,7 +41,7 @@ def test_asMarkDown( http_oreilly_1, ) - assert str_relaxed(actual.asMarkDown()) == str_relaxed( + assert str_relaxed(actual.as_mark_down()) == str_relaxed( """ { "isbn":"9780135956977",
@@ -55,7 +55,7 @@ def test_asMarkDown( data = '{ "abc": "123", "def": "456"}' actual.metadata = json.loads(data) - assert str_relaxed(actual.asMarkDown()) == str_relaxed( + assert str_relaxed(actual.as_mark_down()) == str_relaxed( """ { "abc": "123",
@@ -76,8 +76,8 @@ def test_asMarkDown( } """ actual.metadata = json.loads(data) - print(actual.asMarkDown()) - assert str_relaxed(actual.asMarkDown()) == str_relaxed( + print(actual.as_mark_down()) + assert str_relaxed(actual.as_mark_down()) == str_relaxed( """ { "abc": "123",
diff --git a/zero_to_one_hundred/tests/tests_sb/test_toc.py b/zero_to_one_hundred/tests/tests_sb/test_toc.py index 858cded..83f547f 100644 --- a/zero_to_one_hundred/tests/tests_sb/test_toc.py +++ b/zero_to_one_hundred/tests/tests_sb/test_toc.py @@ -30,7 +30,7 @@ def test_init(get_config_map, persist_fs, process_fs, http_oreilly_1): @pytest.mark.usefixtures("mock_time") -def test_asMarkDown( +def test_as_mark_down( get_config_map, persist_fs, process_fs, http_oreilly_1, http_oreilly_2 ): metabooks = [ @@ -53,7 +53,7 @@ def test_asMarkDown( process_fs, [], ) - current = actual.asMarkDown() + current = actual.as_mark_down() expected = """ # TOC ## `0` metabook diff --git a/zero_to_one_hundred/validator/validator.py b/zero_to_one_hundred/validator/validator.py index 34a5e10..d4a176b 100644 --- a/zero_to_one_hundred/validator/validator.py +++ b/zero_to_one_hundred/validator/validator.py @@ -16,5 +16,5 @@ def is_valid_http(cls, url: str): @classmethod def print_e(cls, e: Exception): - logging.info(traceback.format_exc()) - logging.info(f"DDD issue with {e}") + logging.exception(traceback.format_exc()) + logging.exception(f"#DDD issue with {e}") diff --git a/zero_to_one_hundred/views/markdown_renderer.py b/zero_to_one_hundred/views/markdown_renderer.py index 3b54caf..2e15bb8 100644 --- a/zero_to_one_hundred/views/markdown_renderer.py +++ b/zero_to_one_hundred/views/markdown_renderer.py @@ -7,7 +7,7 @@ class MarkdownRenderer(ABC): """ @abstractmethod - def asMarkDown(self) -> str: + def as_mark_down(self) -> str: pass @staticmethod From 745f3647f3b6159fef06f00ed079819ee4551998 Mon Sep 17 00:00:00 2001 From: obar1 Date: Sun, 8 Sep 2024 15:07:25 +0200 Subject: [PATCH 3/6] wip --- zero_to_one_hundred/models/meta_book.py | 8 ++++++++ zero_to_one_hundred/models/toc.py | 5 +++-- zero_to_one_hundred/tests/tests_sb/resources/map.yaml | 6 ++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/zero_to_one_hundred/models/meta_book.py b/zero_to_one_hundred/models/meta_book.py index 2eefad2..e04f8be 100644 --- a/zero_to_one_hundred/models/meta_book.py +++ b/zero_to_one_hundred/models/meta_book.py @@ -135,3 +135,11 @@ def path_as_md(self, a_path): use relative path and convert " " to %20 """ return a_path.replace(" ", "%20") + + + @property + def get_matching_icon_as_md(self): + icons = self.config_map.get_legend_icons + + res = [i.icon for i in icons if re.search(i.regex, self.http_url)] + return " ".join(res) \ No newline at end of file diff --git a/zero_to_one_hundred/models/toc.py b/zero_to_one_hundred/models/toc.py index 7927a2e..43a4baf 100644 --- a/zero_to_one_hundred/models/toc.py +++ b/zero_to_one_hundred/models/toc.py @@ -53,6 +53,7 @@ def flatten_meta_book(meta_book: MetaBook): f"[`xyz`]({meta_book.contents_path_as_md})", f"{meta_book.metadata.as_mark_down()}", f"{meta_book.metadata.status}", + f"{meta_book.get_matching_icon_as_md}" ] ) @@ -67,8 +68,8 @@ def flatten_meta_book(meta_book: MetaBook): # TOC ## `{len(self.meta_books)}` metabook ### {self.process_fs.get_now()} -| ISBN | img | `meta-contents` | `json-contents` | `status` | -|--- |--- |--- |--- |--- | +| ISBN | img | `meta-contents` | `json-contents` | `status` | `icons` +|--- |--- |--- |--- |--- |--- | {backslash_n_char.join(flattened_meta_book)} """ ) diff --git a/zero_to_one_hundred/tests/tests_sb/resources/map.yaml b/zero_to_one_hundred/tests/tests_sb/resources/map.yaml index cefd05c..1cdbea3 100644 --- a/zero_to_one_hundred/tests/tests_sb/resources/map.yaml +++ b/zero_to_one_hundred/tests/tests_sb/resources/map.yaml @@ -6,3 +6,9 @@ configs: oreilly_username: "username" oreilly_userpassword: "userpassword" split_pdf_pages: 100 +legend: + type: "sb" + icons: + - name: Book + icon: ":cyclone:" + regex: "978" From 0defd42ccc893ce9b8d28f64df43a1c0172811a3 Mon Sep 17 00:00:00 2001 From: obar1 Date: Sun, 8 Sep 2024 15:23:31 +0200 Subject: [PATCH 4/6] wip --- .gitignore | 2 +- demo.sh | 3 +++ zero_to_one_hundred/factories/sb_factory.py | 11 ++++++++--- zero_to_one_hundred/factories/ztoh_factory.py | 12 ++++++++---- .../factories/ztoh_factory_provider.py | 4 +++- zero_to_one_hundred/models/meta_book.py | 3 +-- zero_to_one_hundred/models/toc.py | 2 +- zero_to_one_hundred/runner.py | 4 ++-- .../tests/test_ztoh/test_validator.py | 8 +++++--- zero_to_one_hundred/tests/tests_sb/test_toc.py | 5 +++-- zero_to_one_hundred/validator/validator.py | 3 +-- 11 files changed, 36 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index fe951bb..e8d6f9a 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,7 @@ venv/ 978*/ map.md repo/ -toc.md +toc*.md *.yaml safaribooks/ diff --git a/demo.sh b/demo.sh index d05d090..6c78841 100644 --- a/demo.sh +++ b/demo.sh @@ -47,6 +47,7 @@ done <<< "$content" ls -1R 0to100 + cp toc.md toc_0to100.md } function 0to100_sb { @@ -66,6 +67,8 @@ function 0to100_sb { ./main_sb.py refresh_toc ls -1R 978* + cp toc.md toc_0to100_sb.md + } setup diff --git a/zero_to_one_hundred/factories/sb_factory.py b/zero_to_one_hundred/factories/sb_factory.py index 9e909ae..2488f79 100644 --- a/zero_to_one_hundred/factories/sb_factory.py +++ b/zero_to_one_hundred/factories/sb_factory.py @@ -29,9 +29,14 @@ def __init__( def get_processor(self, args): parser = argparse.ArgumentParser(description="Run 0to100_sb.") - valid_cmds = list([p.name for p in self.SUPPORTED_PROCESSOR]) - parser.add_argument('cmd', type=str, help=f'command, must be {" ".join(valid_cmds)}' , choices=valid_cmds) - parser.add_argument('p1', type=str, help='arg p1', nargs='?', default=None) + valid_cmds = list(p.name for p in self.SUPPORTED_PROCESSOR) + parser.add_argument( + "cmd", + type=str, + help=f'command, must be {" ".join(valid_cmds)}', + choices=valid_cmds, + ) + parser.add_argument("p1", type=str, help="arg p1", nargs="?", default=None) args = parser.parse_args(args[1:]) cmd = args.cmd diff --git a/zero_to_one_hundred/factories/ztoh_factory.py b/zero_to_one_hundred/factories/ztoh_factory.py index 9fbad0b..d419978 100644 --- a/zero_to_one_hundred/factories/ztoh_factory.py +++ b/zero_to_one_hundred/factories/ztoh_factory.py @@ -1,6 +1,5 @@ import argparse from enum import Enum -from pickle import FALSE from zero_to_one_hundred.configs.ztoh_config_map import ZTOHConfigMap from zero_to_one_hundred.factories.a_factory import AFactory @@ -37,9 +36,14 @@ def __init__( def get_processor(self, args): parser = argparse.ArgumentParser(description="Run 0to100.") - valid_cmds = list([p.name for p in self.SUPPORTED_PROCESSOR]) - parser.add_argument('cmd', type=str, help=f'command, must be {" ".join(valid_cmds)}' , choices=valid_cmds) - parser.add_argument('p1', type=str, help='arg p1', nargs='?', default=None) + valid_cmds = list(p.name for p in self.SUPPORTED_PROCESSOR) + parser.add_argument( + "cmd", + type=str, + help=f'command, must be {" ".join(valid_cmds)}', + choices=valid_cmds, + ) + parser.add_argument("p1", type=str, help="arg p1", nargs="?", default=None) args = parser.parse_args(args[1:]) cmd = args.cmd diff --git a/zero_to_one_hundred/factories/ztoh_factory_provider.py b/zero_to_one_hundred/factories/ztoh_factory_provider.py index 29643a1..1e2979b 100644 --- a/zero_to_one_hundred/factories/ztoh_factory_provider.py +++ b/zero_to_one_hundred/factories/ztoh_factory_provider.py @@ -18,4 +18,6 @@ def provide(self) -> ZTOHFactory: config_map_type = config_map.get_type if config_map_type == ZTOH_MAP: return ZTOHFactory(config_map, self.persist_fs, self.process_fs) - raise NotImplementedError(f"NotImplementedError {config_map_type}, check the files contents of {config_map.map_yaml_path}") + raise NotImplementedError( + f"NotImplementedError {config_map_type}, check the files contents of {config_map.map_yaml_path}" + ) diff --git a/zero_to_one_hundred/models/meta_book.py b/zero_to_one_hundred/models/meta_book.py index e04f8be..8574ac0 100644 --- a/zero_to_one_hundred/models/meta_book.py +++ b/zero_to_one_hundred/models/meta_book.py @@ -136,10 +136,9 @@ def path_as_md(self, a_path): """ return a_path.replace(" ", "%20") - @property def get_matching_icon_as_md(self): icons = self.config_map.get_legend_icons res = [i.icon for i in icons if re.search(i.regex, self.http_url)] - return " ".join(res) \ No newline at end of file + return " ".join(res) diff --git a/zero_to_one_hundred/models/toc.py b/zero_to_one_hundred/models/toc.py index 43a4baf..0d289f5 100644 --- a/zero_to_one_hundred/models/toc.py +++ b/zero_to_one_hundred/models/toc.py @@ -53,7 +53,7 @@ def flatten_meta_book(meta_book: MetaBook): f"[`xyz`]({meta_book.contents_path_as_md})", f"{meta_book.metadata.as_mark_down()}", f"{meta_book.metadata.status}", - f"{meta_book.get_matching_icon_as_md}" + f"{meta_book.get_matching_icon_as_md}", ] ) diff --git a/zero_to_one_hundred/runner.py b/zero_to_one_hundred/runner.py index 72861d3..01c1ae9 100644 --- a/zero_to_one_hundred/runner.py +++ b/zero_to_one_hundred/runner.py @@ -1,11 +1,11 @@ # pylint: disable=W0106,R1710 from typing import List +from typing import Union, TypeVar from zero_to_one_hundred.exceptions.errors import SomeError from zero_to_one_hundred.factories.a_factory import AFactory from zero_to_one_hundred.factories.a_factory_provider import AFactoryProvider from zero_to_one_hundred.validator.validator import Validator -from typing import Union, TypeVar def run_core(argv: List[str], factory_provider: AFactoryProvider): @@ -17,7 +17,7 @@ def run_core(argv: List[str], factory_provider: AFactoryProvider): """ - T = TypeVar('T', bound=AFactory) + T = TypeVar("T", bound=AFactory) factory: Union[AFactory, T] try: factory = factory_provider.provide() diff --git a/zero_to_one_hundred/tests/test_ztoh/test_validator.py b/zero_to_one_hundred/tests/test_ztoh/test_validator.py index 5162ea9..6984981 100644 --- a/zero_to_one_hundred/tests/test_ztoh/test_validator.py +++ b/zero_to_one_hundred/tests/test_ztoh/test_validator.py @@ -6,12 +6,14 @@ from zero_to_one_hundred.validator.validator import Validator -def test_is_valid_http_pass(): - assert Validator.is_valid_http("https://code.google") is None\ +def test_is_valid_http_pass0(): + assert Validator.is_valid_http("https://code.google") is None -def test_is_valid_http_pass(): + +def test_is_valid_http_pass1(): assert Validator.is_valid_http("http://www.cloudskillsboost.google/") is None + def test_is_valid_http_fail(): with pytest.raises(NotURLFormatError): Validator.is_valid_http("code.google") diff --git a/zero_to_one_hundred/tests/tests_sb/test_toc.py b/zero_to_one_hundred/tests/tests_sb/test_toc.py index 83f547f..d2a1fa2 100644 --- a/zero_to_one_hundred/tests/tests_sb/test_toc.py +++ b/zero_to_one_hundred/tests/tests_sb/test_toc.py @@ -58,7 +58,8 @@ def test_as_mark_down( # TOC ## `0` metabook ### 2099/01/01 - 00:00:00 -| ISBN | img | `meta-contents` | `json-contents` | `status` | -|--- |--- |--- |--- |--- | +| ISBN | img | `meta-contents` | `json-contents` | `status` | `icons` | +|--- |--- |--- |--- |--- |--- | + """ assert str_relaxed("".join(current)) == str_relaxed("".join(expected)) diff --git a/zero_to_one_hundred/validator/validator.py b/zero_to_one_hundred/validator/validator.py index d4a176b..735142e 100644 --- a/zero_to_one_hundred/validator/validator.py +++ b/zero_to_one_hundred/validator/validator.py @@ -8,9 +8,8 @@ class Validator: @classmethod - def is_valid_http(cls, url: str): - pattern = r'^[^https?:\/\/].*' + pattern = r"^[^https?:\/\/].*" if re.match(pattern, url) is not None: raise NotURLFormatError(f"{url} not valid") From 5663cf586b7bc1e19ab18c48a9aa38ce4bc8c957 Mon Sep 17 00:00:00 2001 From: obar1 Date: Sun, 8 Sep 2024 15:23:40 +0200 Subject: [PATCH 5/6] wip --- zero_to_one_hundred/models/toc.py | 12 ++++++++++++ zero_to_one_hundred/tests/tests_sb/test_toc.py | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/zero_to_one_hundred/models/toc.py b/zero_to_one_hundred/models/toc.py index 0d289f5..64c61c6 100644 --- a/zero_to_one_hundred/models/toc.py +++ b/zero_to_one_hundred/models/toc.py @@ -59,6 +59,16 @@ def flatten_meta_book(meta_book: MetaBook): return "|" + txt + "|" + lf_char = "\n" + + def get_legend_as_md(self): + txt: str = """ +## legend: +""" + txt += lf_char + txt += self.config_map.get_legend_icons_as_md + return txt + flattened_meta_book = [flatten_meta_book(mb) for mb in self.meta_books] backslash_n_char = "\n" @@ -68,6 +78,8 @@ def flatten_meta_book(meta_book: MetaBook): # TOC ## `{len(self.meta_books)}` metabook ### {self.process_fs.get_now()} +{get_legend_as_md(self)} + | ISBN | img | `meta-contents` | `json-contents` | `status` | `icons` |--- |--- |--- |--- |--- |--- | {backslash_n_char.join(flattened_meta_book)} diff --git a/zero_to_one_hundred/tests/tests_sb/test_toc.py b/zero_to_one_hundred/tests/tests_sb/test_toc.py index d2a1fa2..37fbad2 100644 --- a/zero_to_one_hundred/tests/tests_sb/test_toc.py +++ b/zero_to_one_hundred/tests/tests_sb/test_toc.py @@ -58,6 +58,10 @@ def test_as_mark_down( # TOC ## `0` metabook ### 2099/01/01 - 00:00:00 +## legend +legendicons +Book +cyclone | ISBN | img | `meta-contents` | `json-contents` | `status` | `icons` | |--- |--- |--- |--- |--- |--- | From 4a0544401fc2a2083e29810be39a41df5e09d63a Mon Sep 17 00:00:00 2001 From: obar1 Date: Sun, 8 Sep 2024 15:35:01 +0200 Subject: [PATCH 6/6] wip --- zero_to_one_hundred/tests/test_ztoh/test_validator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zero_to_one_hundred/tests/test_ztoh/test_validator.py b/zero_to_one_hundred/tests/test_ztoh/test_validator.py index 6984981..3bbb593 100644 --- a/zero_to_one_hundred/tests/test_ztoh/test_validator.py +++ b/zero_to_one_hundred/tests/test_ztoh/test_validator.py @@ -7,11 +7,11 @@ def test_is_valid_http_pass0(): - assert Validator.is_valid_http("https://code.google") is None + assert Validator.is_valid_http("https" + "://code.google") is None def test_is_valid_http_pass1(): - assert Validator.is_valid_http("http://www.cloudskillsboost.google/") is None + assert Validator.is_valid_http("http" + "://www.cloudskillsboost.google/") is None def test_is_valid_http_fail():