pax_global_header00006660000000000000000000000064145345115260014520gustar00rootroot0000000000000052 comment=8f72a81cb37934796939270116b7b7b7de888f88 mf2py-2.0.1/000077500000000000000000000000001453451152600125555ustar00rootroot00000000000000mf2py-2.0.1/.github/000077500000000000000000000000001453451152600141155ustar00rootroot00000000000000mf2py-2.0.1/.github/workflows/000077500000000000000000000000001453451152600161525ustar00rootroot00000000000000mf2py-2.0.1/.github/workflows/tests.yml000066400000000000000000000057561453451152600200540ustar00rootroot00000000000000name: Run Python Tests on: push jobs: build-macos: strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] runs-on: "macos-latest" steps: - name: Install md5sha1sum run: brew install md5sha1sum - uses: actions/checkout@v3 with: python-version: ${{ matrix.python-version }} - name: Install Python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install Poetry uses: snok/install-poetry@v1 with: version: 1.5.1 virtualenvs-in-project: true - name: Install dependencies run: poetry install --no-interaction --no-root - name: Install library run: poetry install --no-interaction - name: Run tests run: poetry run make tests - uses: psf/black@stable with: options: "--check --verbose" src: "./" version: "23.3" - uses: isort/isort-action@v1 build-linux: strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] runs-on: "ubuntu-latest" steps: - name: Install libxml2 run: | sudo apt-get update sudo apt-get install libxml2 libxml2-dev libxslt1-dev - uses: actions/checkout@v3 with: python-version: ${{ matrix.python-version }} - name: Install Python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install Poetry uses: snok/install-poetry@v1 with: version: 1.5.1 virtualenvs-in-project: true - name: Install dependencies run: poetry install --no-interaction --no-root - name: Install library run: poetry install --no-interaction - name: Run tests run: poetry run make tests - uses: psf/black@stable with: options: "--check --verbose" src: "./" version: "23.3" - uses: isort/isort-action@v1 build-windows: strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] runs-on: "windows-latest" defaults: run: shell: bash steps: - uses: actions/checkout@v3 with: python-version: ${{ matrix.python-version }} - name: Install Python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install Poetry uses: snok/install-poetry@v1 with: version: 1.5.1 virtualenvs-in-project: true - name: Install dependencies run: poetry install --no-interaction --no-root - name: Install library run: poetry install --no-interaction - name: Run tests run: poetry run make tests - uses: psf/black@stable with: options: "--check --verbose" src: "./" version: "23.3" # - uses: isort/isort-action@v1 mf2py-2.0.1/.gitignore000066400000000000000000000001561453451152600145470ustar00rootroot00000000000000.DS_Store *.swp *.pyc .idea/ .eggs/ build/ dist/ local/ mf2py.egg-info/ nbproject/ venv/ *~ poetry.lock site/ mf2py-2.0.1/CHANGELOG.md000066400000000000000000000157751453451152600144050ustar00rootroot00000000000000# Change Log All notable changes to this project will be documented in this file. ## 2.0.1 - 2023-12-07 The mf2py library is excited to transition into 2.0. This version increase incorporates months of work from contributors, informed by active discussions among implementers and users. This release officially deprecates support for versions of Python lower than 3.8. Below are the changes we have made in this release. ### New Features - Enable `img_with_alt` by default (#184) - Add timezone offset normalisation (#206) - Add option for exposing DOM for embedded properties (#208) - Add srcset support (#209) - Add language support (#210) - Add option for filtering root class names (#211) - Add option for metaformats support (#213) ### Changes - Remove `img_with_alt` option entirely (#200) - Resolve implied photo relative paths (#205) - Make relative URLs in embedded properties absolute (#201) - Fix whitespace in plaintext conversion (#207) - Replace `dict_class` with standard `dict` (#196) ### Tests, Library and Documentation Maintenance - Update tests to include alt texts by default (#190) - Add Windows and macOS tests (#198) - Use poetry for dependency management (#189) - Deprecate Python 2 support (#179) - Lint code with `black` and `isort` - Add linting CI actions (#193) - Move from `nosetests` to `pytest` (#186) - Add 3.11, 3.12 and drop pypy from test matrix; upgrade poetry action (#204) - Prepare tests to test options (#214) - Bring README doctests up-to-date (#215) ## 1.1.3 - 2022-06-28 - reduce instances where photo is implied (#135) - always do relative URL resolution (#138) - VCP now handles tz offsets without leading zeros (#142) - implement id parsing (#143) - fix outdated syntax causing SyntaxWarning (#157) ## 1.1.2 - 2018-08-08 - add parsing for iframe.u-*[src] (#116) - bug fix: reduced implied urls (#117) - bug fix: don't collapse whitespace between tags - specify explicit versions for dependencies - revert BeautifulSoup copying added in 1.1.1 due to bugs (eg #108) - misc performance improvements ## 1.1.1 - 2018-06-15 - streamline backcompat to use JSON only. - fix multiple mf1 root rel-tag parsing - correct url and photo for hreview. - add rules for nested hreview. update backcompat to use multiple matches in old properties. - fix `rel-tag` to `p-category` conversion so that other classes are not lost. - use original authored html for `e-*` parsing in backcompat - make classes and rels into unordered (alphabetically ordered) deduped arrays. - only use class names for mf2 which follow the naming rules - fix `parse` method to use default html parser. - always use the first value for attributes for rels. - correct AM/PM conversion in datetime value class pattern. - add ordinal date parsing to datetimes value class pattern. ordinal date is normalised to YYYY-MM-DD - remove hack for html tag classes since that is fixed in new BS - better whitespace algorithm for `name` and `html.value` parsing - experimental flag for including `alt` in `u-photo` parsing - make a copy of the BeautifulSoup given by user to work on for parsing to prevent changes to original doc - bump version to 1.1.1 ## 1.1.0 - 2018-03-16 - bump version to 1.1.0 since it is a "major" change - added tests for new implied name rules - modified earlier tests to accommodate new rules - use space separator instead of "T" - Don't add "00" seconds unless authored - use TZ authored in separate `value` element - only use first found `value` of a particular type `date`, `time`, or `timezone`. - move backcompat rules into JSON files - reorganise value class pattern parsing into new files - add datetime_helpers to organise datetime parsing rules - reorganise tests - remove Heroku frontend, point to mf2py-web and python.microformats.io instead in README. - remove Flask and gunicorn requirements - add debug info with description, version, url and the html parser used ## 1.0.6 - 2018-03-04 - strip leading/trailing white space for `e-*[html]`. update the corresponding tests - blank values explicitly authored are allowed as property values - include `alt` or `src` from `` in parsing for `p-*` and `e-*[value]` - parse `title` from `` for `p-*` resolves #84 - and `poster` from `