{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":205478225,"defaultBranch":"main","name":"yt-videos-list","ownerLogin":"shailshouryya","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-08-31T01:16:50.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/42100758?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1699675600.0","currentOid":""},"activityList":{"items":[{"before":"827da9900298b096db520d4b3c02a83073561e16","after":"7f22794d1ab5601a385d08462e68df612c85b367","ref":"refs/heads/main","pushedAt":"2023-11-28T07:05:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Revert \"Avoid `csv_writer` initialization in `program` module\"\n\nThis reverts commit 37064becb4d510d0c69da65bb8c7a505db4ce4db.","shortMessageHtmlLink":"Revert \"Avoid csv_writer initialization in program module\""}},{"before":"ca4eac0f9c1896a51233ecffd52f31ac4aeb1cfd","after":"827da9900298b096db520d4b3c02a83073561e16","ref":"refs/heads/main","pushedAt":"2023-11-27T07:38:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Avoid `csv_writer` initialization in `program` module\n\n- addresses the following `mypy` errors:\n\n```\nmypy --strict --show-error-context --show-column-numbers --show-error-end --pretty --show-absolute-path -p python.dev\n/Users/user/yt_videos_list/python/dev/writer.py: note: In function \"create_file\":\n/Users/user/yt_videos_list/python/dev/writer.py:40:13:40:13: error: Name \"csv_writer\" already defined on line 29 [no-redef]\n csv_writer: csv.DictWriter = csv.DictWriter(temp_file, fieldnames=fieldnames)\n ^\n/Users/user/yt_videos_list/python/dev/writer.py:41:13:41:34: error: \"None\" has no attribute \"writeheader\" [attr-defined]\n csv_writer.writeheader()\n ^~~~~~~~~~~~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/writer.py:43:46:43:55: error: Argument 3 to \"create_entries\" has incompatible type \"None\"; expected \"DictWriter[Any]\" [arg-type]\n create_entries(file_type, temp_file, csv_writer, logging_locations, identifier, video_data, reverse_chronological, total_videos, number_of_existing_videos=0, file_visited_videos=set())\n ^~~~~~~~~~\n\n/Users/user/yt_videos_list/python/dev/writer.py:83:41:83:88: error: Incompatible types in assignment (expression has type \"DictWriter[str]\", variable has type \"None\") [assignment]\n csv_writer = csv.DictWriter(temp_file, fieldnames=fieldnames)\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/writer.py:84:39:84:60: error: \"None\" has no attribute \"writeheader\" [attr-defined]\n if reverse_chronological: csv_writer.writeheader() # only write header when reverse_chronological=True since the pre-existing csv file will already contain the header when reverse_chronological=False (and the new v...\n ^~~~~~~~~~~~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/writer.py:91:50:91:59: error: Argument 3 to \"create_entries\" has incompatible type \"None\"; expected \"DictWriter[Any]\" [arg-type]\n create_entries(file_type, temp_file, csv_writer, logging_locations, identifier, video_data, reverse_chronological, total_videos, number_of_existing_videos, file_visited_videos)\n ^~~~~~~~~~\n```","shortMessageHtmlLink":"Avoid csv_writer initialization in program module"}},{"before":"448c1cc0d270781e1ac3891f8d5df02dc8684e39","after":"ca4eac0f9c1896a51233ecffd52f31ac4aeb1cfd","ref":"refs/heads/main","pushedAt":"2023-11-25T05:36:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Add type annotation for `opera`\n\n- addresses the following `mypy` error:\n\n```\nmypy --strict --show-error-context --show-column-numbers --show-error-end --pretty --show-absolute-path -p python.dev\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py: note: In function \"get_opera_version\":\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py:63:5:63:30: error: Returning Any from function declared to return \"str\" [no-any-return]\n return opera['_subfolder']\n ^~~~~~~~~~~~~~~~~~~~~~~~~~\n```\n\n- see the following reference for more information:\n - https://stackoverflow.com/questions/73151674/returning-any-from-function-declared-to-return-str-while-returning-a-dict-val","shortMessageHtmlLink":"Add type annotation for opera"}},{"before":"ce7ca763b81b15d2cc276fe13d5c668b6f2f0572","after":"448c1cc0d270781e1ac3891f8d5df02dc8684e39","ref":"refs/heads/main","pushedAt":"2023-11-24T06:21:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Check regular expression `search` value\n\n- addresses the following `mypy` errors:\n\n```\nmypy --strict --show-error-context --show-column-numbers --show-error-end --pretty --show-absolute-path -p python.dev\n/Users/user/yt_videos_list/python/dev/download/selenium_macos.py: note: In function \"get_browser_version\":\n/Users/user/yt_videos_list/python/dev/download/selenium_macos.py:15:12:15:102: error: Value of type \"Optional[Match[str]]\" is not indexable [index]\n return re.search('CFBundleShortVersionString\\s*([0-9][0-9\\.]+)', info_plist)[1]\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py: note: In function \"get_firefox_version\":\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py:57:12:57:73: error: Value of type \"Optional[Match[str]]\" is not indexable [index]\n return re.search(f'MinVersion=({BROWSER_VERSION_REGEX})', firefox)[1]\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py: note: In function \"get_chrome_version\":\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py:68:12:68:61: error: Value of type \"Optional[Match[str]]\" is not indexable [index]\n return re.search(f'({BROWSER_VERSION_REGEX})', chrome)[1]\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py: note: In function \"get_brave_version\":\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py:75:12:75:60: error: Value of type \"Optional[Match[str]]\" is not indexable [index]\n return re.search(f'({BROWSER_VERSION_REGEX})', brave)[1]\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py: note: In function \"get_edge_version\":\n/Users/user/yt_videos_list/python/dev/download/selenium_windows.py:80:12:80:59: error: Value of type \"Optional[Match[str]]\" is not indexable [index]\n return re.search(f'({BROWSER_VERSION_REGEX})', edge)[1]\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```\n\n- see the following reference for more information:\n - https://stackoverflow.com/questions/68471392/can-i-inform-mypy-that-an-expression-will-not-return-an-optional","shortMessageHtmlLink":"Check regular expression search value"}},{"before":"388d39087c605fa88fd3f8515a4f7b4ebc50757c","after":"ce7ca763b81b15d2cc276fe13d5c668b6f2f0572","ref":"refs/heads/main","pushedAt":"2023-11-23T09:08:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Add type annotations\n\n- see the following references for more information:\n - https://docs.python.org/3/library/typing.html#annotating-callable-objects\n - type hint vararg\n - https://stackoverflow.com/questions/37031928/type-annotations-for-args-and-kwargs\n - https://peps.python.org/pep-0484/#arbitrary-argument-lists-and-default-argument-values","shortMessageHtmlLink":"Add type annotations"}},{"before":"d98e2b1b580d2384c10aa58117eee053ce9fc99d","after":"388d39087c605fa88fd3f8515a4f7b4ebc50757c","ref":"refs/heads/main","pushedAt":"2023-11-19T07:22:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Make `cli` module compatible with `execute` function\n\n- addresses the following `mypy` errors:\n\n```\nmypy --strict --show-error-context --show-column-numbers --show-error-end --pretty --show-absolute-path -p python.dev\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"cli\":\n/Users/user/yt_videos_list/python/dev/script.py:5:1:38:121: error: Function is missing a return type annotation [no-untyped-def]\n def cli():\n ^\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"create_list_for\":\n/Users/user/yt_videos_list/python/dev/script.py:43:20:43:24: error: Call to untyped function \"cli\" in typed context [no-untyped-call]\n cli_settings = cli()\n ^~~~~\n/Users/user/yt_videos_list/python/dev/script.py:44:5:44:49: error: Too many arguments for \"execute\" [call-arg]\n logic.execute(*cli_settings, _execution_type)\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```\n\n- adds the following `mypy` errors:\n\n```\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"create_list_for\":\n/Users/user/yt_videos_list/python/dev/script.py:115:57:115:68: error: Argument 4 to \"execute\" has incompatible type \"*Tuple[bool, bool, bool, bool, bool, bool, bool, bool, float, Optional[str], bool, int, int, str, str]\"; expected\n\"Tuple[bool, bool, bool, bool, bool, bool, bool, bool, float, Optional[str], bool, int, int, str]\" [arg-type]\n return logic.execute(url, file_name, log_silently, *cli_settings, '_DummyLock')\n ^~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/script.py:115:71:115:82: error: Argument 5 to \"execute\" has incompatible type \"str\"; expected \"Lock\" [arg-type]\n return logic.execute(url, file_name, log_silently, *cli_settings, '_DummyLock')\n ^~~~~~~~~~~~\n```","shortMessageHtmlLink":"Make cli module compatible with execute function"}},{"before":"26a52718500798e2aee59a65e51746d8a8107a57","after":"d98e2b1b580d2384c10aa58117eee053ce9fc99d","ref":"refs/heads/main","pushedAt":"2023-11-17T07:25:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Make `cli` module compatible with `execute` function\n\n- addresses the following `mypy` errors:\n\n```\nmypy --strict --show-error-context --show-column-numbers --show-error-end --pretty --show-absolute-path -p python.dev\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"cli\":\n/Users/user/yt_videos_list/python/dev/script.py:5:1:38:121: error: Function is missing a return type annotation [no-untyped-def]\n def cli():\n ^\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"create_list_for\":\n/Users/user/yt_videos_list/python/dev/script.py:43:20:43:24: error: Call to untyped function \"cli\" in typed context [no-untyped-call]\n cli_settings = cli()\n ^~~~~\n/Users/user/yt_videos_list/python/dev/script.py:44:5:44:49: error: Too many arguments for \"execute\" [call-arg]\n logic.execute(*cli_settings, _execution_type)\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```\n\n- adds the following `mypy` errors:\n\n```\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"create_list_for\":\n/Users/user/yt_videos_list/python/dev/script.py:115:57:115:68: error: Argument 4 to \"execute\" has incompatible type \"*Tuple[bool, bool, bool, bool, bool, bool, bool, bool, float, Optional[str], bool, int, int, str, str]\"; expected\n\"Tuple[bool, bool, bool, bool, bool, bool, bool, bool, float, Optional[str], bool, int, int, str]\" [arg-type]\n return logic.execute(url, file_name, log_silently, *cli_settings, '_DummyLock')\n ^~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/script.py:115:71:115:82: error: Argument 5 to \"execute\" has incompatible type \"str\"; expected \"Lock\" [arg-type]\n return logic.execute(url, file_name, log_silently, *cli_settings, '_DummyLock')\n ^~~~~~~~~~~~\n```","shortMessageHtmlLink":"Make cli module compatible with execute function"}},{"before":"5466efee3ce80826533bbe0bcfb6487e8aae3aeb","after":"26a52718500798e2aee59a65e51746d8a8107a57","ref":"refs/heads/main","pushedAt":"2023-11-17T07:24:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Make `cli` module compatible with `execute` function\n\n- addresses the following `mypy` errors:\n\n```\nmypy --strict --show-error-context --show-column-numbers --show-error-end --pretty --show-absolute-path -p python.dev\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"cli\":\n/Users/user/yt_videos_list/python/dev/script.py:5:1:38:121: error: Function is missing a return type annotation [no-untyped-def]\n def cli():\n ^\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"create_list_for\":\n/Users/user/yt_videos_list/python/dev/script.py:43:20:43:24: error: Call to untyped function \"cli\" in typed context [no-untyped-call]\n cli_settings = cli()\n ^~~~~\n/Users/user/yt_videos_list/python/dev/script.py:44:5:44:49: error: Too many arguments for \"execute\" [call-arg]\n logic.execute(*cli_settings, _execution_type)\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```\n\n- adds the following `mypy` errors:\n\n```\n/Users/user/yt_videos_list/python/dev/script.py: note: In function \"create_list_for\":\n/Users/user/yt_videos_list/python/dev/script.py:115:57:115:68: error: Argument 4 to \"execute\" has incompatible type \"*Tuple[bool, bool, bool, bool, bool, bool, bool, bool, float, Optional[str], bool, int, int, str, str]\"; expected\n\"Tuple[bool, bool, bool, bool, bool, bool, bool, bool, float, Optional[str], bool, int, int, str]\" [arg-type]\n return logic.execute(url, file_name, log_silently, *cli_settings, '_DummyLock')\n ^~~~~~~~~~~~\n/Users/user/yt_videos_list/python/dev/script.py:115:71:115:82: error: Argument 5 to \"execute\" has incompatible type \"str\"; expected \"Lock\" [arg-type]\n return logic.execute(url, file_name, log_silently, *cli_settings, '_DummyLock')\n ^~~~~~~~~~~~\n```","shortMessageHtmlLink":"Make cli module compatible with execute function"}},{"before":"12c2695d6db79e6732756de80d17fe4a58a4e47a","after":"5466efee3ce80826533bbe0bcfb6487e8aae3aeb","ref":"refs/heads/main","pushedAt":"2023-11-16T17:47:13.000Z","pushType":"push","commitsCount":13,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Fix `error_message` type annotation\n\n- addresses the following `mypy` error:\n\n```\nmypy --strict --show-error-context --show-column-numbers --show-error-end --pretty --show-absolute-path -p python.dev\n/Users/user/yt_videos_list/python/dev/logic.py:379:44:379:56: error: Argument 1 to \"handle_opening_webdriver_exception\" has incompatible type \"WebDriverException\"; expected \"str\" [arg-type]\n handle_opening_webdriver_exception(error_message)\n ^~~~~~~~~~~~~\n```","shortMessageHtmlLink":"Fix error_message type annotation"}},{"before":"12a3ef665c2b68576299a0e4e3eed8803907ec3f","after":"12c2695d6db79e6732756de80d17fe4a58a4e47a","ref":"refs/heads/main","pushedAt":"2023-11-16T09:42:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Add `python.pre_commit` module","shortMessageHtmlLink":"Add python.pre_commit module"}},{"before":"e3e865caa9b61017d6e9871a91b3717b78f0adfb","after":"12a3ef665c2b68576299a0e4e3eed8803907ec3f","ref":"refs/heads/main","pushedAt":"2023-11-11T04:05:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"0.6.7: Fix `pip` installation problem and improve features & performance\n\n- **BUGFIX**\n - fix `pip` installation problem due to incorrectly formatted\n version specifiers\n - update video duration extraction to correctly\n extract the duration of each video and avoid\n writing 'N/A'\n\n- **FEATURE IMPROVEMENTS**\n - improve identification of seen videos in csv files by\n - avoiding potentially brittle regular expression matching\n - parsing each row of the csv file and extracting the\n (Video ID|Video URL) value from the corresponding column directly\n - normalize whitespace to avoid including newlines,\n carriage returns, and multiple consecutive whitespace characters\n in the video title\n - improve logging messages by including `time.time()` and\n `time.perf_counter()` when logging the time taken to perform\n an operation\n\n- **PERFORMANCE IMPROVEMENTS**\n - increase write efficiency by completely avoiding writing to a\n temporary file when no new videos found for an existing file\n\n- **INTERNAL IMPROVEMENT**\n - the following change does not affect the functionality of the program\n - add unit tests for the video title whitespace normalization","shortMessageHtmlLink":"0.6.7: Fix pip installation problem and improve features & performance"}},{"before":"941be5b7b1c5f60c27a520774da8c4142374bf5c","after":"e3e865caa9b61017d6e9871a91b3717b78f0adfb","ref":"refs/heads/main","pushedAt":"2023-11-11T03:42:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Explain why `yield_logger` is not called until `run_scraper` function","shortMessageHtmlLink":"Explain why yield_logger is not called until run_scraper function"}},{"before":"315858c32d1f46d40df3ec760d94368223f1876a","after":"941be5b7b1c5f60c27a520774da8c4142374bf5c","ref":"refs/heads/main","pushedAt":"2023-11-11T03:35:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Fix `file_contents` → `file_content` (English grammar)\n\n- this should have been included in commit 3aafda2c69381195d9ee9e8d09bc393362daa2f8\n - same reasoning as this commit","shortMessageHtmlLink":"Fix file_contentsfile_content (English grammar)"}},{"before":"84a8c35bb3c1a77a8e80a550e12e4039ed7d6be4","after":"315858c32d1f46d40df3ec760d94368223f1876a","ref":"refs/heads/main","pushedAt":"2023-11-11T00:31:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Make search for existing videos in csv files more strict\n\n- makes finding existing videos more robust by\n - avoiding potentially brittle regular expression matching\n - parsing each row of the csv file and extracting the\n (Video ID|Video URL) value from the corresponding column directly","shortMessageHtmlLink":"Make search for existing videos in csv files more strict"}},{"before":"097c7bfe182237decc849b9b4bd7660e18c532bb","after":"84a8c35bb3c1a77a8e80a550e12e4039ed7d6be4","ref":"refs/heads/main","pushedAt":"2023-11-11T00:16:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Clarify instructions for using `venv`","shortMessageHtmlLink":"Clarify instructions for using venv"}},{"before":"238b5650e2db45755bacf5b2fc5155b28a8a3512","after":"097c7bfe182237decc849b9b4bd7660e18c532bb","ref":"refs/heads/main","pushedAt":"2023-11-10T23:18:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Add instructions for using `venv`","shortMessageHtmlLink":"Add instructions for using venv"}},{"before":"c226b0fdae19ac2441ada4ae543840e5b92640f5","after":"238b5650e2db45755bacf5b2fc5155b28a8a3512","ref":"refs/heads/main","pushedAt":"2023-11-10T23:09:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Pin usable `urllib3` verions\n\n- avoids problem described in issue #19","shortMessageHtmlLink":"Pin usable urllib3 verions"}},{"before":"8b21f6386dd5d70c40abf35deb48e41f226ddd69","after":"c226b0fdae19ac2441ada4ae543840e5b92640f5","ref":"refs/heads/main","pushedAt":"2023-11-10T22:59:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Update `save_thread_result` package dependency version number → 0.1.1\n\n- similar reasoning as previous commit\n - read the previous commit message and follow the\n reference to release 0.1.1.post1 (tag `v0.1.1.post1`) in the\n `save-thread-result` for more details\n - starting with python version 3.11, `pip install` no\n longer builds ANY package with a '>=X.Y.*' version modifier\n and only accepts version modifier values of the format '>=X.Y'\n - the `save_thread_result` package also used the incorrect\n '>=X.Y.*' version modifier in all releases up to 0.1.0\n - therefore, installing `save_thread_result` version 0.1.0 fails\n - `save_thread_result` version 0.1.1 fixes the version modifier\n and `save_thread_result` version 0.1.1post1 modifies the version\n modifier from\n `python_requires = '>3.0, <4'`\n to\n `python_requires = '>=3, <4'`\n to maintain the same intended semantic requirement as\n all releases up to 0.1.0 (`python_requires = '>=3.0.*, <4'`)\n\n```\npython3.11 -m pip install .\nProcessing /Users/user/yt_videos_list/python\n Installing build dependencies ... done\n Getting requirements to build wheel ... done\n Preparing metadata (pyproject.toml) ... done\nCollecting selenium<4,>=3.141.0 (from yt-videos-list==0.6.6)\n Using cached selenium-3.141.0-py2.py3-none-any.whl (904 kB)\nCollecting save-thread-result==0.1.0 (from yt-videos-list==0.6.6)\n Using cached save-thread-result-0.1.0.tar.gz (14 kB)\n Installing build dependencies ... done\n Getting requirements to build wheel ... error\n error: subprocess-exited-with-error\n\n × Getting requirements to build wheel did not run successfully.\n │ exit code: 1\n ╰─> [1 lines of output]\n error in save-thread-result setup command: 'python_requires' must be a string containing valid version specifiers; Invalid specifier: '>=3.0.*'\n [end of output]\n\n note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: subprocess-exited-with-error\n\n× Getting requirements to build wheel did not run successfully.\n│ exit code: 1\n╰─> See above for output.\n\nnote: This error originates from a subprocess, and is likely not a problem with pip.\n```","shortMessageHtmlLink":"Update save_thread_result package dependency version number → 0.1.1"}},{"before":"8910a0f61fc1dbcba484f57d0db87d9f913582e9","after":"8b21f6386dd5d70c40abf35deb48e41f226ddd69","ref":"refs/heads/main","pushedAt":"2023-11-09T04:16:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Fix `file_contents` → `file_content` (English grammar)\n\n- this should have been included in commit 3aafda2c69381195d9ee9e8d09bc393362daa2f8\n - same reasoning as this commit","shortMessageHtmlLink":"Fix file_contentsfile_content (English grammar)"}},{"before":"394a15d9e3f3ad27ecf755f1a2e8ee894a928eec","after":"8910a0f61fc1dbcba484f57d0db87d9f913582e9","ref":"refs/heads/main","pushedAt":"2023-11-08T22:18:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Make search for existing videos in csv files more strict\n\n- makes finding existing videos more robust by\n - avoiding potentially brittle regular expression matching\n - parsing the csv columns directly","shortMessageHtmlLink":"Make search for existing videos in csv files more strict"}},{"before":"01850f5673593bb62771885032e0d4dba52479fe","after":"394a15d9e3f3ad27ecf755f1a2e8ee894a928eec","ref":"refs/heads/main","pushedAt":"2023-11-08T05:20:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Clarify instructions for using `venv`","shortMessageHtmlLink":"Clarify instructions for using venv"}},{"before":"4c5d29e274a4549dbeaf8cfcd8792157b711d23e","after":"01850f5673593bb62771885032e0d4dba52479fe","ref":"refs/heads/main","pushedAt":"2023-11-07T04:55:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Add instructions for using `venv`","shortMessageHtmlLink":"Add instructions for using venv"}},{"before":"3ad4cec46cf5846560f6e99d20e98cc84d4a4183","after":"4c5d29e274a4549dbeaf8cfcd8792157b711d23e","ref":"refs/heads/main","pushedAt":"2023-11-03T05:56:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Add instructions for using `venv`","shortMessageHtmlLink":"Add instructions for using venv"}},{"before":"5d360a0f451f07bf5735efec79cb39fc37174832","after":"3ad4cec46cf5846560f6e99d20e98cc84d4a4183","ref":"refs/heads/main","pushedAt":"2023-11-03T04:35:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Update `save_thread_result` package dependency version number → 0.1.1\n\n- similar reasoning as previous commit\n - read the previous commit message and follow the\n reference to release 0.1.1.post1 (tag `v0.1.1.post1`) in the\n `save-thread-result` for more details\n - starting with python version 3.11, `pip install` no\n longer builds ANY package with a '>=X.Y.*' version modifier\n and only accepts version modifier values of the format '>=X.Y'\n - the `save_thread_result` package also used the incorrect\n '>=X.Y.*' version modifier in all releases up to 0.1.0\n - therefore, installing `save_thread_result` version 0.1.0 fails\n - `save_thread_result` version 0.1.1 fixes the version modifier\n and `save_thread_result` version 0.1.1post1 modifies the version\n modifier from\n `python_requires = '>3.0, <4'`\n to\n `python_requires = '>=3, <4'`\n to maintain the same intended semantic requirement as\n all releases up to 0.1.0 (`python_requires = '>=3.0.*, <4'`)\n\n```\npython3.11 -m pip install .\nProcessing /Users/shail/yt_videos_list/python\n Installing build dependencies ... done\n Getting requirements to build wheel ... done\n Preparing metadata (pyproject.toml) ... done\nCollecting selenium<4,>=3.141.0 (from yt-videos-list==0.6.6)\n Using cached selenium-3.141.0-py2.py3-none-any.whl (904 kB)\nCollecting save-thread-result==0.1.0 (from yt-videos-list==0.6.6)\n Using cached save-thread-result-0.1.0.tar.gz (14 kB)\n Installing build dependencies ... done\n Getting requirements to build wheel ... error\n error: subprocess-exited-with-error\n\n × Getting requirements to build wheel did not run successfully.\n │ exit code: 1\n ╰─> [1 lines of output]\n error in save-thread-result setup command: 'python_requires' must be a string containing valid version specifiers; Invalid specifier: '>=3.0.*'\n [end of output]\n\n note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: subprocess-exited-with-error\n\n× Getting requirements to build wheel did not run successfully.\n│ exit code: 1\n╰─> See above for output.\n\nnote: This error originates from a subprocess, and is likely not a problem with pip.\n```","shortMessageHtmlLink":"Update save_thread_result package dependency version number → 0.1.1"}},{"before":"5d7c6613861594b61155f98528547b2984fc126b","after":"5d360a0f451f07bf5735efec79cb39fc37174832","ref":"refs/heads/main","pushedAt":"2023-11-02T04:58:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Fix `python_requires` value\n\n- starting with python version 3.11, `pip install` no\n longer builds the package with the\n `python_requires = '>=3.6.*, <4'` value:\n\n```\npython3.11 -m pip install .\nProcessing /Users/user/yt_videos_list/python\n Installing build dependencies ... done\n Getting requirements to build wheel ... error\n error: subprocess-exited-with-error\n\n × Getting requirements to build wheel did not run successfully.\n │ exit code: 1\n ╰─> [1 lines of output]\n error in yt_videos_list setup command: 'python_requires' must be a string containing valid version specifiers; Invalid specifier: '>=3.6.*'\n [end of output]\n\n note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: subprocess-exited-with-error\n\n× Getting requirements to build wheel did not run successfully.\n│ exit code: 1\n╰─> See above for output.\n\nnote: This error originates from a subprocess, and is likely not a problem with pip.\n```\n\n- see release 0.1.1.post1 (tag `v0.1.1.post1`) in the\n `save-thread-result` repository for an explanation about\n this change\n - the explanation there focuses on the new PyPI upload check, but\n the same reasoning (likely) applies for python releases\n starting from version 3.11","shortMessageHtmlLink":"Fix python_requires value"}},{"before":"85a2204eb74ded727b1fe2f0a337a9909ba23b1f","after":"5d7c6613861594b61155f98528547b2984fc126b","ref":"refs/heads/main","pushedAt":"2023-11-02T04:20:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Move comment closer to code it explains\n\n- refactors code to ↑ DRY\n- increases clarity","shortMessageHtmlLink":"Move comment closer to code it explains"}},{"before":"3aafda2c69381195d9ee9e8d09bc393362daa2f8","after":"85a2204eb74ded727b1fe2f0a337a9909ba23b1f","ref":"refs/heads/main","pushedAt":"2023-10-31T03:33:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Rename global variable `padding` → `PADDING`\n\n- refactors code to ↑ DRY\n- increases clarity\n- SCREAMING_SNAKE_CASE convention makes identifying use of\n the global `PADDING` variable and\n the local `padding` variable more obvious\n- adresses the following pylint errors:\n - C0103: Constant name \"padding\" doesn't conform to UPPER_CASE naming style (invalid-name)\n - W0621: Redefining name 'padding' from outer scope (line 9) (redefined-outer-name)\n - inside the `create_row` function","shortMessageHtmlLink":"Rename global variable paddingPADDING"}},{"before":"0fd7189798b791369cf10009af26702925353370","after":"3aafda2c69381195d9ee9e8d09bc393362daa2f8","ref":"refs/heads/main","pushedAt":"2023-10-28T07:50:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Fix `contents` → `content` (English grammar)\n\n- \"contents\" refers to a noun referring to \"countable things\"\n- \"content\" refers to a noun referring to \"uncountable things\"\n- for more information, see the following references:\n - https://dictionary.cambridge.org/grammar/british-grammar/content-or-contents\n - https://proofed.com/writing-tips/word-choice-content-vs-contents/\n - https://www.englishclub.com/grammar/nouns-countable.php\n - https://www.grammarly.com/grammar#sectionTwoColumns_4af8A42oKrYBbBrOETMeUm\n - \"Grammar is defined as a system of language\n rules that allows you to combine individual words\n to make complex meanings.\"","shortMessageHtmlLink":"Fix contentscontent (English grammar)"}},{"before":"b67a72e05a33a0a75a7453db4b39a534e6a330d7","after":"0fd7189798b791369cf10009af26702925353370","ref":"refs/heads/main","pushedAt":"2023-10-28T05:20:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Add `log` function calls to provide more insight about program state\n\n- logging statements now more accurately describe what the program does\n- increases clarity","shortMessageHtmlLink":"Add log function calls to provide more insight about program state"}},{"before":"8455bda2ef01bbaff38beb1738c5f89555181b15","after":"b67a72e05a33a0a75a7453db4b39a534e6a330d7","ref":"refs/heads/main","pushedAt":"2023-10-28T01:12:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"shailshouryya","name":null,"path":"/shailshouryya","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42100758?s=80&v=4"},"commit":{"message":"Move `log` function calls → `writer` module\n\n- the previous logging statements no longer accurately describe what\n the program does following changes to the file writing logic\n - relevant commits after release 0.6.6 (shown in reverse chronological order)\n - commit dca6fd1387473f6476f6671d4ccb005f5c1e5a1e\n - commit a140f60018206662debccc3d3d3608ab9eacba7d\n - commit 413def6f41827cd7e54bb98b4af15cf120dcc6d1\n - commit 8396aeb0809637a1728508b17cfc954403acad12\n- increases clarity by placing each `log` function call in direct proximity\n of the action the logging statement describes","shortMessageHtmlLink":"Move log function calls → writer module"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADuYECAAA","startCursor":null,"endCursor":null}},"title":"Activity · shailshouryya/yt-videos-list"}