From 2965c31e8cb0e02b96b2e8e5c802cc0649ff8abf Mon Sep 17 00:00:00 2001 From: Cody Logan Date: Thu, 16 Nov 2023 17:02:20 -0800 Subject: Add docstring to wikiget package --- src/wikiget/__init__.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/wikiget/__init__.py b/src/wikiget/__init__.py index e0584bb..698fe46 100644 --- a/src/wikiget/__init__.py +++ b/src/wikiget/__init__.py @@ -15,6 +15,30 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Wikiget is a tool for downloading files from MediaWiki sites. + +It's similar in conception to download tools like wget, but wikiget can use the name of +the file or the URL of its description page to get the actual file's URL and download +it. Additionally, it can download multiple files at once by reading the targets from a +given text file. + +Further documentation can be found in the accompanying README.md file or at +. + +Basic usage:: + + wikiget [options] FILE + wikiget [options] [-a|--batch] BATCHFILE + +Examples:: + + wikiget File:Example.jpg + wikiget --site en.wikipedia.org File:Example.jpg + wikiget https://en.wikipedia.org/wiki/File:Example.jpg -o output.jpg + wikiget -a -j4 batch.txt + +""" + from mwclient import __version__ as mwclient_version from wikiget.version import __version__ -- cgit v1.2.3 From 0c93e4a19e0883d279e799c28625abbc262f3975 Mon Sep 17 00:00:00 2001 From: Cody Logan Date: Fri, 17 Nov 2023 11:28:28 -0800 Subject: Exit program more gracefully on keyboard interrupt --- src/wikiget/wikiget.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/wikiget/wikiget.py b/src/wikiget/wikiget.py index ca211af..cac8694 100644 --- a/src/wikiget/wikiget.py +++ b/src/wikiget/wikiget.py @@ -138,5 +138,10 @@ def cli() -> None: logger.info("Starting download session using wikiget %s", wikiget.__version__) logger.debug("User agent: %s", wikiget.USER_AGENT) - exit_code = process_download(args) - sys.exit(exit_code) + try: + exit_code = process_download(args) + except KeyboardInterrupt: + logger.critical("Interrupted by user") + exit_code = 130 + finally: + sys.exit(exit_code) -- cgit v1.2.3 From d78f25717567870d4bb991e9bca7451f925f29ac Mon Sep 17 00:00:00 2001 From: Cody Logan Date: Fri, 17 Nov 2023 14:49:02 -0800 Subject: Add missing docstrings for modules --- src/wikiget/client.py | 2 ++ src/wikiget/dl.py | 2 ++ src/wikiget/exceptions.py | 2 ++ src/wikiget/file.py | 2 ++ src/wikiget/logging.py | 2 ++ src/wikiget/parse.py | 2 ++ src/wikiget/validations.py | 2 ++ src/wikiget/version.py | 4 +++- src/wikiget/wikiget.py | 2 ++ 9 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/wikiget/client.py b/src/wikiget/client.py index 2fc4a6c..3a6e40f 100644 --- a/src/wikiget/client.py +++ b/src/wikiget/client.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Handle API calls (via mwclient) for site and image information.""" + import logging from argparse import Namespace diff --git a/src/wikiget/dl.py b/src/wikiget/dl.py index 722bf62..5e2a6cb 100644 --- a/src/wikiget/dl.py +++ b/src/wikiget/dl.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Prepare and process file downloads.""" + import logging import sys from argparse import Namespace diff --git a/src/wikiget/exceptions.py b/src/wikiget/exceptions.py index c72a589..d9ca8b3 100644 --- a/src/wikiget/exceptions.py +++ b/src/wikiget/exceptions.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Define exceptions specific to the program.""" + class ParseError(Exception): """Raised when some input is unable to be parsed as valid.""" diff --git a/src/wikiget/file.py b/src/wikiget/file.py index a362aff..36ce892 100644 --- a/src/wikiget/file.py +++ b/src/wikiget/file.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Define a File class for representing individual files to be downloaded.""" + from pathlib import Path from mwclient.image import Image diff --git a/src/wikiget/logging.py b/src/wikiget/logging.py index 6614a15..e5b955a 100644 --- a/src/wikiget/logging.py +++ b/src/wikiget/logging.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Configure program log configuration and adapters.""" + from __future__ import annotations import logging diff --git a/src/wikiget/parse.py b/src/wikiget/parse.py index 1deaacf..026062e 100644 --- a/src/wikiget/parse.py +++ b/src/wikiget/parse.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Parse download targets and batch files.""" + from __future__ import annotations import fileinput diff --git a/src/wikiget/validations.py b/src/wikiget/validations.py index 7c2b5ae..bde39df 100644 --- a/src/wikiget/validations.py +++ b/src/wikiget/validations.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Validate file and site input and verify file hashes.""" + from __future__ import annotations import hashlib diff --git a/src/wikiget/version.py b/src/wikiget/version.py index 804c60f..0fe1802 100644 --- a/src/wikiget/version.py +++ b/src/wikiget/version.py @@ -15,4 +15,6 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . -__version__ = "0.8.0" +"""Set the version string of the program.""" + +__version__ = "0.8.0.dev0" diff --git a/src/wikiget/wikiget.py b/src/wikiget/wikiget.py index cac8694..870f7a2 100644 --- a/src/wikiget/wikiget.py +++ b/src/wikiget/wikiget.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Wikiget. If not, see . +"""Set up the command-line interface and handle program start and exit.""" + from __future__ import annotations import argparse -- cgit v1.2.3