Skip to content

Commit

Permalink
Update project meta files
Browse files Browse the repository at this point in the history
- Bump version in pyproject
- Tighten changelog
- Tighten makefile
- Tighten/update contributors
- Tighten/update/automate documentation
  - Add dev deps to pyproject
  - Add docs generation to makefile
  - Reuse readme and changelog from project root
  - Hide `Parser.parse()`
  • Loading branch information
Angelo Gladding committed Dec 8, 2023
1 parent 5493eea commit 033ee80
Show file tree
Hide file tree
Showing 11 changed files with 201 additions and 319 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ mf2py.egg-info/
nbproject/
venv/
*~
poetry.lock
poetry.lock
site/
167 changes: 167 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
# Change Log
All notable changes to this project will be documented in this file.

## 2.0.0 - 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 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 `<img>` in parsing for `p-*` and `e-*[value]`
- parse `title` from `<link>` for `p-*` resolves #84
- and `poster` from `<video>` for `u-*` resolves #76
- use `html5lib` as default parser
- use the final redirect URL resolves #62
- update requirements to use BS4 v4.6.0 and html5lib v1.0.1
- drop support for Python 2.6 as html5lib dropped support

## 1.0.5 - 2016-05-09
- Implied property checks now ignore alt="", treating it the same as
if no alt value is defined.
- Support for using a custom dict implementation by setting
mf2py.Parser.dict_class. collections.OrderedDict yields much nicer
output for hosted parsers.

## 1.0.4 - 2016-03-21
- Performance improvement changing simple calls to soup.find_all to
a manual iteration over .contents.

## 1.0.3 - 2016-02-05
- Performance improvement by limiting number of calls to soup.find_all
in backcompat module. Should not be any functional changes.

## 1.0.2 - 2016-01-26
- Backward compatibility parsing for rel=tag properties. These are now converted
to p-category based on the last path segment of the tag URI as spec'd in
http://microformats.org/wiki/h-entry#Parser_Compatibility
- Optional property html_parser to specify the html parser that BeautifulSoup
should use (e.g., "lxml" or "html5lib")

## 1.0.1 - 2015-12-11
- `u-*` properties are now parsed from `<link>` elements per the updated spec
http://microformats.org/wiki/microformats2-parsing-issues#link_elements_and_u-_parsing

## 1.0.0 - 2015-10-05
- Version number bumped to 1.0.0 following community discussion.

## 0.2.8 - 2015-09-21
- Stricter checks that Parser.__init__ params are actually None before
ignoring them.

## 0.2.7 - 2015-08-03
- Now produces unicode strings for every key and value, no more byte
strings anywhere.
- Do not add 'T' between date and time when normalizing dates
- Unit tests for running the microformats test suite

## 0.2.6 - 2015-05-06
- New top-level "rel-urls" entry, contains rich data parsed from rel
links, organized by URL.

## 0.2.5 - 2015-03-01
- convenience method `mf2py.parse` that takes the same arguments as Parser
and returns a dict.
- nested h-* classes now parse their "value" based on the property
they represent (p-*, u-*, dt-*), so for example "p-in-reply-to
h-cite" would have a name as its value and "u-in-reply-to h-cite"
will have a URL.

## 0.2.4 - 2015-02-13
- Add rel=bookmark to backward compat parsing rules based (translated
to u-url in mf2)
- Parser constructor now takes explicit named arguments instead of
**kwargs, for saner behavior when called with unnamed arguments.
- Bugfix: Empty href="" attributes are now properly interpreted as
the current document's URL.

## 0.2.3 - 2015-02-07
- Minor Py3 compatibility fix
- Correct typo `test_requires` -> `tests_require` in setup.py

## 0.2.2 - 2015-02-05
- Started keeping a changelog!
- Use a better method for extracting HTML for an e-* property
- Correct BeautifulSoup4 dependency in setup.py to fix error with
installation from PyPI.
- Buffed up docstrings for public methods.
12 changes: 6 additions & 6 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Contributors

- Tom Morris <[email protected]> http://tommorris.org/
- Barnaby Walters http://waterpigs.co.uk
- Tom Morris <[email protected]> https://tommorris.org
- Barnaby Walters https://waterpigs.co.uk
- Kartik Prabhu <[email protected]> https://kartikprabhu.com
- Kyle Mahan <[email protected]> https://kylewm.com
- Kevin Marks <[email protected]> http://www.kevinmarks.com/
- Kyle Mahan https://github.com/kylewm
- Kevin Marks <[email protected]> https://www.kevinmarks.com
- James <[email protected]> https://jamesg.blog
- Angelo Gladding <[email protected]> https://ragt.ag
- Paweł Miech https://pawelmhm.github.io/
- Sven Knebel https://www.svenknebel.de
- Paweł Miech https://pawelmhm.github.io
- Sven Knebel https://www.svenknebel.de
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ install:
poetry install
tests:
poetry run pytest -s -vv --doctest-modules --doctest-glob README*
publish:
poetry publish --build
lint:
poetry run black .
poetry run isort .
docs_dev:
poetry run mkdocs serve
docs_deploy:
poetry run mkdocs gh-deploy
publish:
poetry publish --build
13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,20 @@

## Welcome 👋

`mf2py` is a Python [microformats](https://microformats.org/wiki/microformats) parser with full support for `microformats2` and `microformats1`.
`mf2py` is a Python [microformats](https://microformats.org/wiki/microformats) parser with full support for `microformats2`, backwards-compatible support for `microformats1` and experimental support for `metaformats`.

## Installation 💻

To install `mf2py`, run the following command:
To install `mf2py` run the following command:

```bash
pip install mf2py
$ pip install mf2py

```

## Quickstart 🚀

Import the parser using:
Import the library:

```pycon
>>> import mf2py
Expand Down Expand Up @@ -77,9 +78,9 @@ Import the parser using:

```

## Extensions
## Experimental Options

The following extensions can be invoked via keyword arguments to `parse()` and `Parser()`.
The following options can be invoked via keyword arguments to `parse()` and `Parser()`.

### `expose_dom`

Expand Down
Loading

0 comments on commit 033ee80

Please sign in to comment.