From 6838a831eda16c736f011f7af52f60792cdc7076 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:30:34 +0800 Subject: [PATCH 1/7] Add Empire fetch sources and parsing of the movie titles Task: MIL-004#1 Task: MIL-004#2 Closes #22 Closes #23 --- src/scrape_movies/constants.py | 3 + .../infrastructure/empire_movies.py | 55 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/scrape_movies/infrastructure/empire_movies.py diff --git a/src/scrape_movies/constants.py b/src/scrape_movies/constants.py index 61c1756..83677fd 100644 --- a/src/scrape_movies/constants.py +++ b/src/scrape_movies/constants.py @@ -35,3 +35,6 @@ MOVIES_OUTPUT_FILE: str = "movies.txt" ## The saved copy of the course's Hacker News page, used offline. HACKER_NEWS_FIXTURE_PATH: Path = FIXTURES_DIR / "hacker_news.html" + +## The saved headings of the live Empire page, used offline. +EMPIRE_FIXTURE_PATH: Path = FIXTURES_DIR / "empire_live_excerpt.html" diff --git a/src/scrape_movies/infrastructure/empire_movies.py b/src/scrape_movies/infrastructure/empire_movies.py new file mode 100644 index 0000000..7ce3217 --- /dev/null +++ b/src/scrape_movies/infrastructure/empire_movies.py @@ -0,0 +1,55 @@ +"""@brief Reading the movie titles from the Empire "100 Greatest Movies" page.""" + +import re + +from bs4 import Tag + +from scrape_movies.infrastructure.soup_basics import make_soup + +## The 2020 page (the assignment's snapshot): `

100) Title

`. +SNAPSHOT_TITLE = "h3.title" +## The current page: `

100) Title (year)

`. +_RANKED_HEADING = re.compile(r"^\s*\d{1,3}\)") + + +def parse_titles(html: str) -> list[str]: + """@brief Read the movie titles in page order. + + The assignment's snapshot is read through `h3.title`. When the page has no + such tag, as on the current live page, the `h2` headings that start with a + rank such as `100)` are used. + + @param html The HTML of the page. + @return The titles in page order, each as the page shows it. + """ + soup = make_soup(html) + titles = [tag.get_text().strip() for tag in soup.select(SNAPSHOT_TITLE)] + if titles: + return titles + headings = [tag for tag in soup.find_all("h2") if isinstance(tag, Tag)] + return [ + text + for text in (heading.get_text().strip() for heading in headings) + if _RANKED_HEADING.match(text) + ] + + +def first_title_markup(html: str) -> str: + """@brief Show the markup of the first title, as seen with "Inspect". + + @param html The HTML of the page. + @return The indented HTML of the first title tag, or "" when there is none. + """ + soup = make_soup(html) + tag = soup.select_one(SNAPSHOT_TITLE) + if tag is None: + tag = next( + ( + heading + for heading in soup.find_all("h2") + if isinstance(heading, Tag) + and _RANKED_HEADING.match(heading.get_text()) + ), + None, + ) + return str(tag.prettify()).rstrip() if tag is not None else "" -- 2.54.0 From 7d9b8b2f040dc70ba6014b87e6946b19794e7f3a Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:30:36 +0800 Subject: [PATCH 2/7] Reverse and number the titles and write movies.txt Task: MIL-004#3 Task: MIL-004#4 Closes #24 Closes #25 --- src/scrape_movies/application/ports.py | 7 +- src/scrape_movies/application/use_cases.py | 93 +++++++++++++------ src/scrape_movies/domain/movie.py | 22 +++++ .../infrastructure/movie_file.py | 15 +++ src/scrape_movies/presentation/cli.py | 17 +++- .../presentation/movies_steps.py | 63 +++++++++++++ 6 files changed, 189 insertions(+), 28 deletions(-) create mode 100644 src/scrape_movies/domain/movie.py create mode 100644 src/scrape_movies/infrastructure/movie_file.py create mode 100644 src/scrape_movies/presentation/movies_steps.py diff --git a/src/scrape_movies/application/ports.py b/src/scrape_movies/application/ports.py index 83f921b..b59c9bd 100644 --- a/src/scrape_movies/application/ports.py +++ b/src/scrape_movies/application/ports.py @@ -1,6 +1,7 @@ """@brief The ports (interfaces) the use cases need from the outside world.""" -from collections.abc import Callable +from collections.abc import Callable, Sequence +from pathlib import Path from typing import TypeAlias from scrape_movies.domain.story import Story @@ -9,3 +10,7 @@ from scrape_movies.domain.story import Story HtmlFetcher: TypeAlias = Callable[[str], str] ## Turns Hacker News HTML into stories. StoryParser: TypeAlias = Callable[[str], list[Story]] +## Turns the Empire page HTML into the movie lines found on it, in page order. +MovieParser: TypeAlias = Callable[[str], list[str]] +## Writes lines to a file, one per line. +MovieWriter: TypeAlias = Callable[[Sequence[str], Path], None] diff --git a/src/scrape_movies/application/use_cases.py b/src/scrape_movies/application/use_cases.py index e8b1146..493aa93 100644 --- a/src/scrape_movies/application/use_cases.py +++ b/src/scrape_movies/application/use_cases.py @@ -1,26 +1,67 @@ -"""@brief Use cases of the scraping exercises.""" - -from scrape_movies.application.ports import HtmlFetcher, StoryParser -from scrape_movies.domain.story import Story, top_story - - -def list_stories(fetch: HtmlFetcher, parse: StoryParser, url: str) -> list[Story]: - """@brief Fetch a Hacker News page and read its stories. - - @param fetch Fetches the HTML of the page. - @param parse Reads the stories from the HTML. - @param url The page address. - @return The stories in page order. - """ - return parse(fetch(url)) - - -def find_top_story(fetch: HtmlFetcher, parse: StoryParser, url: str) -> Story | None: - """@brief Find the story with the most upvotes on a Hacker News page. - - @param fetch Fetches the HTML of the page. - @param parse Reads the stories from the HTML. - @param url The page address. - @return The top story, or None when the page has no stories. - """ - return top_story(list_stories(fetch, parse, url)) +"""@brief Use cases of the scraping exercises.""" + +from collections.abc import Sequence +from pathlib import Path + +from scrape_movies.application.ports import ( + HtmlFetcher, + MovieParser, + MovieWriter, + StoryParser, +) +from scrape_movies.domain.movie import format_titles +from scrape_movies.domain.story import Story, top_story + + +def list_stories(fetch: HtmlFetcher, parse: StoryParser, url: str) -> list[Story]: + """@brief Fetch a Hacker News page and read its stories. + + @param fetch Fetches the HTML of the page. + @param parse Reads the stories from the HTML. + @param url The page address. + @return The stories in page order. + """ + return parse(fetch(url)) + + +def find_top_story(fetch: HtmlFetcher, parse: StoryParser, url: str) -> Story | None: + """@brief Find the story with the most upvotes on a Hacker News page. + + @param fetch Fetches the HTML of the page. + @param parse Reads the stories from the HTML. + @param url The page address. + @return The top story, or None when the page has no stories. + """ + return top_story(list_stories(fetch, parse, url)) + + +def scrape_movie_titles(fetch: HtmlFetcher, parse: MovieParser, url: str) -> list[str]: + """@brief Fetch the Empire page and read the titles in page order. + + @param fetch Fetches the HTML of the page. + @param parse Reads the titles from the HTML. + @param url The page address. + @return The titles in page order (100 down to 1). + """ + return parse(fetch(url)) + + +def save_movie_list( + fetch: HtmlFetcher, + parse: MovieParser, + write: MovieWriter, + url: str, + path: Path, +) -> Sequence[str]: + """@brief Scrape the list and write it, ascending and numbered, to a file. + + @param fetch Fetches the HTML of the page. + @param parse Reads the titles from the HTML. + @param write Writes the lines to the file. + @param url The page address. + @param path The file to write, for example `movies.txt`. + @return The lines that were written. + """ + lines = format_titles(scrape_movie_titles(fetch, parse, url)) + write(lines, path) + return lines diff --git a/src/scrape_movies/domain/movie.py b/src/scrape_movies/domain/movie.py new file mode 100644 index 0000000..1372c22 --- /dev/null +++ b/src/scrape_movies/domain/movie.py @@ -0,0 +1,22 @@ +"""@brief The movie list rule: ascending order, every line starting with its rank.""" + +import re +from collections.abc import Sequence + +_RANK_PREFIX = re.compile(r"^\d+\) ") + + +def format_titles(titles: Sequence[str]) -> list[str]: + """@brief Turn a descending page list into an ascending, numbered list. + + Empire lists the movies from 100 down to 1, so the page order is reversed. + A title that already starts with its rank, such as `3) Jaws`, is kept as + it is; any other title gets `) ` in front of it. + + @param titles The titles in page order. + @return The lines `1) ...`, `2) ...` in ascending order. + """ + lines: list[str] = [] + for rank, title in enumerate(reversed(titles), 1): + lines.append(title if _RANK_PREFIX.match(title) else f"{rank}) {title}") + return lines diff --git a/src/scrape_movies/infrastructure/movie_file.py b/src/scrape_movies/infrastructure/movie_file.py new file mode 100644 index 0000000..2ef8b18 --- /dev/null +++ b/src/scrape_movies/infrastructure/movie_file.py @@ -0,0 +1,15 @@ +"""@brief Writing the movie list to a text file.""" + +from collections.abc import Sequence +from pathlib import Path + + +def write_movies(lines: Sequence[str], path: Path) -> None: + """@brief Write one line per movie, UTF-8, with a final newline. + + @param lines The lines to write. + @param path The file to create or overwrite. + """ + with path.open("w", encoding="utf-8", newline="\n") as file: + for line in lines: + file.write(f"{line}\n") diff --git a/src/scrape_movies/presentation/cli.py b/src/scrape_movies/presentation/cli.py index 0b17b87..c35d3fd 100644 --- a/src/scrape_movies/presentation/cli.py +++ b/src/scrape_movies/presentation/cli.py @@ -2,8 +2,9 @@ import argparse from collections.abc import Sequence +from pathlib import Path -from scrape_movies.presentation import hacker_news_steps, soup_steps +from scrape_movies.presentation import hacker_news_steps, movies_steps, soup_steps def build_parser() -> argparse.ArgumentParser: @@ -26,6 +27,17 @@ def build_parser() -> argparse.ArgumentParser: default="mirror", help="the course mirror (default), the live site or the saved copy", ) + movies = commands.add_parser("movies", help="scrape Empire's 100 greatest movies") + movies.add_argument("step", choices=movies_steps.STEPS) + movies.add_argument( + "--source", + choices=movies_steps.SOURCES, + default="wayback", + help="the Wayback snapshot (default), the live site or the saved copy", + ) + movies.add_argument( + "--output", type=Path, help="file written by the write step (movies.txt)" + ) return parser @@ -43,5 +55,8 @@ def main(argv: Sequence[str] | None = None) -> int: if args.command == "hacker-news": print(hacker_news_steps.render_step(args.step, args.source)) return 0 + if args.command == "movies": + print(movies_steps.render_step(args.step, args.source, args.output)) + return 0 parser.print_help() return 0 diff --git a/src/scrape_movies/presentation/movies_steps.py b/src/scrape_movies/presentation/movies_steps.py new file mode 100644 index 0000000..dc9b664 --- /dev/null +++ b/src/scrape_movies/presentation/movies_steps.py @@ -0,0 +1,63 @@ +"""@brief Text output of each "100 Movies to Watch" lecture step.""" + +from pathlib import Path + +from scrape_movies.application import use_cases +from scrape_movies.application.ports import HtmlFetcher +from scrape_movies.constants import ( + EMPIRE_FIXTURE_PATH, + EMPIRE_LIVE_URL, + EMPIRE_WAYBACK_URL, + MOVIES_OUTPUT_FILE, +) +from scrape_movies.infrastructure import empire_movies, http_client, soup_basics +from scrape_movies.infrastructure.movie_file import write_movies + +## Where a step reads the page: the Wayback snapshot, the live site or the saved copy. +SOURCES: tuple[str, ...] = ("wayback", "live", "fixture") +_URLS: dict[str, str] = { + "wayback": EMPIRE_WAYBACK_URL, + "live": EMPIRE_LIVE_URL, + "fixture": str(EMPIRE_FIXTURE_PATH), +} +## The lecture steps by command-line name, in lecture order. +STEPS: tuple[str, ...] = ("markup", "titles", "reversed", "write") +_SHOWN_LINES = 12 + + +def _fetcher(source: str) -> HtmlFetcher: + if source == "fixture": + return lambda path: soup_basics.load_html(EMPIRE_FIXTURE_PATH) + return http_client.fetch_html + + +def _head(lines: list[str]) -> str: + shown = lines[:_SHOWN_LINES] + more = len(lines) - len(shown) + return "\n".join(shown + ([f"... and {more} more"] if more > 0 else [])) + + +def render_step(step: str, source: str, output: Path | None = None) -> str: + """@brief Run one lecture step. + + @param step One of STEPS. + @param source One of SOURCES. + @param output The file the `write` step creates; `movies.txt` when None. + @return The text the step prints. + @throws KeyError When the step or the source is unknown. + """ + if step not in STEPS: + raise KeyError(step) + fetch, url = _fetcher(source), _URLS[source] + if step == "markup": + return empire_movies.first_title_markup(fetch(url)) + if step == "titles": + titles = use_cases.scrape_movie_titles(fetch, empire_movies.parse_titles, url) + return _head(titles) + target = output or Path(MOVIES_OUTPUT_FILE) + lines = use_cases.save_movie_list( + fetch, empire_movies.parse_titles, write_movies, url, target + ) + if step == "reversed": + return _head(list(lines)) + return f"{_head(list(lines))}\nWrote {len(lines)} lines to {target}" -- 2.54.0 From 05821ef0693d1d7aaa4714202b3a22eb253b716b Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:30:39 +0800 Subject: [PATCH 3/7] Add Empire fixture and tests for the movie steps Task: MIL-004#5 Closes #26 --- tests/fixtures/empire_live_excerpt.html | 105 ++++++++++++++++++++++++ tests/integration/test_movies_flow.py | 27 ++++++ tests/unit/test_cli.py | 7 ++ tests/unit/test_empire_movies.py | 48 +++++++++++ tests/unit/test_movie.py | 18 ++++ tests/unit/test_movie_file.py | 16 ++++ tests/unit/test_use_cases.py | 21 +++++ 7 files changed, 242 insertions(+) create mode 100644 tests/fixtures/empire_live_excerpt.html create mode 100644 tests/integration/test_movies_flow.py create mode 100644 tests/unit/test_empire_movies.py create mode 100644 tests/unit/test_movie.py create mode 100644 tests/unit/test_movie_file.py diff --git a/tests/fixtures/empire_live_excerpt.html b/tests/fixtures/empire_live_excerpt.html new file mode 100644 index 0000000..2d32137 --- /dev/null +++ b/tests/fixtures/empire_live_excerpt.html @@ -0,0 +1,105 @@ + +Empire best movies (headings excerpt) + + +

100) Avatar (2009)

+

99) Portrait Of A Lady On Fire (2020)

+

98) When Harry Met Sally... (1989)

+

97) Barbie (2023)

+

96) E.T. The Extra Terrestrial (1982)

+

95) Memento (2000)

+

94) Moonlight (2016)

+

93) Lost In Translation (2003)

+

92) One Flew Over The Cuckoo's Nest (1975)

+

91) The Grand Budapest Hotel (2014)

+

90) Groundhog Day (1993)

+

89) American Psycho (2000)

+

88) The Piano (1993)

+

87) Raging Bull (1980)

+

86) Lady Bird (2017)

+

85) Rocky (1976)

+

84) Pan's Labyrinth (2006)

+

83) Inglourious Basterds (2009)

+

82) Brokeback Mountain (2005)

+

81) Everything Everywhere All At Once (2022)

+

80) Spider-Man: Into The Spider-Verse (2018)

+

79) Paddington 2 (2017)

+

78) Ghostbusters (1984)

+

77) In The Mood For Love (2000)

+

76) Once Upon A Time In Hollywood (2019)

+

75) The Silence Of The Lambs (1991)

+

74) Trainspotting (1996)

+

73) The Lion King (1994)

+

72) Magnolia (1999)

+

71) Arrival (2016)

+

70) Children Of Men (2006)

+

69) The Babadook (2014)

+

68) Avengers: Endgame (2019)

+

67) Do The Right Thing (1989)

+

66) Indiana Jones And The Last Crusade (1989)

+

65) Predator (1987)

+

64) Oppenheimer (2023)

+

63) The Big Lebowski (1998)

+

62) Eternal Sunshine Of The Spotless Mind (2004)

+

61) The Social Network (2010)

+

60) Fargo (1996)

+

59) The Exorcist (1973)

+

58) Titanic (1997)

+

57) Seven Samurai (1954)

+

56) Spirited Away (2001)

+

55) Hot Fuzz (2007)

+

54) Get Out (2017)

+

53) Vertigo (1958)

+

52) Citizen Kane (1941)

+

51) Rear Window (1954)

+

50) No Country For Old Men (2007)

+

49) Psycho (1960)

+

48) Avengers: Infinity War (2018)

+

47) It's A Wonderful Life (1946)

+

46) Whiplash (2014)

+

45) Past Lives (2023)

+

44) Taxi Driver (1976)

+

43) La La Land (2016)

+

42) Saving Private Ryan (1998)

+

41) Schindler's List (1993)

+

40) Mulholland Drive (2001)

+

39) Lawrence Of Arabia (1962)

+

38) The Good, The Bad And The Ugly (1966)

+

37) Fight Club (1999)

+

36) Point Break (1991)

+

35) Mad Max: Fury Road (2015)

+

34) The Shining (1980)

+

33) The Lord Of The Rings: The Two Towers (2002)

+

32) Seven (1995)

+

31) The Thing (1982)

+

30) Casablanca (1942)

+

29) 12 Angry Men (1957)

+

28) Apocalypse Now (1979)

+

27) Parasite (2019)

+

26) Gladiator (2000)

+

25) 2001: A Space Odyssey (1968)

+

24) There Will Be Blood (2007)

+

23) Die Hard (1988)

+

22) The Matrix (1999)

+

21) The Lord Of The Rings: The Return Of The King (2003)

+

20) Heat (1995)

+

19) Interstellar (2014)

+

18) Terminator 2: Judgment Day (1991)

+

17) Alien (1979)

+

16) The Godfather Part II (1974)

+

15) Blade Runner (1982)

+

14) Raiders Of The Lost Ark (1981)

+

13) Jurassic Park (1993)

+

12) Back To The Future (1985)

+

11) Pulp Fiction (1994)

+

10) The Dark Knight (2008)

+

9) The Lord Of The Rings: The Fellowship Of The Ring (2001)

+

8) Star Wars: Episode IV – A New Hope (1977)

+

7) Goodfellas (1990)

+

6) Inception (2010)

+

5) Aliens (1986)

+

4) Star Wars: The Empire Strikes Back (1980)

+

3) The Shawshank Redemption (1994)

+

2) The Godfather (1972)

+

1) Jaws (1975)

+ diff --git a/tests/integration/test_movies_flow.py b/tests/integration/test_movies_flow.py new file mode 100644 index 0000000..2087320 --- /dev/null +++ b/tests/integration/test_movies_flow.py @@ -0,0 +1,27 @@ +from pathlib import Path + +import pytest + +from scrape_movies.presentation import cli + + +def _run(target: Path, capsys: pytest.CaptureFixture[str]) -> str: + argv = ["movies", "write", "--source", "fixture", "--output", str(target)] + assert cli.main(argv) == 0 + capsys.readouterr() + return target.read_text(encoding="utf-8") + + +def test_write_when_run_from_fixture_creates_100_ascending_lines( + tmp_path: Path, capsys: pytest.CaptureFixture[str] +) -> None: + lines = _run(tmp_path / "movies.txt", capsys).splitlines() + assert len(lines) == 100 + assert [int(line.split(")")[0]) for line in lines] == list(range(1, 101)) + + +def test_write_when_run_twice_produces_identical_files( + tmp_path: Path, capsys: pytest.CaptureFixture[str] +) -> None: + first = _run(tmp_path / "a.txt", capsys) + assert _run(tmp_path / "b.txt", capsys) == first diff --git a/tests/unit/test_cli.py b/tests/unit/test_cli.py index b288338..13246a8 100644 --- a/tests/unit/test_cli.py +++ b/tests/unit/test_cli.py @@ -39,3 +39,10 @@ def test_main_when_every_hacker_news_step_runs_from_fixture_prints_output( for step in hacker_news_steps.STEPS: assert cli.main(["hacker-news", step, "--source", "fixture"]) == 0 assert capsys.readouterr().out.strip(), step + + +def test_main_when_movies_markup_from_fixture_prints_heading( + capsys: pytest.CaptureFixture[str], +) -> None: + assert cli.main(["movies", "markup", "--source", "fixture"]) == 0 + assert "

" in capsys.readouterr().out diff --git a/tests/unit/test_empire_movies.py b/tests/unit/test_empire_movies.py new file mode 100644 index 0000000..8ead7dc --- /dev/null +++ b/tests/unit/test_empire_movies.py @@ -0,0 +1,48 @@ +from scrape_movies.constants import EMPIRE_FIXTURE_PATH +from scrape_movies.infrastructure import empire_movies +from scrape_movies.infrastructure.soup_basics import load_html + +SNAPSHOT_LAYOUT = """ +

4) The Shawshank Redemption

+

3) The Dark Knight

+

not a title

+

2) The Empire Strikes Back

+""" + + +def test_parse_titles_when_snapshot_layout_reads_h3_title_in_page_order() -> None: + assert empire_movies.parse_titles(SNAPSHOT_LAYOUT) == [ + "4) The Shawshank Redemption", + "3) The Dark Knight", + "2) The Empire Strikes Back", + ] + + +def test_parse_titles_when_live_layout_reads_ranked_h2_headings() -> None: + titles = empire_movies.parse_titles(load_html(EMPIRE_FIXTURE_PATH)) + assert len(titles) == 100 + assert titles[0].startswith("100) ") + assert titles[-1].startswith("1) ") + + +def test_parse_titles_when_h2_has_no_rank_ignores_it() -> None: + assert empire_movies.parse_titles("

Jump to

2) Two

") == ["2) Two"] + + +def test_parse_titles_when_page_has_no_titles_returns_empty() -> None: + assert empire_movies.parse_titles("

nothing

") == [] + + +def test_first_title_markup_when_snapshot_layout_shows_h3() -> None: + assert empire_movies.first_title_markup(SNAPSHOT_LAYOUT).startswith( + '

' + ) + + +def test_first_title_markup_when_live_layout_shows_h2() -> None: + markup = empire_movies.first_title_markup(load_html(EMPIRE_FIXTURE_PATH)) + assert markup.startswith("

") + + +def test_first_title_markup_when_nothing_found_returns_empty() -> None: + assert empire_movies.first_title_markup("

x

") == "" diff --git a/tests/unit/test_movie.py b/tests/unit/test_movie.py new file mode 100644 index 0000000..a7d063b --- /dev/null +++ b/tests/unit/test_movie.py @@ -0,0 +1,18 @@ +from scrape_movies.domain.movie import format_titles + + +def test_format_titles_when_titles_are_ranked_reverses_to_ascending() -> None: + page = ["3) Three", "2) Two", "1) One"] + assert format_titles(page) == ["1) One", "2) Two", "3) Three"] + + +def test_format_titles_when_titles_have_no_rank_numbers_them() -> None: + assert format_titles(["Third", "Second", "First"]) == [ + "1) First", + "2) Second", + "3) Third", + ] + + +def test_format_titles_when_list_is_empty_returns_empty() -> None: + assert format_titles([]) == [] diff --git a/tests/unit/test_movie_file.py b/tests/unit/test_movie_file.py new file mode 100644 index 0000000..1e0660a --- /dev/null +++ b/tests/unit/test_movie_file.py @@ -0,0 +1,16 @@ +from pathlib import Path + +from scrape_movies.infrastructure.movie_file import write_movies + + +def test_write_movies_when_lines_given_writes_one_per_line(tmp_path: Path) -> None: + target = tmp_path / "movies.txt" + write_movies(["1) One", "2) Zoë"], target) + assert target.read_bytes() == "1) One\n2) Zoë\n".encode() + + +def test_write_movies_when_file_exists_replaces_it(tmp_path: Path) -> None: + target = tmp_path / "movies.txt" + target.write_text("old\n", encoding="utf-8") + write_movies(["1) New"], target) + assert target.read_text(encoding="utf-8") == "1) New\n" diff --git a/tests/unit/test_use_cases.py b/tests/unit/test_use_cases.py index b2d17f2..427a1f1 100644 --- a/tests/unit/test_use_cases.py +++ b/tests/unit/test_use_cases.py @@ -1,3 +1,6 @@ +from collections.abc import Sequence +from pathlib import Path + from scrape_movies.application import use_cases from scrape_movies.domain.story import Story @@ -22,3 +25,21 @@ def test_find_top_story_when_stories_exist_returns_highest() -> None: def test_find_top_story_when_page_is_empty_returns_none() -> None: assert use_cases.find_top_story(_fetch, lambda html: [], "http://x") is None + + +def test_save_movie_list_when_titles_are_descending_writes_ascending() -> None: + written: list[tuple[list[str], Path]] = [] + + def write(lines: Sequence[str], path: Path) -> None: + written.append((list(lines), path)) + + lines = use_cases.save_movie_list( + _fetch, lambda html: ["2) Two", "1) One"], write, "http://x", Path("m.txt") + ) + assert list(lines) == ["1) One", "2) Two"] + assert written == [(["1) One", "2) Two"], Path("m.txt"))] + + +def test_scrape_movie_titles_when_called_keeps_page_order() -> None: + titles = use_cases.scrape_movie_titles(_fetch, lambda html: ["b", "a"], "http://x") + assert titles == ["b", "a"] -- 2.54.0 From 655aa6d180d3cb764c724252f97aad3a9ea367bc Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:30:40 +0800 Subject: [PATCH 4/7] Generate movies.txt Task: MIL-004#6 Closes #27 --- movies.txt | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 movies.txt diff --git a/movies.txt b/movies.txt new file mode 100644 index 0000000..003a005 --- /dev/null +++ b/movies.txt @@ -0,0 +1,100 @@ +1) Jaws (1975) +2) The Godfather (1972) +3) The Shawshank Redemption (1994) +4) Star Wars: The Empire Strikes Back (1980) +5) Aliens (1986) +6) Inception (2010) +7) Goodfellas (1990) +8) Star Wars: Episode IV – A New Hope (1977) +9) The Lord Of The Rings: The Fellowship Of The Ring (2001) +10) The Dark Knight (2008) +11) Pulp Fiction (1994) +12) Back To The Future (1985) +13) Jurassic Park (1993) +14) Raiders Of The Lost Ark (1981) +15) Blade Runner (1982) +16) The Godfather Part II (1974) +17) Alien (1979) +18) Terminator 2: Judgment Day (1991) +19) Interstellar (2014) +20) Heat (1995) +21) The Lord Of The Rings: The Return Of The King (2003) +22) The Matrix (1999) +23) Die Hard (1988) +24) There Will Be Blood (2007) +25) 2001: A Space Odyssey (1968) +26) Gladiator (2000) +27) Parasite (2019) +28) Apocalypse Now (1979) +29) 12 Angry Men (1957) +30) Casablanca (1942) +31) The Thing (1982) +32) Seven (1995) +33) The Lord Of The Rings: The Two Towers (2002) +34) The Shining (1980) +35) Mad Max: Fury Road (2015) +36) Point Break (1991) +37) Fight Club (1999) +38) The Good, The Bad And The Ugly (1966) +39) Lawrence Of Arabia (1962) +40) Mulholland Drive (2001) +41) Schindler's List (1993) +42) Saving Private Ryan (1998) +43) La La Land (2016) +44) Taxi Driver (1976) +45) Past Lives (2023) +46) Whiplash (2014) +47) It's A Wonderful Life (1946) +48) Avengers: Infinity War (2018) +49) Psycho (1960) +50) No Country For Old Men (2007) +51) Rear Window (1954) +52) Citizen Kane (1941) +53) Vertigo (1958) +54) Get Out (2017) +55) Hot Fuzz (2007) +56) Spirited Away (2001) +57) Seven Samurai (1954) +58) Titanic (1997) +59) The Exorcist (1973) +60) Fargo (1996) +61) The Social Network (2010) +62) Eternal Sunshine Of The Spotless Mind (2004) +63) The Big Lebowski (1998) +64) Oppenheimer (2023) +65) Predator (1987) +66) Indiana Jones And The Last Crusade (1989) +67) Do The Right Thing (1989) +68) Avengers: Endgame (2019) +69) The Babadook (2014) +70) Children Of Men (2006) +71) Arrival (2016) +72) Magnolia (1999) +73) The Lion King (1994) +74) Trainspotting (1996) +75) The Silence Of The Lambs (1991) +76) Once Upon A Time In Hollywood (2019) +77) In The Mood For Love (2000) +78) Ghostbusters (1984) +79) Paddington 2 (2017) +80) Spider-Man: Into The Spider-Verse (2018) +81) Everything Everywhere All At Once (2022) +82) Brokeback Mountain (2005) +83) Inglourious Basterds (2009) +84) Pan's Labyrinth (2006) +85) Rocky (1976) +86) Lady Bird (2017) +87) Raging Bull (1980) +88) The Piano (1993) +89) American Psycho (2000) +90) Groundhog Day (1993) +91) The Grand Budapest Hotel (2014) +92) One Flew Over The Cuckoo's Nest (1975) +93) Lost In Translation (2003) +94) Moonlight (2016) +95) Memento (2000) +96) E.T. The Extra Terrestrial (1982) +97) Barbie (2023) +98) When Harry Met Sally... (1989) +99) Portrait Of A Lady On Fire (2020) +100) Avatar (2009) -- 2.54.0 From 2553960dced87aa4cd6b8c991b78674d0bf5e0d3 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:30:41 +0800 Subject: [PATCH 5/7] Add movie screenshots and document the movie steps in README Task: MIL-004#7 Closes #28 --- README.md | 46 ++++++++++++ docs/images/movies-1-page.png | Bin 0 -> 86155 bytes docs/images/movies-2-markup.png | Bin 0 -> 9483 bytes docs/images/movies-3-titles.png | Bin 0 -> 35394 bytes docs/images/movies-4-reversed.png | Bin 0 -> 35089 bytes docs/images/movies-5-write.png | Bin 0 -> 37099 bytes docs/images/movies-6-file.png | Bin 0 -> 40297 bytes tools/capture_page.py | 115 +++++++++++++++--------------- tools/make_screenshots.py | 17 +++++ 9 files changed, 122 insertions(+), 56 deletions(-) create mode 100644 docs/images/movies-1-page.png create mode 100644 docs/images/movies-2-markup.png create mode 100644 docs/images/movies-3-titles.png create mode 100644 docs/images/movies-4-reversed.png create mode 100644 docs/images/movies-5-write.png create mode 100644 docs/images/movies-6-file.png diff --git a/README.md b/README.md index 3b87547..65268fe 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,52 @@ A short summary in our own words; it is not legal advice. - **Commercial use** of scraped data invites expensive disputes even where the scraping itself was allowed. - **Be a good guest:** prefer an official API when there is one, read the site's `robots.txt` to see what it allows, and send at most one request a minute. This project fetches one page per run and identifies itself with a `User-Agent`. +### Project: 100 movies to watch + +The assignment: scrape Empire's "100 Greatest Movies" and write `movies.txt` with the titles numbered from `1)` upwards. The code is `infrastructure/empire_movies.py` (parsing), `domain/movie.py` (reverse and number) and `infrastructure/movie_file.py` (writing). `--source wayback` (default) reads the Internet Archive snapshot of May 2020 that the assignment pins, `--source live` reads the current Empire page and `--source fixture` reads the saved headings in `tests/fixtures/`. + +**1. Choose the page** (the saved headings of the page) + +![Step 1: the page](docs/images/movies-1-page.png) + +**2. Inspect the markup** (the 2020 page has `

`; the current page has `

` headings that start with a rank) + +```bash +python -m scrape_movies movies markup +``` + +![Step 2: markup](docs/images/movies-2-markup.png) + +**3. Titles in page order** (`select("h3.title")` and a list comprehension over `get_text()`; the page counts down from 100) + +```bash +python -m scrape_movies movies titles +``` + +![Step 3: titles](docs/images/movies-3-titles.png) + +**4. Reverse the list** (`titles[::-1]`, so the list counts up from 1) + +```bash +python -m scrape_movies movies reversed +``` + +![Step 4: reversed](docs/images/movies-4-reversed.png) + +**5. Write `movies.txt`** (a `with open(...)` block, one title per line) + +```bash +python -m scrape_movies movies write +``` + +![Step 5: write](docs/images/movies-5-write.png) + +**6. The result** + +![Step 6: movies.txt](docs/images/movies-6-file.png) + +The committed [`movies.txt`](./movies.txt) was produced with `--source fixture` on 2026-10-28 from the current Empire list, so its ranking differs from the 2020 list in the lecture video. The Internet Archive answered `429 Too Many Requests` while this project was built, so the snapshot is read live only; its `h3.title` layout is covered by a hand-written sample in the tests. + ## 🧪 Tests ```bash diff --git a/docs/images/movies-1-page.png b/docs/images/movies-1-page.png new file mode 100644 index 0000000000000000000000000000000000000000..91ff187cad8bdd58592d44da2c8748bbbe808565 GIT binary patch literal 86155 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

FJD!7?@&x$sIByRX8fVY=PY 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 literal 0 HcmV?d00001 diff --git a/docs/images/movies-2-markup.png b/docs/images/movies-2-markup.png new file mode 100644 index 0000000000000000000000000000000000000000..053ddb18fcd0158b6b9d4438405e0f5ed7c48ad2 GIT binary patch literal 9483 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 literal 0 HcmV?d00001 diff --git a/docs/images/movies-3-titles.png b/docs/images/movies-3-titles.png new file mode 100644 index 0000000000000000000000000000000000000000..3244fa3d767042f6c06c4a2b2d0df5abe16de529 GIT binary patch literal 35394 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 =yhjPF7S6MuZk>}0`KCoE>>IbbQDAbb% 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 literal 0 HcmV?d00001 diff --git a/docs/images/movies-4-reversed.png b/docs/images/movies-4-reversed.png new file mode 100644 index 0000000000000000000000000000000000000000..8dac658e9afba171877914f8b730bdbef8aecdca GIT binary patch literal 35089 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 literal 0 HcmV?d00001 diff --git a/docs/images/movies-5-write.png b/docs/images/movies-5-write.png new file mode 100644 index 0000000000000000000000000000000000000000..d6258e177003297cfd647dfe12b0560684d9d116 GIT binary patch literal 37099 zcmbrmcU;c`4FBx%u}NLpIjTT5HC zclYz+ILA5PbAI>le%$^zIjQUVT%XVT{dzsu>+Pi=FHN?Yb~6zX5!opjDMccpwY)?` zYwnP&#dm}oW(tUi9=tjwC81;!Hnwc5w(a7g;1c8Ge>;KIiW8_&wM5OTRM(a2_E-N(QJ4ADZpF{rT z2LJuX|F56RzxI#e9~;ZJ z`Q9@zVcyK@D50bsyn1A5mF}o^pV+7~v%CC@iWl}yi${4L+`V`2pxoogsHnq{s%s>_ zI&AD)e!3Dkp5*aud3Z zhBx|$hgWu+)od5FpOM>7m7SZrjpTM)rYXZwb1BZCeI&=3{01#^JUutMAEzWCzL>00 z`SD{wnckq{>dIm=?$NFFTS$nHYioCR7kSn)ZT}d|Yf$XHeRXNlH#5^(U;mjJ=j`NU z?v36L_;-7?M<-)!?d?M!Kc*nL-PqW8rQ(tHiD%EA88yBP<~M4*L%FX;s4MHnItdB} z1_o18QyQP`w6sDudT=G74<5Lz$nB%@;-jtX=;(O={%KTH_e6ii)vH(M4*5Q^v$d@q zvSbTnqab_)5Eobr>mT6cFI)|vg<;l1tblVib8o;Y>CTOXzylS{k7YVhk~?7P(3 z9UbW#R;+_ddbPXK_etMhTAu9^Tb|msa%BAg{#{xl&9L^-AyuI>#zsby)6>OQ=PCD{ zbXZ-UP1Y>D@9q7tqW|*c%bPZBBK)tH*QHdQ^(&{&ru!ayoNHccH@UK~!ZpH`h{t*_ zZQlle(qW(Bz@-Njj}GOU_m}U`bdX^7pT)zx*6}>UH^D9LjWV#>j9<}-QS<`v>=Jc>Ku>{k;eb^9b zrdjsEy^!VLTepq4dlE`lw6)(3Op?rKPg6a$J_7v9ZJ4x9(4$KAi~_*hG9w z-o!{x@4X(6FTKd+3l}m>+A{9kA=%*O%2-+-e?DGm_&%L5K8CT0iLQ>$@bK{F&6~|G z(@RijYIX&(U;I#992gX&s;X+*mT`vJUp>e2RKIV#dPUHqM~(IMHgf zzj%9T6$!XG|- zrCqdvj*iaKLgdMm(p;%qHoK=e@$I?bES8+XQ?1*wm9FO(+gY_6ACf$Dg@%KZQ`Edq zMpswY#Kc5H<4Jgjb8vOlqtnyVv$E#!gHN73X;wUO;)Jv>{dO;@z`(#}MUjQ+CQXag zk^;xYl%bH25HBw;F3p1ahK7DKK{7J3!B~-%*8NnQT*V&?n1r~xO2kEPXTKn`|KZ%6 zjc7y{f8WUPFukDJ=c;gFom4?Fv99*^J>eRcFNZvS%tAr(RPm~WgsTF}dvCMLon2jG z`}Xx>1sY0rO6@y|Qcn^%R~|^yB3i zNq8*2e0=$m!_m=^E$~Hryw{0mU+~P-9JIClAePM-QjuBbdcu+aRrS%S? z&f}f=r-L{!UOizyvjZgo`$ZnLEzA}Hj=IFtX&8fNx2?@E2bjx2VLp{kE*jAV%HGOySG7Abe zx3;#vc_V&)vQSKry5w%&>;Ck#w7YljHd?)rwLPZc8#w;sW=@YZH6^K!^z@j2?>T|x zoohWllXYl`wkNGS<>j%U3c91_Pm_|qqBoV7mxqOgy+}wX*7;r$#P!{mZ2NPEf85M_ zUkfxH=SyGMe)}vTA+hG(Nn!h$mpukbEy7|GpPiHT-jgGV=Di%3UZDJO#}Q?|p?hQ9 zR8a}vdrP(uuboPlW3DJKH@CJfw4HpGm^kJ^wwroD%9IXW;Xo4y^=3-q!@Rsjm%BcG zd>J2qs^ja~&QWn@|Bm){0TZk_uZhV?N@82=KinODK0dn!$~|;+hk`10k$Nbw7@L}& zm6!jT+8?VJFSB3v^y!L^A4h}E-tL-EjOROYq^YQ=w>8~JUS1yCarB0}NMlN_z@A5e zJ4lGJo6tWVJ$i)hcK6O5!>d=j&9h~?@+KD>#!F86cDB&Y37=s0*A`>sEx+{EjcOptI z>QhQeO7aB1#M3nEem6fkusTt}rE>22^`zk7OG--hm7zycyIh{fosG!I%;dWCN(zN4 zIFZEt-NT0utHoB^KYdcXc(JLf>i)@?*k{jP4A6!P|ajNt1@@^p` zqvO98FrnLzt-5>n?$D4Bxie?n+}yCi6Xhy2b1c2&&!ay3iY~Bl zbAM}jZO|;T+o8NZ#c21|it<9o#Tk6d$;s);l`A)I-V_oN!kRD2nNVu%m`!l@B|C8Q z8rf3##MDq-{P{RqYpm0f$A@(TT8OJ=jkv`o-g|8;To_J>k@o%4-ybgKywYY`$j{F| zb|dbX^7KCPm83nRM$B}&;n}N&*@H&q)ZTOPbG6mJb4`KXaDWj85tRwn2dGi z+i#aXobR-}fKFXdP@w5FeS7zKo&~5n*8tBaMgBo<~PB2?$vAmj{Zi%ikMnM zv88WrJ&LNC*Kb-`oz&zFmLrx((k!HBVDQzH3=`Os6gXg>&B@6bDqwOv^Oe)GU6_yV zm1}n_YF85y0|R~76^c3K7a$V*NAj#`My zwOGR7%t-PuBt*!5#+cc^OpCiln?LWmmG?CUTW;%qh5NLt<2oULy#aR+<0 zOx*YT>Lx9(u6%raxXWSk-sb5wj#mNIcW%wMZ9Um~hxyY&v}fpp@}x7WZPnG)EiLnS zjLWZ%10RobZI>2LD=^G2=&>uTXGFCrDTxCRF1b(F(9p2_O1?%Km|#3iLs{9~>cAQz zm)7Yo1R%eTm}eun(Vr0iKQa3oGhaDBKfn9;@0Z$NpB`>7{F=P?@Ud13@Q4FEB2G(! zLPDr-w6>rG>(i z9uKT7ncq4%Qd3iN)Zz=H~6QDJj)B zGqba8zxNb-TfAy9E*{}tB5MEnCOJp&0D_CU`}+DUk4U0^0b~QEEj(Z$?r%p-8*SvZGGhM;j4y*Sq}5&moL-W#q#L9ztfRx&0ghz zJ32Krg$s@pxs9E}%*;%@HYz>+CYDjTaaCuh2DAV69Xr_P{idgr-QQPZMWB4D z52&SIYq+=jND5y;`Cu~P&dvG^w={l_iWflNT(r3mE_9PEP_`pgS6WiiEiutVPEJl; zT^)TyUA+ShdHX&NbFUcX7^7e(*chj;j=~8Mn^`9vrvbGhQ^eMoRO2GAPzoip?~4Rqk;m_K-q@+da3F! zR9?5m842*}&6~)Jq5J&Hyo)I8_6Jo2%YmB=m;n678b7q1C^7nRrH$!E~aLJEdWk?^L~6HV&C)LOEtrI zC}$M#UNg_eFCd`r%NKo9Qvx_z`Egy&WJ-FpVot{z85-F2cy`_6d_Fj6n5|Z&#eMs@ zw!OW*xjB!JIwM6|dOCnTwi7TsHxpBIY^-}lzs{Eb>Dl(}LJ`$iZnd?w=kjhoJ%+x- z&Ytl8y;QMR!iB^f=T#>lQ0voRVMBw1d;$V97YUo(-Xzj)5-4yH3*+F~CoH_L3kwVL z^Yek#(f)D2Oxv?ux9_5*6~G^Ueq70hjT=D=Xv0@PRt>73%%f-o24WH5RX>IvNgg?+ z#z6x(JP7t9d*6(mgJZv+Oh!gV{`||;{JXq7JePAUuNoU0pFH`YaCOCJdu7;Bi%(Ba z8B~SY4%{MM+a2R8>h0x)t$V`C%1V<^s6+>im^Zj}fBE83uywG8byFtbbWjkU(xZoX zbq-Q;@~)hlM$kCWA)OY-j=a26sc+hx(v6;p_H1iw>wS@4jkBq^czwrL0!mBP^i@A+ z(w?IT)JdC zSQGW`-SOh>Nte@K0N}rT`LfPKz_fD|KhW67OhNLsGau}?CcY^tlTaCoKDg+ql9Q3$ zG&4ihJfC>h*zg{m@S~#cJ;GLUWvb`b_2pm33ROt%%sb&jbLi5m+r>KhadArMt0;Z+ z^rE&CeNiup7CSu%GT1)GXL7+*3=GLO$^H4z0?tG!h|c%9zBXC<TlrMvrDBud#FGJI=ojV2b)8WF_7cO387u`(b85`Sw zQPVLUGR0nJ;@Yemy?D)LW2-nNy8TpFZ9P$H{SThisRMLhyLN3@csN#u(Y0%e=g-$} z*zaEkJn}Vd0&nu|+czgMV?4RXY)x_+8X9O-yN_Ha-Lwf!Yx!&LI0!Sffy}8>P6sJ_B;$<}s0O44(oKp$el5z|h_@x7bfbqoxG{QPRK=DdE*>sdqqV?u=x zYOYaYcreg;-@wc_LIWK)L0a_bh)Lutq!xb^uI<2IrpzwKo-1O>I zh#V~?fti_^p0{sj{avn#If1)tDHJXnyP5bF;4v1}(&fx8%Nu#|Bl^Hf*V!oSa*?ZfOb$ z3JMx`6?9ZrpJno!s*o1o;nCp<24^|M&W?*vm69TMdpnqFi zJ~<&_o0k+YB-ARvk#PM`UW5DY?kB99V%*G{QK4&6ZE;meNlAOQ#u-TiHTucMg1`^G ze)y0|AQa3J3~C=|kdMfojz8sy#Kc70V=Ow$8#mr+ZugS`wRB#bIdqG0q%pB#%xt)x zm004r(u>egRYgUpC+l$HgA|kmjqg2m4&N64N&-|!=SwKbqo~;KD94Ia?ABN(o zlbTg$3{46h#bLnL~N}YdGijiW&)V|p})dSFn2L}hA3)pmg`0$~;obB-8b2oZkC@0`;x~`Ju2<;Id za?x%JH83@0*uFh5AfUcue!awlY>NR==M}YJ;cslYmP1tG@|o%B#UJ)fJ{tl&~p8^X9E9?ByWHmko9_rZWs3G5F)FXTQTqQPqZ+d3tnF0$Q`r^#k zd2YuRY-*i zOH0%)Fx+(ux|%H1&z?Tz!0!dqzG@jI+bs|#>X;K1wHNYN9Y3*eiSFx`m6a9v0a8ro zZWwEI%cTHOiag)9Rr30HYTSNQc_WQp7l;S z;exV~Qb1r}`~YhAocQZRPY(~&h}-V&Wb<`oE<6y|D!R>}^?HcCx)J#nKeY4tz?Vap z(+tZV9^jza^6t~(t&-jY2M)M6-d>a^fksr6aUz~DSf z0D5^Jr0`u2tvrf05OJsE6TB>!az+bAeEoOd?|1YCzpv4kOC zD;D6hvk{_#p_2dxlauURT+$vgt4@VPJ4LHqB5Mr?C6At9ss&<@4-<@Fz#kH)Y85y^z7VBj=_FvlVTU zj;?O)7Bw%acLS4vzAJOR?1R22vC{^8+kTwGjBOw@id5E}&{LJQ}T)z2@ke?uWw zt1Kz0i^2=HhMkR#ii9{^cFX3?OUuhBCD_o5D#c)u4<1keXsmTLLrsBu6xpIhN&J0c zBD!u!iA|Z20*iW}ua8B4r(Il5jt~?>NK^T|BI?#{O#fzl4RUqCT^jAoSG{on)k5y< z*+R4KwXKswV`C;dI>#9)fER-fsXm*?sL4J5FMb`MTHM+0;o%(Eb5Of++h&^?S$Kl? zP*Bvgw%V<(I2!9%S0=z{`}*~3Z?CStK69X~aO`1+0YyA?m{-MUV7+5w;laVIK^4nO zOV``8Zp?ktp0dD0@RxbIehbY5nWxZf%>={HjNWV=yq3zRq{75baNjiOez2}i8^fV>$xlvbWCK+jI@41e{@x!fzm;LqY!Rg-FEiT>L zf*)~d-v8oYWN3KD$7e)nT?ltueSO+^*PbIsGSP>Pn^Uy$j35>-jU*Q)Y2Wsx*?FoY{6f2v54Dr3F}om!Dt6a$isk)vI&yq#(8(p}5o%0qWY&I?Koz1?MVPDh>9I}0V$rq$-*R69KFI=Tp-Cdry88L88|j8#7<9QXs0*D}q2_kx*}5^7zPeJ8q?SEVyh9US7&PI;%jv@dD3`I| zLPa3jcw)fAI+f1jQ0h^+I))@q{1-}8ct)1X>$GI!DjvBME8ttwJ2`JDl%JF&zn|(T z^kqT8NRbA?6N8!haDU~Pw;8A|&n>Ujnw$C(E@E$m%8uSrxICk(rq&KFB2>xfC-YR1 z)&2O8{r1zcvfxw}7L#bHS!$d!W|q#*tFS^AXU8)$G9b=({b4Yr!$XA7KHi)f14#?m zk|5ve9LR0E@CQ!QVf%&CNN$;Bt8Lr1jj!0|cQxqjp5N3U@%ie8jtqt09W?LLQAf3V zdwT(n_AxO9oYlWE-YEkA5j6lPn0cON(_u!&&%jyG))nKYihXu?A5;hnkB*NI ze*AcDqW?5hv8|qUH8n1cyAB=tr|lO`7tO{NIQ-?yqksUVbLU(y^!{}6%G364UB;DE6$tvM`smSRm6ghQPe;Zw6p}Ua71cJ= zY22amDF&v3*aE)Xm!EL!U(iomO?GuZY+?ie685A zoIw>gLNepyH|4vCcReiY^V=sq(<}dWp)w_NaO}uh*T}w}K^p-eXAYK-;9#iRQ5_y^ z*k%wqRcuBM;lut^-j^;Jp(P>S}9)u^5^r-LVX&25ZsR19!<`7X|DMsz7XloyrSY3!nAm2OvA# zlZ~~rvH5%?`G3&#NKm+rp`i@3KbFW2PBlU26^G*QHF(q}rly*&^t^C=JPA~r-2nno zt+FBUg9L_$)7?9H`pg++b8Z>y&0DshgF}T*e)OrPhWj`D&!b0dweu47jvbjQZwWbv z<%MZH0d|krxARVGzCBUrC74oJ`N%vV8k6U|x)P-6)N<7r@*hF}Ycgvnl>eJ?R1c8X zOp;{HbNKL4I2#K&+1bGr{mlFK_x1NrXB`p<&DSpSK=(Yt$A|B*uGAvqk&~5W+?uvY z;=xE$GLjzjx#cZcH)1j~kF@#~|I!5;f=pN?IcUb)vw8RK)yB<3uOH*PM&v2Qlx;VC z4T&Rc)7sWn@47q!h$9z{<1B-PMk^KSsSXfv%M$ZLi6?}N>+}{OC zM$Z)n8b`XCs249bi_rfs%D;2S{d|24;eK+rzxo~CN6fsncZL6KllRp_Gr<>q$XqZC zlEJhfv8DLi*)62@%d72wiINg3Yl}#IOHltelaogrvz<_ASW}?+S+b^yl0yAVFwgqs zxYLEnyIl4L{gNfO^_TR|a?LrplD~DC`e9kIxqWm6)c>3Q_^-g9yM5nzJ-w$fF}j7x zG(?dekiN#?J}9YrzOFQDSoIr1frrT5(ceS74uYxnCXI$&FvtP%Aiep`)(Eo~0wvwP zP29I!Us7)W%h%c`Nn9mRq#W^NjjLz{mHl02HrUng-rahu1;WD`OcWr+RBOmbPVQS9 zBOOy_-k7NB8OxoLmbNsUkep%M!V~E$+?r?0>wdf?-6*K%J;8GA>jMnjcTEdD{P5w! z>Tw%4Ze-VA8sUN#0y5}*o{EZUVMVR}ZPZrjdT~LUZ;T6C`}qud0o3b0eOj0!y&3o$ z`XA)}Kcjyoj`+~~_vIB7YQXJlH;(Oq2>bLY*lbiR{3AYE6YO#aQL#gZ&U~l*$QEYu zhTB)}7w+B?=l_ckBt5Pml7^yzKC%_2I+#Y1XAsQK+ncrplrhxq00vgy#y>PXY;{J2 zUkO=&+Bm!FU|uZC4eQry&u4FxfgD_DT^}~?LYlHhD0)NO#2nDs0t#D9iwHz)w!{3Z+}zxUngmV&^)>*WW_L2ZpUmwmD<1}jhtc0i&)stwuJ67> zt3c(opNs44eyW?YWXB9ysJ+9()giyd4Z*mCI&|=0+{hCCir#}NkH8j;CRiPiE)C2H-<^F8=y2=gGuHFZM!O1~f$ONeh;#K7ZB-G$gGT%Q zJ&d)qj0{fI47nRI$bn6N|9;fGuN15AfvAzGDfy;NH>|A>Qjj3zfb0`V2pP?C_o=u# z2(03arTF}1W#_WD7(xwUzwmMnxHK<6AKkCtJUb$yi=b)jq2ZuO$jb|ZU96JgBE{5^ zZQ)te9T~2Vq+4@1H?x2IW7kcEWXjL;u1QnN^P90Hmo_v&M7;;$UH zKFNIkd>z77+`)2T3{MR;E}lPs{>uHpxw*N=k9P`$s$agmfKUZK(MFL`r=icEKc^u4 z0E0;W)VF8y(61F?HrCeEXc-yp-nQ-h#fuje6kHzB?%H)Y_#5ad9CHN3rjd*sBgqD~a07dEhdk`Xf z*@_L{)|vMcTd(3n2~NuFr;1mSjZz4>6eZ5sjCd6=705KW;Y<;^7|Uy|pNwN+n&lVc zP>Dwl3!oYWV;_wV5Yu*_Z~N*HYC*CGhG%W2p`N0N>TmSpbNKEv=;d634^|Wu72oN< z4h;=u5V3pTZ=M=gy12M#pr_Yf=v??S?gx(yP!G|-#Kbd)Cy&geH`Uj}fOnXm05szC zEJ7MU+_^X=7TPyH6r4~(@~)!d_3PJ2qjaQ4T?@Q8c1N*0MFOTuaY+f@N?J;a{oEmwL<>Q=@R7C;7WRkqqu{^v54w%+DADF$3%hBckccV@4VP> z24VuKOx}FU)Bg>y8`KR)E~U10 zb~+^&At>YU`Hd^$z*CRAE&riplcjpoRl=jQo%^I@+h?*jGW;;J| zMIiLveY@lKlS*wD{?}l4`Enef@4W`B^(mS(lu0;Jty@)C1!T|g|DYhd@{6$RYKAV9 z{7MYUKH=(Y@ojJUE_ z$ZE715!SCsA3HD2)AJuWqI&5PtEM)wM3&lhV`GjPfxUYP=*p39*DhO#0cfMd5(S{g zK$AaJ+!)U(g9yhA`0JL&3(wERXcRhi4C!QM8tmpK-RGa5zYMmqJvW7t7>3VLhq;uV zCYz6F=N=htS{UuEwA!RLZaZ*|upEu1u=ZDn3YiQk6YiV(DKVUEeghwvK6pE`9aE`lf}k0ZeH`h{c(3yv)wQ$0vF++y4dId2 z)qx-Rl0HT76k-!F3dp_QX9O1>mg&K_Lo}!=LafkN*LG25UW4wO{L5BW7ERBdJ!@fM0VD+`2nP;yA?gIKZgr~eED{qUI`2s|H8l|%1nWt! zyQVDM=0eWiCe&&%*5B`bKWWGhx4McpSlHe0+5m<% zQGH@229+VGxA9N_VMONJ&*~I4XI$?X9v!_~pwAOba?5hT*UDL0qkrFKPoBUXKE-&b zaxyZ__(>p_15}&j`;|onYA7j~{E&u5UWFp}nj%R8aL9MmlRl% zd=iET9_-M-KoHD18&;2%Mf#sy<{CCA$t@`h5&hNo!sv-Wo8{f?!F$cc8!FNpmS)62Jqr&qfr-`{jjP*s_)VXH@OV%! zU4~t!qoV@{*4@4MYe#M^pO~R+6t)8G&YfX`H+n!Cy^k&^U5D*7$9Pg4%jyrqVLpHt z)_G!ba&=i5sK<~=(#O5hQ3}W;K#UVQV{K*i#Y_+p7xe-B^?w6_$4{dgV$sWP)3nT1v z%y}iOq!;fZf_bKr6EN!#EBdkNROlH&V0MJd<5kzXG71X|A3V6Rk_kCnXi1uMbm5Th z(L4}$De@%O^?H7lF9d-LR1jBjLlYDA4C7!PLIUGgqQN?d^th%bg9JsfK`OAS>gCJP z$*-{rK0d_)0iJ+&s`7Og68Ess3Y?a67*w&6Jx=KXLjNP~H^#RvWWE_KEO-*(-i*{# zFCQOCil=F5kYP>*TYeGDjC62xB+T*b*l|%qfH zd%^6Hp;LLOC>obFk!ghlazu4p-4OIACcjerVu=PNzVX{jty!rR!f~=3X_kDU1HYzW8tJx66({6f6 z!O%fphTUJ2Q0Z5uXH0a5=Rc(4L*a*YPfAI>M+m&AsHmc%Vs^B}O+y}q9HA`GPjn!p z9Y));>ppyVR;LiqnL+p@35#-o?vCGk)-Qy1baob;kH4_-Ky?%DAgHL}!3Nv}#93gB zm2ZdAKoFI4tquvax8p5JOG!c{zHhy!#(9uxwc1_x2lT=qmhg?9_mC=&iHHQY>!5p? zy6p<8fHoalHw4o6*-Q|$7zo$!oSt4^qG~208Cdl23EEJIfdC_w1IzRPS;5)isNe}g zzYKw&pm~|Fe!3l*(G9U!VUWw$Az$J<&CwmBz=AqoS6~0Jva*=DD)a~n?WuIOQ?ZJc z+^YKe`ldnoEubX1+1VzoX{Yv6^$!fpW>No{aXfS{8JCCrC2}7^EbZ^#6B}&~mb;*? zZlbO2T9BBK5X!B+HX{-WCCE{B{~98#EOlN=lG}tJJ~Q(dNR7aTe`>BU<)*Tpz}QXC z%uK$Ve(n2eGjf{@!c&~;IZ|Q-0N)G?li zv<6a#8*iHTeYXL?gr){dp8kc9!(&2gbXr)A$oQiZkB2xYU=g!YmmiF9m_S;G^wfIM zX53Fw-gTcs3FEWRN&i15=9ddv$?Jw25-{oDd2J+x9nF6KZ<+aBR{xPCDCO=9MC@gb zlmvb$_C!w)kJYFO%s^OTy1SGJ(2#>;C+SHQmB$aSYHW|F^j7?`=H$Y}ZK)ShrgpK*gx!-{vaboNW=8o4bgdEM_fWd$hBrTFc6MKY2nQE`QP7 z9RvmS@npmfdTQ!4jLz=ebeiPW&fUAuKIV?f?b`taJ3Bke#m>I_cF1obfM{s(0J(VF zlE;q|Vvmbog;Bd+vcOP1eE0^$D4;bI$#)MoS3N%LR;gcTH|;IObhCAHmEwyrS&T`9 zl=ck`&DTmZpji?$fA1D{Zj=jPeJgA0i#&ytgXrqbEiG5{^ejW1pgKTqPeo`iKA!c^ zAAP00TaYkwy8hTL&6=we^%mV#B`x;D$MbjW#{P$7TnvbXcO$dYZ zw!um~s5q$^YxL-zt+yDVi=n}uJjfIL5mPcRJ^n51nC3ATSfXue%7q}jkB@!WwtLIC z2qm^@pqoJ{L=FIHFa&qzOeJJHT;^POMGsfQcrFIbH*oU=hlYwlamD}+EEFhSSy{-> zV+P~I4SK#dcw1My&Kg(>i3khZBddbf_1sEl_wDmrXhStmG65wpt$7_~myv?y*(k|Jwo@TdJ`CBL^N`G61(pcVprO*E|BD+@{&s3T4>GqGi0ljUs_sv z%AXl-RdPlKScVWAo9x-M<4Aqs!~PVET%3(cFa;AIKLjNnh9@omW{C&LG9v9jNvW-) zV-AJ_3Eg+k(O2gcrBBFmHu(Pd%ukQ_iZddO2C#;iQ&vVsE%<3*W+)rs`nXYw@d3x9 z7#%MtDOpYpo`ZsX=~5Xa9M70!l~l}5zb`47oOdWrxy^V7whZFw7?uUi^YQV4ih(_R zD-Z@ZX04y1kfStnaaC7U$@k}+i&sKm0YJgqd$Xk~JhE?7Q=_R9bESGb@=_8-4-*pD zJ&Vv+$Zj!$Q<2<~3l|Ek)VIi1+u(-jTuS1rMn*-KydIvO?oGlZ$C_+?m{L5!90&nn zCy?AyLM|AAd5nOE>(>ptINK>d>`COvR+Hbq5+MXhF9T5qqk+f21d?Vcdf(Zq?MUiR z_lF6i>JUpj5p{f#wRhdRb=Z`amYUXqB~9(^##gR1sK@`AZM=KH4U<+<6n(F&McWFU z#e~Wo>Yty3ANJLV(JJnID^f$_{PCsfkcsi}zG<1-R;2B;*> zSD*Y$7cPP3mbzqH4n4%&AI=qkG9yH`Ht$#55Gwvy4u<~sVmP#+K^=J|3_v)~_wRT) z2u1}N@bn`N3Huzo{nVS`dWo(sSs+^iNdfqq_THnAkXBZenG4$5d%dJyrKgYa0fdRN zv9STb9Ol?d!sK5Dv0-&6E&>vpJ-l1^?^uY1D+}x^7Xs9-Q4mV<6n|VI!lK9qV$nbq z`ky8$l*{`EJnbY{~ zXON8K*5JqpP8#^o*myxxGoqvy_hZfOUKdSU2fXs}DC3q_CsMW1bPi5!-ms5)bFKVo zNpBYhTq8WLdcNOi_ye(1Q3>+3$4&km zg&^InD7e4g_TpM1kAxNH>z&ajd>(OJdZ&~6S*>x$FaAv!m@1`kRo_Hp6Y(U}Qx^e4 zMBosWGA&G=m;C2A1QFhr+rf@-ZU<4I#20aV`9B^p@`IZ1{OZTb!}F=OHnr>G7NJY| zcIgNlDe!L@y@HcCsQ=0s-g|xz(_@j5jK!?j(r84mVM^gWS5}7eU8P!~1$#4JErHJy zz(FerO9NG~nfKks2->fBAi;K(E zx@Ra0Nb%0WHHN2N>avNHGz?K`OekUp2HJ88%FC;UMX%vOj0?XCm*U*HD8cZ*ru9x4 z=RA6JL0sGgx^h&MHnOnSuCX;{2%aFhWn*t&XPAc4Iyt`t7Mz!N?4?Y4J}G7j%`5BM z+wz8T)t&`I^-NBtP>Lxn>TGjfL#qCH8>S;5cR8{ zbOaHu$gQ4`9A3p(Vaz7xzaYVQfWS~V2JGD4X4%hPKYsk(@3RaKT%lVumGn7Dy8i_l zkoo@!0&=RxF>3$?z#6cswjl>dIMk!ImfcJl!hzKiC zQ=;^eLbCMh*Xueuh)F6lpREx?^K@3|35CfB+$lxGsdKrQcba%KX%FPu-MBFm@ zwtr;%4HOX8{Q(80vZ$E+nmar1uTW`bUZ)c(9m8%zlJ>8L?hPRnw)4-igPt9zuh^Wg z4XR=4or?WL$PL-j0}@x4mS#Dxisrlnq=WRu=&11HAci{|9%3dmO2P2@_511Mf1c!! z+;|GrT36EdKNNvNk~0EgP&5TXEBnoNk#2~nmQLnUZXQ2ZdR^Ff zr78+pbc9)w6^kG>xe>_HCjk61+r8maOKyp@9U4+h%zaWTE z73jQ?FiX<5A-8|bL(WPQS)G2CmG!t-XMSM;roV{o#Qq~kE|&Sc24_XMNJH7Jq8~(F z#}so;DD>Za&~GS-=SN>x&y08Z-ao^@f2|&Ingdi`*X(f!(1v|Hgg7JIy6_F0*26K9 z_V(X83Y|4Eq>`I!J*+C}Mstf1d|%}@(p?yy!8{_FJf+<{4g;ti(&Mp3I!fe%BwL`j zR5a=prhuMCU~RxC+2FR9dNb^8l%nmYO|9_!uV25832;D8OeKmW`Tsee@Q9}w7yM&B zfwJ)Vvu9s`9|4*_tnl!|i^Y&i;4BYFl8tF61ZAAFVo6A<>OcPJSwIB+)cXQqwzFY^ z-2($VC@8eFw8ZyQN#EV+O0(%d4i3QK0=?8&B$yk-={Ojwx_-R?=K2A#dW;z$M4Om+ zNI)mrm-K(m59qi_|L1`NY)9WE{yC=bf*Gn5o*EP(@M_Q=g^z+uRZPKhRyeBRtk|+8 zra|_dy!&l>Iz2UY9>Ye;orE>>`KSpzU>Qb=oRM;ULQ zFp5AJeXlz!7S&qvQi!6+qYvdN_Du(#w}hOOr#w z(&7}q;f`%^Ai60BUFLpj5*Ty_io>BLOVN;dum8;SBI*a`1ntNE+vhcx@BJZ09CoQ5 zz{v@x=8gE7{ZBL$a z{z4y*uZhSLb^WP1Ebv@U8Q0=kN7Nbm_rV6D?%x!LlO80104@tFbr}hWSVTJSAD-o3 zC-G(jb49W*o_ z^j{0dzT5kUJHak`^3v(k?2L?Wpybumq<~TI^KV~f)Z@t>k#q&@h1_|=TS>IdMSFK} zW3r~$)lW~6=|Dx+)=mX-;CoFeAPM~=CT3r_{3?zY3Am*FAIT^=s;F16uR&Ynw?POz z!9*D?k58&Ja_nf=nscXb(4k-y>G8PTx>a*`+;DROPOZU!0u+qs^UU&LK=)xmK}W>- zcOBMwj|v0Nb-b_dshr;Nd=%`rx7HVZK6pI&H%)~w1^UzVkYVx@s;vHx$qKYL!odWB z2SY1QCKs9g{HU0=($+qws#?+eU61DyGSg_1fwIbBQFySxZI};`_1N~0WE251U5&=6 zOE|uOqJe}l^Lhu+2I?PYBMszm!hjLt21Myqh@PQT;Lt8a8Um{69KcKW<~8x`|NoGj zQg6bb-w#aJVi3SOJVuCg7(K%QLwskAa7qit&jDEBI>*`KSgAjUGVIl~)z!lj5=IDh zr9X1Zs7t|zttIfJwtBifJ0D$Zh|h)AkJ5sh{voN&!NCC`rAr(aK>Z*tWUB!uu64SV zi-*X^gT&$$q(`7@Kaknq%3n7GcZo z7RJx>3P;DrFiHZUFK!5FWT$~8sP`ndSgcBadO=p<78oBoa=o2`gt&ai^swrw zxV99;^9v)%xV4;tvW4?sc5?=`U8Uz+2b>tsQzDC-Ehk4BTFH6n(DGPj7hFj}&a-Wf2?(7a%pAqE8s6rUu)lWdZ@Gd}QVxprl z|AiSZ9BhWI;ppH{bFdtzLJ&@YYgPnl2WGtMWdujd?t` z@pzu?t78briE#E~3NbHWm}4Y}P;@^>l2Xf%xEGUvxB-Ri=-GuA5@$xuUpXDS_&LzzGH7M+!`9!ngLz-633(DWK*PqVU6IzH}Y*6`xS^PcQ}`u&<(JI z2*<+rKPt@E-aJIyF!1wX6-XBuUuvDjs zlX1uG^zieN*^krbwCH4!_R7g=efKW9&KSF+BQ=v1){B%A-qCD zI1(<#IuA28f#Wu|2md`ewb-uQ+4#?q5Qbegh6X<6{M4J>Np3w34%Qw(h6?iJGYBq` zbcr~cC0w4_A7MSOf=9BkgDf~F@1xTa2mVzJEHi-h{0E%GV5V+Mz4;1Gs=%bCcX%uw zAy&GgIT^trMPWy!kWrbU#Y+SyMy}7D2W#FauK_Gw6hI5EGMH&K)NJ`5af4j;=(yC7r|x zna(Rq5R;-ZUn%@;W~1lhU|~G2^v_ev?oF++Gm(m^UBTfe#1c5hBp1NMSWAN;^8k$x zvW`=jL6a}?Y)n!Q1@j+z&mQl|F`NlHvb!5QjGkVp%^#`0fkX=f)I2LK&TmSLs# zhE0zeOxqntcNUV1HmZIQHZzSDdK>ZX&|Tn(5cJH(tzu->q?T z&`T;B2kWt|98Sn>w1L3@I=r;B1V)3UhqF1*3Y&tqu~)6U6C+ep?9u&HWsQv)7f(YU z*!f#lOY-pK^j}mj>2&wcJF9A{fov_ZX8^nqP~4Aqqu>hN>#eV=o5a~qLR#blt8RlM z;K7#0p*?4H>3vJ|U*oh=sOvbiPC&r-A1BYq&g594LH&`;>Y@T@xRh;vps_8oHACQf z`{3BvJr9c?$*gw%+p{-_Z}BCTJmi=C~8Gzc8vs9ar8Imf)gk`_(D5|3+(TgI*| z!|cImBBlhkmrVR_8UH`6oq1S~dHep8BqoW9ibQCV#*!qJ6onzAELlrrD-xAxC8V;B zZA279vbD&TRxve*63SN5M79>9B>KMYcI0==a~!|<<2jzqOnpB0{eEB9d7bC$QZEx+ z4d2ninvQ>^8h^61ga&nxVytiH4wT+WQB`E3HOt&0##9PoF3DRMbOO@3?r$*!dA zZt+65R_*kXZcXIw*l+u_Fp&dGH=b`FMc^4Vq`H!7D=?W_2y8+q5uPT5> z`0M#|2p=zpEg9Kp;wqLKJTx2WI3ikz>`sbWR5EkkfO1WDrCoLXok8`=F=gW<%xLep z0)B+6SuUo0-msySPm%x|QY|Q;Zp0B4GoihdlqYAxom}GC%W3v7DRIbmQP4$DIOJK` zC-8X{4g?|diFNDQ&VfA5V6ZN5l<-z{J8RW`MHkeQ!wG%>Ne|sd?J{%Mj@9k*??&^R zE4S&omRN6Fx?!h}d}v{uxRvkM22J{Og}evOdnM@)gL<{@vSpOT zr_W)xDjoYLXN4p*>CGDF-32Q?0T7P=Tyz;Z>B#NDA8Mp*Y*3$Z+ENoEWebo7$AO+1 zP5Zf=>09P(@c#NT4FgQG*%JTv4eqo!3tbg&w3j(3HC|ueAEIanmVTp;#4&q3}HBJ8fI<=#iKQaPM=}GNda! zN`lRrf6obEtTGhnp^3?cgoNRq9Rf8s)^hTu?Tq*Jo?|r#lLsK2ims)256V`mli{uP zvBAMIt~`cmxmT~NPo9u*dCc*S{JLn*Osx}{-@u;Nys5Zi)J%*VP_@K5G8arI&RU-0 zML}IY{QF<&zbNwKHYNU;il669?kKSyZPordmf)98l^E@`=3WugII2|#0rH4FG}Le@ zvBj36qD;Vwp^==c_GjX-+B^MoCx%8p@UWlvmX@Gya&dH27`#N*MGX|j;m*&Xx4iw> zOIm_nAxJYUeD>x0DJd`b#m1`IDF3l>O=!~4H42h{1H*PH&N;2~o{=LGTSnPsowP@@ z?edBXfRA_di?&V@?dazOhK64Ckc&vXR9vNQUPO&2uh6!gfzvr^jpoMs2(wPpxOr#V zYMv+?C|0JcS=x*Sp4G2|mJ!qP#koCq{*TNdkKg5F6cmOcix4@#cmF;g)o2qF)TAIC zN73H~H-`smL=ffQt3?of?lwdV>;CbuT-F=LW%`@zm5eNKV-QP$L zF+xV(z_r9X$=Z6z;u44T=|57d3w>ut+Q1SaXrjkN_f>JRvb1yrcb=Bx#U{LJxym>t zGar|Tb`LXV;)3Y2I11s1tZ+g|Mcv2F6coQg0Tw?rVXB0g026T~Y_?cgp{rKyoLJ{G z$aQ{`pO62HBeAELkq|vu@EjP}_d^6nf2!6Fy@hWeX2`^Tdx4Ka>3h1IbBG5Y6m<*9F>&^GNyH_Qk;5v3d*OKI3=&zdzkr)`s#$Z(n~1aq9@_Tre(Teg-$ zYQe1h;>8P8p6VeHGJc%+i2o2OXdandnLXb+A}ji}+W54!m2T4$ELGid9=AW_;xr|L0GZMFP%}zWw7Z1aX84sEJ^JU1&B<7plv?clN zceQ$D1r;wga1)M4{yg|uEFejq3juPTwbXzz5F8v#rNJ#OwMhKl+C|6D^z1JFzK}dz zvoZWp{WDAVmj|8BI2ngla5w)_n|P_~UP>jkVH4+R+_H+DI(?*;0%SPOvD)+FgM}a! zMvoq_h1dai3u(SkiAfWbM;clUYK@LcE81IC)g_Pwi|dOx9#=rX%69F=PQ$hun`>39N7 z{F=Dg=*)SU=yv>9X^2O!&iLB9YIWZ0^poK&r3?-^*w`Gd*x5P%-+ys+Gm-RUUTANF zn~Bj8#r~Fdr-Ev7C2c%+{81?{I{A&kclq&AS(4{#+nq~)_#B+l&`g}X8SK;TXLFfn zxw~lM_$wzThpX}NV|RSC*X>Utd@xAY(6A?fN_9nw9RmpSOINE2MI-NR#KLyOJPg;C zN7%;DPz2VeWYI4{_YX(xrYWBN0!XX?fP475QrlYVUg2_v+%2 z2UHFm+1rrV4+8T40f}wVjwNXU346a!uBdN){920Ixk@*WKB>B~Pw_G*rQHDXl79Pp zbLo*Mfk}OA2FNo`EPU-Pg`2ss#eJ(D)`m?o^iQ{SY9;c;FKE{;C+rdk(N1Rn;1&I% zrISsBqNiVQXMH;GS^e-8)t0yks($i693mweo2e^ z#wY2qiu?#lrJ{LPlH=IW$l6jevm2${M1p8<>($^mEmTs_wvPHu?MWC{Ytxtk{8k zOx|?w?%f~8wW`}&Gh)Vi9N3KENrLv7Q1{!duPp}M-;L;7! z;9LZz`KG8Sr(A15OJmiYj+Y)+SG^ccl$B&;mn(r7X}!uaM#JLfkV^f`WBvbd?WW$j z)3G`tY4~A?i$CONinI7o3oqov7IkxUSh9qaHBxy%JPNuJ#AH9?J9qE8!-~|N$({=) zMx5t=^jYtSM*SUWRBT-Qi-H1^Z=&ok-^z^OGzP7TW1j#C%FU0cZr%NOb-;iGTx;8| z9p$jf-Wy;S3j_P#Xc}Cfc1)FqUQ$9Lo8f>>(UNBE!}42Z3Nd)4o*4MB*n!&?s z*KBcEW)IcX(vlr-UwKPg@{RW`KieMHZ`~qpH0=K4nuI$AN4d_gGZYRa^KcE+8BG$d zlTQ+W%Z9Md?Dt7!`N9L(f3#s!r>u-j{_EFnFf^gaO=y#v;T}kn;gNfo4uN(BDyejr zF0b#j2r7F0`Z8KHb&HsoSg+o_iC&%D?j(R%uzo8j^pMc3XJ|?31|8hBtL(wTLw%$) zwQ70;?jh7UhPdIRiDk1!_Uf2W@hkunS5bCkKK1MM^}UA;i*tzo^qefGa63*WO2N}b zSg^B<%phPgZ+g;<6;p3WNk|mNoF|5lW(2V*g|H1jIl)le$(HeNSDk;_KcOlLQ#u`A zPl;!YyIl^e%j}5|dsK13g)$YB*b9Dl6P!&~26 zm9?Q;Z@K>)h+gN#9?# z)s~Y%<^z{FCk|izVM%}*;Hj;t=?&nif>PJG*`L@jL9#Yr>v{P>3rv?U$D4HyuG6vS zUdfl9oetoiuJ2wU?eWE}^{FvULe^^4JHR%hG<_oOvFG*+?B|A&V8c2Kz@AW z@W5U>aG86}FUVKP0Egrsz3b99RvL(A7*k$qJreLy%l3SSk0LA1WDHoS2fKmRb!P@5 zbQC8ua&itHIB=@!#J4f&QEn2uVR$$($>gYKFmYUZsvNfFNXyuHDN+nc_=@Rm-W5D?}Y?T%FciJ`B72o?RV zFMwO3hY zPagXVdre2b`GP`EDBXj&y1DruHkMb0+m{4<{UPZ*^Np_k0A4fi8M6j8RfB5-M1pUh z=7O)C5i6eIqKD@g6v-QE3=wrlPh-)A39W_%e;*}`}Hg0Pa!QZ2Oc|S zOyZf}KxDJkW&$9*^z`juBr95*+itoh=nb@vNPlizNI@|}E@uKN08zm4cJ=SSm*vJQ zdA+F+AS*#ZjMs7#>Q;!vm%M+!(%G5BAPuAF+Po|)uecQjW4FoWmAcw%KjJJJFaW23 z`cUog`1r3V2{1!%Fdgk$)S+uvRw#u_E zui-dV{8wbFd!k^cHXnGpgIQm$h>ssWD4jT+9N9t${4^@%Yjd{y`i?HD{*y7kp@Wo> zbb}&(@@?DF+N~sWx0Q8s_i=&9j2!{GH-{0Pd5N}d&Eu&I%lXJ8#lf79`=^}}ne%o7 z7-)8tT8KBr-)~2Z&(6Ga#UWA!uUq1W8`FIckvg7 zZ8-lBi_|REgDT>xMM3t^*MPI8N20gT{}H-yh|&tyN-8c@-TpxYyp`;1@`SQl#EH%{3EToLmy?AO;i zF8B5{s*g19dc2#)_rZgqg9jr#j?(Bv^e~bM>x~<~BuJpbgHxnhFTWM~G0a`~#1*Ez z8>B=CYJ-YtL$PIZ%b_1+Uhw2G1UxEfIktz!=MJ~pawP{%C@(1q zHdEuB$(E%ap?jt1s`5@@LDnKhY3Ry?f|c&)^J8&CX_PUNR+s;5wBM zvs8?00$C5YIN0le9K!lfVD95yI<0YW`AA>P7#1pXSzc00+dD0hLgsXrM$+j$yni#? zoV!_B`JF@D-0R_;Y{VmLxPZ(Fu4sX}Zt~BkC%S@VC?=*dacxVSupXxj5glpJu}RnL zQxae^nwk)KySc?-`s=pMcX%~@O0SN;No7Lc^JJfa8RXCvsts;5hfw5YG{%< zRpRY2+K!^wZ|})}E&lzd#w_vf-u4>>rmBPB7$-lCV3i^TsCTJ+uc0Hsfn%)%g!P^^-YArVCAuYAEuYukuk&>P?%r>gkmYba;Xjar;_FX5+|rOhP6d z8Re|x@DaEj4=7DO^TobrwL{D-&CTCoutdY88hQBOLB^tJWVclthZWQ_N*>Mm?I>nC zBvYrC_;IrF%i!bdoS@dPpH!FS37knpl3tSmq5z*NIqr)q@4LZ8VcW{uc2A@V>+s=K zDjbQm8&{_0p7g}&2rA;si{aH|6Ht@Tb1gIK?^GU{8k8adz9Sa&72nWATolJ=&D43s z0C>}uErLMLx{6IX%ZyT3LN}iiOp z>HTZJn6WWt}k978Kzuy10H}1qnddITnlfyzNy%By`Scp_x z*mLDy<}Y~^sEQ8m*>gW7)UN#gw=?8Rx~HTM*;KmRMe-CziQPIgsjLSi{yTA};*e#t zEG^}+qn=g$=-PG3;>ExVbZ`tSDzabTubTCLhfSEq)|!)P1u?E@sHw40#Ynj|(-@g< z-OgP63ie!M`mVP8`qm{XnN4S>x^g(jX-CkOCiUCv@F1$-a&i331kbolx6iOI1xHvI zm@uz|?zfI@{!c#6b77E*m^2~;L&OHoHz;m53REQ6FIP#16$Cs*AB8+EX@Iech9hhO zmIvLwd~##WkG_4)dlt2m4r%iX06=WTOP4e_9Q&^mJeiM59z$^Ff zW5K*2>(ul?cK0>3vQFFB^xBN`mP4K1An4%1Gb`GYdxTDltigTLU3ymBn!%h^+Z68O zaU%uJ?v*xTR}kDN3)ZP7nuL$V!@YZ~oP-#!3y>3!myh1;lHtbfDcFk1F34uL2>KH; zL42a-80QPJ4|_asLO4tgiO|3(?aCcyHk!pBauI7K%E1(KEK0_Kjq!!xA$8Nvx0Z0c-ir1oN&?T zF0Y#2@3SX*!IW;G;d!{nxX_;hp1~bO2HtMzQYAULqoJXzSpF4%Dl;wZEx7V7+V-^3 zH-$F_3$37)NIXMyVNEdb1O~*YbmZRgQmq|xqHG-Ev@ajr=TDy~e+u?CJA*A8S5UX2 zrPv=bg1f54&_eTg$WDf?4-qnP%;7+beHFE z-nds)II@Fwvw}?5uK4ekvff3onXJ^QW6H(c<%h(!&R?wXbvT*PW{tm>;Kbx&Ava4_ zz06jBX8ksqRTcHyWXv8vPTb;cM$hZOczIL&*SL|&eOd7Xa#R zmAaam@3?-^K9G6{#Mo) z>F7Gp+)_joe5@G+n`&7u8O~^!uw#_29g^@E&X+SXv&lZ0*_I=u=OfebGo}>z_x+tJ zivPrko84}8S+yGH7%zV95}3ai#5YZY=M3FU5zDSAUWvC)F4IHzJkgY7-COreP|Xfl zsr2Dzno?js+inofL0#t)j=oBIE?iH?EE;#q?6%_fva+-!xWOagc5WBd-8W!Mz&c$^BV9Yj!hq3iy9R- zE?1eulbCbUhJ2F4h8L|zYLGZM!{#}cR8>Fcmm%T zD-!NxWp!@5fvzp-RYWsPoH!Ttu3U5F-5c{=+1rOt6^R|)NOqHM*nHd>v+O`cOWK${op3xFwb(!N)9TWcd z%Ff2es_i&x2;8v^kVaUY-3}Zs!Y;dzrjrVX zxyUM*{ImM8w*E5T{L^IL4q}9|oOGWgCo}Ys5L?H^LGN^UcR3mTA9k!+o*@7IZSv)o zh;1M67a@m>b}U9FoUHE5zzgRW&Ulz?bb{cL7xf960CQu`g=ImoL5M&A81!E7c4pnW zjae&e*KN$%xAY4wJcr>oe6YPY_;h@+M;^K@a8Z1cT%nyHgc4cxLSsYJHvVa+-nn+% z@!h60!=G$&8@WGE`)$ z--S9-45EHWSKRqLis$m&F+P3-z)81{6;9fYL0;RP#(?x@HeXUJiK zpOqi&gUif@+(Q^^BGBjwh*3Lc&g&or?Ct35QOO;b@B#nO#a|GnxB?uu65%K`W0Ax< zR)PyrgxQz1%e@!_F@E~+ah|A%cc4XiPHfH2hpjpJi)$BaZXaLP`Vdy1!BbZt8S@T&{X4zbT(4se01gL;MJh3%e7oENotlno>1lHo;X z+&#S+8YbqwVV%M@{;)itgVN=-#Z7o%@=KFBkPPm#CiHH*`7=ND4hW~QS+Eo6x|A4aOk6Bo)c6GI0+=qLiDWRiP z1oGidA|L%%dyU_IV?gNNTkREAVOe>3%y1iUSxqpZY-txiieSFqryLO94irg)qo=>U3!4ss4B!crT{%&%u#_B)4#b+DdCtw{yQM6-B zkUyVnvsC%bR(CtU(Ca?(gxCI6-jXv$hTT^zHt8Z-vUbiODs1MNH3?8u7wL0P>#-8L z{E#>6(XLeW=*+ z15HxFQ>kSCh08(f&R)SlcFHpH83II@%S5;NmO;q8lCSo{SC6kNi zsQF9&l^>Ri%_WV+rZ|*%TxLw2N|^0D`VWd#_c1^1#hQq+d>CrWZZ*4s6D7#}Z6>7O zpW&uDh919kY5KXeFZHB!yXI~r)%I6ErBZ-4uq-P|Tl!#=d@Eb!4D5x4>ChQ9w+pB)9b{kQ=lf5J<29+Q=YD} z0~9HNBbuACI8pUtS?qjQuU^Go$ot6P8j6>g5t>zrV0PU=_dz$&(MXz~1^GZQ(_R?7 z==9p|5{GWnt`tL47kpbCRri5#0e=IECli0M^)~j&|D0OL3%B%x- z{NeD7+$%uCl=M0oZAWUgc}WWn7E%TWg2iJHFeR_*4J8fn8JKZMdBTUF6=M~ zv9Vp_{MUS`JZG$u)MteF-;^*B*iH|O>GiQ<2bsq2f_78l-6yXO?JlsMa2;h_L*h#B zJnW1>RKkhl?C5yOwe&DwA{DjU))fVjmr z-Ra*+icxT~|OyGbs!3qEk* z0Bs8i#S#htTJ?DektKUYMI^su>zCbn-;~3hlb@*nlS^*0#=%Cc_o8sc=X{eChtQ>_ zP3!!UCjDo~iqZh_eVWRon}*jd5SOy?T=@RuMT<2jQ{)ybTqwAU82-_~Coj`!H_Oic zNzCA3!=Bu`cP_K)iITm593aR6jx})a-c_|m1U|gzl%padBfZi%_L=WWh>5OQ>IfQ+ z*9)q|hl||902L)e(C-Q12tdr_n@5mQH%Y zfUwae$P{RV^uJJK=$z@@$#k+g>&ZF0&Qn((Q0dB1$eOKDR{Z{AMs<^CtMx5k^n@kY z;mhc=rmC!vqTwb)`YLjx4z5Ov$=(T9h~B_xQruFr&Y<6hOf!$g?P|(}EoY_;Ew*pR z9%)_=M&9Mf>4wt11`l>7OAEIv$vQY$i&YLHh6$O8%VLF`(<_mK0u1xNUE?xBqw>Gs j{{O%Jn8>8Q)n0Z-2I|?`E3M*35&7L@g7KLV*6aQcI?Xao literal 0 HcmV?d00001 diff --git a/docs/images/movies-6-file.png b/docs/images/movies-6-file.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc63ea1286ffd598686a2398d87d7349aaf5f49 GIT binary patch literal 40297 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�>-mh_NA>o~$m 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 S_k=JNu?dEg3_{0RZT)}q5i)21 literal 0 HcmV?d00001 diff --git a/tools/capture_page.py b/tools/capture_page.py index 0dd4c82..fd35bc4 100644 --- a/tools/capture_page.py +++ b/tools/capture_page.py @@ -1,56 +1,59 @@ -"""@brief Save a screenshot of a web page with a headless Chromium browser. - -A headless browser draws into memory, so no desktop window is opened and no -mouse or keyboard is used. It needs Edge, Chrome or Chromium on the machine. -""" - -import shutil -import subprocess -from pathlib import Path - -CANDIDATES = ( - r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe", - r"C:\Program Files\Microsoft\Edge\Application\msedge.exe", - r"C:\Program Files\Google\Chrome\Application\chrome.exe", - "google-chrome", - "chromium", - "chromium-browser", -) -WINDOW = "1280,1000" - - -def find_browser() -> str: - """@brief Locate a Chromium-based browser. - - @return The path or command name of the browser. - @throws FileNotFoundError When none is installed. - """ - for candidate in CANDIDATES: - if Path(candidate).exists() or shutil.which(candidate): - return candidate - raise FileNotFoundError("Install Edge, Chrome or Chromium to capture pages.") - - -def capture_page(url: str, target: Path) -> Path: - """@brief Render a page and save it as a PNG. - - @param url The page address. - @param target The PNG file to write. - @return The path of the PNG. - """ - target.parent.mkdir(parents=True, exist_ok=True) - subprocess.run( - [ - find_browser(), - "--headless=new", - "--disable-gpu", - "--hide-scrollbars", - f"--window-size={WINDOW}", - f"--screenshot={target}", - url, - ], - check=True, - capture_output=True, - timeout=120, - ) - return target +"""@brief Save a screenshot of a web page with a headless Chromium browser. + +A headless browser draws into memory, so no desktop window is opened and no +mouse or keyboard is used. It needs Edge, Chrome or Chromium on the machine. +""" + +import shutil +import subprocess +from pathlib import Path + +CANDIDATES = ( + r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe", + r"C:\Program Files\Microsoft\Edge\Application\msedge.exe", + r"C:\Program Files\Google\Chrome\Application\chrome.exe", + "google-chrome", + "chromium", + "chromium-browser", +) +WINDOW = "1280,1000" + + +def find_browser() -> str: + """@brief Locate a Chromium-based browser. + + @return The path or command name of the browser. + @throws FileNotFoundError When none is installed. + """ + for candidate in CANDIDATES: + if Path(candidate).exists() or shutil.which(candidate): + return candidate + raise FileNotFoundError("Install Edge, Chrome or Chromium to capture pages.") + + +def capture_page(url: str, target: Path) -> Path: + """@brief Render a page and save it as a PNG. + + @param url The page address. + @param target The PNG file to write. + @return The path of the PNG. + """ + target.parent.mkdir(parents=True, exist_ok=True) + browser = find_browser() + for mode in ("new", "old"): + result = subprocess.run( + [ + browser, + f"--headless={mode}", + "--disable-gpu", + "--hide-scrollbars", + f"--window-size={WINDOW}", + f"--screenshot={target}", + url, + ], + capture_output=True, + timeout=120, + ) + if result.returncode == 0 and target.exists(): + return target + raise RuntimeError(f"The browser could not capture {url}") diff --git a/tools/make_screenshots.py b/tools/make_screenshots.py index dd527a1..12b1ca6 100644 --- a/tools/make_screenshots.py +++ b/tools/make_screenshots.py @@ -29,10 +29,20 @@ STEPS: dict[str, list[str]] = { "hn-4-links": ["hacker-news", "links"], "hn-5-upvotes": ["hacker-news", "upvotes"], "hn-6-top": ["hacker-news", "top"], + "movies-2-markup": ["movies", "markup", "--source", "fixture"], + "movies-3-titles": ["movies", "titles", "--source", "fixture"], + "movies-4-reversed": ["movies", "reversed", "--source", "fixture"], + "movies-5-write": ["movies", "write", "--source", "fixture"], } +## Screenshots of a file's first lines: image name, file and number of lines. +FILES: dict[str, tuple[str, int]] = {"movies-6-file": ("movies.txt", 15)} ## Screenshots of real web pages: image name and the address of the page. PAGES: dict[str, str] = { "hn-1-page": "https://appbrewery.github.io/news.ycombinator.com/", + # The live page opens a consent wall, so the saved headings are drawn instead. + "movies-1-page": ( + ROOT / "tests" / "fixtures" / "empire_live_excerpt.html" + ).as_uri(), } @@ -63,6 +73,13 @@ def main() -> None: for name, args in STEPS.items(): if name.startswith(prefix): print(capture(name, args)) + for name, (file_name, count) in FILES.items(): + if name.startswith(prefix): + text = (ROOT / file_name).read_text(encoding="utf-8") + target = IMAGES / f"{name}.png" + shown = os.linesep.join(text.splitlines()[:count]) + render(f"head -n {count} {file_name}", shown, target) + print(target) for name, url in PAGES.items(): if name.startswith(prefix): print(capture_page(url, IMAGES / f"{name}.png")) -- 2.54.0 From 02c339c2dbe95b0e2eff5e4a3738f6e946014d26 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:31:02 +0800 Subject: [PATCH 6/7] Add code review record for MIL-004 --- docs/artifact-registry.md | 2 +- docs/sqa/reviews/rc-014-mil-004-python.md | 62 +++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 docs/sqa/reviews/rc-014-mil-004-python.md diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md index c7a9d18..54c0f3e 100644 --- a/docs/artifact-registry.md +++ b/docs/artifact-registry.md @@ -15,7 +15,7 @@ document of a type. `Primary File` may contain a glob (e.g. | SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 | | PP | Project Plan | docs/project-plan.md | 002 | | MIL | Milestone / Gateway | docs/milestones/*.md | 006 | -| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 014 | +| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 015 | ## Languages diff --git a/docs/sqa/reviews/rc-014-mil-004-python.md b/docs/sqa/reviews/rc-014-mil-004-python.md new file mode 100644 index 0000000..37da290 --- /dev/null +++ b/docs/sqa/reviews/rc-014-mil-004-python.md @@ -0,0 +1,62 @@ +# Review of MIL-004 Python code + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-014 | +| CrossReference | [MIL-004], [QC-PY-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in, autonomous mode) | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-004] +- Checklist used: [QC-PY-001] +- Scope: full review. Code reviewed: movie, empire_movies, movie_file, use_cases, movies_steps, cli, tools/, tests/unit and tests/integration. +- Language and domain: n/a (technical type) +- Language reviewer: none +- Mode: autonomous, not independent (reviewer is `AI as stand-in for S01`) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | Packages, modules, functions, variables, classes and constants follow PEP 8 casing (`snake_case`, `PascalCase`, `UPPER_SNAKE`) | Pass | modules and functions are snake_case, classes PascalCase, constants UPPER_SNAKE. | +| 2 | Names state purpose in the domain's language; no unexplained abbreviations, no single-letter names outside tiny scopes | Pass | names state purpose; the lecture names (`find_all`, `select_one`) are kept in the helper names. | +| 3 | Code is produced by the project's formatter and passes its linter with no unexplained suppressions | Pass | `ruff check` and `ruff format --check` are clean with no `noqa`. | +| 4 | Every function and method signature is type-annotated, including `-> None` | Pass | every signature is annotated; `mypy --strict` passes, also in a venv without the third-party packages. | +| 5 | No bare `except:`, no swallowed exceptions; specific exceptions are raised and the cause is kept (`raise ... from`) | Pass | fetch errors are raised as `FetchError` from the cause (MIL-003); no exception is swallowed. | +| 6 | No mutable default arguments and no shadowed builtins | Pass | no mutable defaults, no shadowed builtins. | +| 7 | Files, locks and connections are managed with context managers | Pass | `write_movies` writes inside a `with path.open(...)` block. | +| 8 | Public modules, classes and functions have docstrings that say what, not how | Pass | every public module, class and function has a Doxygen docstring saying what it does. | +| 9 | Logging uses `logging`, not `print`; no secrets or personal data in log output | N-A | no logging; the command-line output is the product, written with `print` in the presentation layer. | +| 10 | Classes and operations trace to the Design Class Diagram they implement; deviations are recorded | N-A | no Design Class Diagram; all tasks are plain technical tasks (Needs Use Case: No). | +| 11 | Tests exist for new behaviour, are named for the behaviour, and do not depend on order or the network | Pass | tests are named for behaviour, offline and independent of order. | +| 12 | Type checker runs in strict mode without errors; `Any` is justified in a comment | Pass | `mypy --strict` runs over `src`, `tests` and `tools`. | +| 13 | Dependencies are declared and pinned in the project's dependency file, none unused | Fail | dependencies are declared with lower bounds, not pinned (see RC-009 action item); none is unused. | +| 14 | Each piece of knowledge (a business rule, constant, format, validation or query) is defined in one place; code is merged only where it expresses the same knowledge, not where it merely looks alike | Pass | each constant and format is defined once; the step texts are built in one place. | +| 15 | Imports point inward: business-rule modules import no framework, database, UI or delivery-mechanism code, and there are no import cycles | Pass | `domain` imports nothing from other layers; `infrastructure` imports `domain` and `constants`; `presentation` composes them. | +| 16 | SOLID holds: a class or module has one reason to change; new behaviour is added by extension, not by editing a type test in several places; subclasses honour the contract of their base; protocols are narrow; high-level code depends on protocols or abstract types and receives its implementations | Pass | use cases take callables (ports); a new page layout needs a new parser, not an edit of the use case. | +| 17 | Source is laid out in the layers and folders of the clean architecture folder structure (`domain`, `application`, `infrastructure`, `presentation` packages under `src/`, and `unit`, `integration` and `e2e` under `tests/`), in `snake_case`, and imports between the layers point inward | Pass | code is in `domain`, `application`, `infrastructure`, `presentation`; tests in `tests/unit` and `tests/integration` (the CLI-to-file flow); `e2e` stays empty because the CLI is covered by the integration test. | +| 18 | File and folder names are English, contain no space and no character outside letters, digits, `-`, `_` and `.`, and follow the casing of the language for files | Pass | all names are English lowercase with `_`, no space. | + +## Overall Verdict + +Go — no Mandatory criterion fails and none is Pending. Stand-in review in autonomous mode, not independent; S01 challenges it in the run summary. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Pin dependencies or accept lower bounds (open from RC-009, optional criterion 13) | S01 | 2026-11-14 | +| Refresh the Wayback fixture when archive.org stops answering 429 (the snapshot layout is covered by a hand-written sample) | S01 | 2026-11-14 | + +--- + +[MIL-004]: ../../milestones/mil-004-top-100-movies.md +[QC-PY-001]: ../../../framework/qc/code/qc-programming-python.md -- 2.54.0 From 480f504b8026a8f213a272029965ce3c1b4b5b6b Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Wed, 28 Oct 2026 14:31:03 +0800 Subject: [PATCH 7/7] Resolve pending commit links --- docs/sqa/reviews/rc-014-mil-004-python.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sqa/reviews/rc-014-mil-004-python.md b/docs/sqa/reviews/rc-014-mil-004-python.md index 37da290..2a3c4c3 100644 --- a/docs/sqa/reviews/rc-014-mil-004-python.md +++ b/docs/sqa/reviews/rc-014-mil-004-python.md @@ -9,7 +9,7 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in, autonomous mode) | Initial version | pending | +| 2026-10-28 | Proposed | Jens Tirsvad Nielsen | S01 (AI as stand-in, autonomous mode) | Initial version | [02c339c] | --- @@ -60,3 +60,4 @@ Go — no Mandatory criterion fails and none is Pending. Stand-in review in auto [MIL-004]: ../../milestones/mil-004-top-100-movies.md [QC-PY-001]: ../../../framework/qc/code/qc-programming-python.md +[02c339c]: https://git.tirsystem.com/Tirsvad-Udemy-100-days-of-code/045-scrape-movies/commit/02c339c2dbe95b0e2eff5e4a3738f6e946014d26 -- 2.54.0