GitXplorerGitXplorer
k

listparser

public
76 stars
3 forks
1 issues

Commits

List of commits on branch main.
Verified
8553317f14ffe3553ac2a5a0dc72ee009ca035ef

Merge pull request #118 from kurtmckee/use-pep-621-metadata

kkurtmckee committed 13 days ago
Verified
1bc60d3f61a115581cbcbc538c1802647546a32d

Migrate to PEP 621 metadata in `pyproject.toml`

kkurtmckee committed 13 days ago
Verified
2c09b1b989824c40aba33a2d33d05ff6bc8c2690

Merge pull request #117 from kurtmckee/mypy-settings

kkurtmckee committed 25 days ago
Verified
1e424f3f856ed6c0eb73e0b99e84f9d9e7823781

Add recommended mypy settings

kkurtmckee committed 25 days ago
Verified
7709a74ea580ad2258fb154625ad43bc317c98da

Reorder `pyproject.toml` and add section header comments

kkurtmckee committed 25 days ago
Verified
3a003c051fb0bbb3b366af10d89776279cb41afe

Merge pull request #116 from kurtmckee/rm-igoogle-support

kkurtmckee committed 25 days ago

README

The README file for this repository.

.. This file is part of listparser. Copyright 2009-2025 Kurt McKee contactme@kurtmckee.org SPDX-License-Identifier: MIT

.. image:: docs/_static/banner.png :alt: listparser: Parse OPML subscription lists in Python.


If you're building a feed reader and you need to parse OPML subscription lists, you've come to the right place!

listparser makes it easy to parse and use subscription lists in multiple formats. It supports OPML and RDF+FOAF, and runs on Python 3.9+ and on PyPy 3.10.

Usage

.. code-block:: pycon

>>> import listparser
>>> result = listparser.parse(open("feeds.opml").read())

A dictionary will be returned with several keys:

  • meta: a dictionary of information about the subscription list
  • feeds: a list of feeds
  • lists: a list of subscription lists
  • version: a format identifier like "opml2"
  • bozo: True if there is a problem with the list, False otherwise
  • bozo_exception: (if bozo is 1) a description of the problem

For convenience, the result dictionary supports attribute access for its keys.

Continuing the example:

.. code-block:: pycon

>>> result.meta.title
'listparser project feeds'
>>> len(result.feeds)
2
>>> result.feeds[0].title, result.feeds[0].url
('listparser blog', 'https://kurtmckee.org/tag/listparser')

More extensive documentation is available in the docs/ directory and online <https://listparser.readthedocs.io/en/latest/>_.

Bugs

There are going to be bugs. The best way to handle them will be to isolate the simplest possible document that susses out the bug, add that document as a test case, and then find and fix the problem.

...you can also just report the bug and leave it to someone else to fix the problem, but that won't be as much fun for you!

Bugs can be reported on GitHub <https://github.com/kurtmckee/listparser/issues>_.

Git workflow

listparser basically follows the git-flow methodology:

  • Features and changes are developed in branches off the main branch. They merge back into the main branch.
  • Feature releases branch off the main branch. The project metadata is updated (like the version and copyright years), and then the release branch merges into the releases branch. The releases branch is then tagged, and then it is merged back into main.
  • Hotfixes branch off the releases branch. As with feature releases, the project metadata is updated, the hotfix branch merges back into the releases branch, which is then tagged and merged back into main.

Development

To set up a development environment, follow these steps at a command line:

.. code-block:: shell

# Set up a virtual environment.
python -m venv .venv

# Activate the virtual environment in Linux:
. .venv/bin/activate

# ...or in Windows Powershell:
& .venv/Scripts/Activate.ps1

# Install dependencies.
python -m pip install -U pip setuptools wheel
python -m pip install poetry pre-commit tox scriv
poetry install --all-extras

# Enable pre-commit.
pre-commit install

# Run the unit tests.
tox

When submitting a PR, be sure to create and edit a changelog fragment.

.. code-block:: shell

scriv create

The changelog fragment will be created in the changelog.d/ directory. Edit the file to describe the changes you've made.