Skip to content

Releases: lahwaacz/wiki-scripts

Version 1.5.1

Choose a tag to compare

@lahwaacz lahwaacz released this 02 Jan 19:54
  • Allow to run tests without pytest-docker installed

Version 1.5

Choose a tag to compare

@lahwaacz lahwaacz released this 02 Jan 09:39
  • Project structure refactoring:
    • Added pyproject.toml and modern tooling (ruff, mypy)
    • Added .editorconfig
  • Fixed issues reported by new linters
  • Added type hints (PEP 484)
  • Tests:
    • Reimplemented pytest fixtures for local MediaWiki testing
    • Added test dependencies: pytest-docker, pytest-dotenv, pytest-httpx
  • ws.checkers:
    • Dropped obsolete "HTTPS Everywhere" list and implementation
  • Switched from the requests package to httpx
    • New dependencies: httpx-retries, truststore
  • Switched from naive to timezone-aware datetime.datetime objects
    in the entire code base
  • Improved hierarchy of classes in the ws.checkers module

Version 1.4

Choose a tag to compare

@lahwaacz lahwaacz released this 02 Jan 09:28
  • Replaced the third-party modules ConfigArgParse and configfile with
    their built-in alternatives. See the merge request for details: #69

  • As a result, the configuration file format has changed. See Configuration for details on migrating your configuration.

  • The default value of the --cookie-file option was removed, so it has to be
    set explicitly in the configuration file for persistent authenticated session.

  • The --site and --cache-dir options were removed.

  • ws.checkers.ExtlinkReplacements: fixed tests, fixed replacement of
    Arch bug tracker links, added more replacements for Arch projects and other
    cases.

  • ws.checkers.ExtlinkStatusChecker:

    • refactored to take the URLs from the database and save the results there
    • skip links to invalid or blacklisted domains, detect sites behind
      CloudFlare protection
  • ws.checkers.ExtlinkStatusUpdater: new module which was split from
    ws.checkers.ExtlinkStatusChecker and contains the (updated) code
    for updating the status of extlinks on wiki pages.

  • ws.checkers.WikilinkChecker: fixed urldecoding of section anchors,
    fixed race condition between the "Archive page" and "Broken section link"
    flags, removed some old and unnecessary workarounds.

  • Simplified ws.utils.TLSAdapter using ssl_version instead of
    ssl_options.

  • Many bug fixes for the ws.db module and the checkdb.py script.

  • Migrated to SQLAlchemy 2.0:
    https://docs.sqlalchemy.org/en/20/changelog/migration_20.html

  • The ws.db module now requires SQLAlchemy with asyncio support
    and the asyncpg driver for PostgreSQL. The synchronous interface with the
    psycopg2 driver is still used as well.

  • ws.db.schema: added new tables ws_domain and ws_url_check
    for tracking the results of status checks for domains and URLs.

  • New scripts:

    • delete-unused-categories.py
    • localize-templates.py
    • mark-archived-links.py
    • race.py
    • report-problems.py (previously list-problematic-pages.py, now it
      also has an automatic report page)
    • update-page-language.py
  • Refactored scripts:

    • extlink-checker.py has a new required parameter --mode with two
      choices:

      1. check uses ws.checkers.ExtlinkStatusChecker which takes
        URLs from the database and checks their status, and
      2. update uses ws.checkers.ExtlinkStatusUpdater which takes
        the check results from the database and applies them on the wiki.

Version 1.3

Choose a tag to compare

@lahwaacz lahwaacz released this 19 Jun 08:15
1.3
  • SQL database:
    • Implemented a subset of MediaWiki API querie. Lists: allpages,
      alldeletedrevisions, allrevisions, allusers, logevents,
      protectedtitles, recentchanges; props: categories,
      deletedrevisions, extlinks, images, info, iwlinks,
      langlinks, linkshere, links, pageprops, redirects,
      revisions, sections, templates, transcludedin; including
      generator, titles and pageids parameters. See the GitHub
      issue for more information:
      #35.
    • Implemented synchronization of revisions contents (either full or just
      the latest revision for each page).
    • Fixed many bugs in the synchronization process.
    • Implemented custom parser cache, see the GitHub issue for more
      information: #42
  • Removed ws.cache.LatestRevisions module. Scripts use the SQL
    database for caching.
  • Merged several smaller scripts into list-problems.py.
  • Implemented the ws.client.api.API.move method to rename pages on
    the wiki.
  • Implemented recursive template expansion using mwparserfromhell and
    the SQL database. See ws.parser_helpers.template_expansion.
  • Implemented a regex-based function to check if a page is a redirect
    (ws.parser_helpers.wikicode.is_redirect).
  • Fixed handling of relative links and leading colons in the ws.parser_helpers.title.Title class.
  • The parameter --ssl-verify is removed, SSL certificates are always verified
    for HTTPS requests. Furthermore, TLS 1.2 or newer is required for all HTTPS
    requests.
  • And much more...

Version 1.2

Choose a tag to compare

@lahwaacz lahwaacz released this 31 Dec 12:34
1.2
  • Large refactoring: ws.core renamed to ws.client, created ws.utils, ws.statistics, ws.interlanguage
  • Added ws.client.site, ws.client.user and ws.client.redirects modules, ws.client.api.API has attributes with the appropriate instances for the current wiki.
  • Improved parsing of page titles - fixed many bugs, extended test suite, added checking of legal characters, handling of namespace aliases.
  • Added ws.autopage submodule.
  • Switched from nose to pytest for testing.
  • Added ws.db module for the synchronization of a remote wiki into a local PostgreSQL database. See the GitHub issue for more information: #35. This also means multiple new dependencies, see the README file for details.
  • Transparent automatic conversion of timestamp strings into the Python's datetime.datetime objects. As a result, manual calls to the ws.utils.parse_date and ws.utils.format_date functions should not be necessary when working with the API.

Version 1.1

Choose a tag to compare

@lahwaacz lahwaacz released this 06 Mar 15:08
1.1
  • Fixed handling of csrftoken, it is now cached and automatically renewed as
    indicated by the server responses.
  • Partial interlanguage support for update-package-templates.py: localized
    templates "Broken package link" and "aur-mirror" are respected.
  • Added the ws.parser_helpers.title module for parsing titles into
    (iwprefix, namespace, pagename, sectionname) and easy manipulation with
    the parts.
  • Removed ws.core.api.API.detect_namespace() in favour of the new
    Title <ws.parser_helpers.title.Title> parser.
  • Improved exception logging in API.edit() <ws.core.api.API.edit>.
    Both ws.core.api.API.edit() and
    ws.interactive.edit_interactive() now take an additional title
    parameter representing the title of the page being edited.
  • Added support for WikEdDiff, an inline-style diff engine with
    block move support and splitting optimized for MediaWiki markup.
    pygments is now used only as a fallback.
  • The link-checker.py script has been improved to consider the
    DISPLAYTITLE property of pages and links to sections are checked base on
    the sections existing on the target page.
  • Added --connection-max-retries and --connection-timeout options.
  • Added toc.py script to update the "Table of contents" page on the wiki.

Version 1.0

Choose a tag to compare

@lahwaacz lahwaacz released this 19 Aug 19:18
1.0
  • Major reorganization of the project structure: common code shared between the
    scripts has been moved to the ws module and the original
    MediaWiki module has been renamed to ws.core, some of its
    parts were moved directly to ws.
  • Reorganization of the ws.parser_helpers submodule, added
    ws.parser_helpers.encodings.
  • Expanded documentation, fixed many typos in docstrings.
  • Expanded test suite, at least for parts not depending on the MediaWiki API.
  • Generalized the ws.core.connection.Connection class to handle also
    the index.php entry point.
  • Created the ws.core.lazy.LazyProperty decorator and made
    ws.core.api.API.is_loggedin, ws.core.api.API.user_rights
    and ws.core.api.API.namespaces proper properties.
  • Started using the logging module for messages.
  • New unified configuration interface for all scripts, using the
    ws.config submodule. See Configuration <configuration>_ for
    details.
    • Basically all scripts were modified to use the ws.config
      interface.
    • Default cookie path was changed from $XDG_CACHE_HOME to
      $XDG_CACHE_HOME/wiki-scripts.
    • Some command line arguments were renamed because of global configuration in
      a config file.
  • Added also assert=bot to all bot editing queries.
  • Fixed bugs:
    • formatting of streak timestamps in the statistic.py script
    • namespace prefix parsing in ws.core.api.API.detect_namespace
    • extraction of header elements in case they are nested inside e.g.
      <noinclude> tags
    • whitespace squashing in the
      ws.parser_helpers.wikicode.remove_and_squash function
    • query-continuation algorithm (used to fail with generator queries with
      multiple values in the prop query parameter)
    • JSON serialization of non-str keys
    • exception catching for opening cookies
  • Improved scripts:
    • statistics.py (minor bug fixes)
    • update-interlanguage-links.py (heavy refactoring)
    • check-user-namespace.py (warn if user pages are categorized)
    • list-redirects-broken-fragments.py (improved detection of redirects with
      broken fragments by comparing dot-encoded fragments)
    • dump.py (deduplicated against ws.core.connection.Connection)
  • New scripts:
    • recategorize-over-redirect.py