Skip to content

Commit

Permalink
Update docs post Python 3.11 (#209)
Browse files Browse the repository at this point in the history
* Post py311 readme update

* Add document for tomllib
  • Loading branch information
hukkin authored Oct 25, 2022
1 parent 95ef3cf commit b7b7ad6
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 6 deletions.
10 changes: 4 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
Tomli is a Python library for parsing [TOML](https://toml.io).
It is fully compatible with [TOML v1.0.0](https://toml.io/en/v1.0.0).

A version of Tomli, the new `tomllib` module,
will be added to the standard library in Python 3.11
A version of Tomli, the `tomllib` module,
was added to the standard library in Python 3.11
via [PEP 680](https://www.python.org/dev/peps/pep-0680/).
Tomli continues to provide a backport on PyPI for Python versions
where the standard library module is not available
Expand Down Expand Up @@ -150,10 +150,8 @@ tomllib.loads("['This parses fine with Python 3.6+']")
2.3x as fast as [toml](https://pypi.org/project/toml/)
- outputs [basic data types](#how-do-toml-types-map-into-python-types) only
- 100% spec compliant: passes all tests in
[a test set](https://github.com/toml-lang/compliance/pull/8)
soon to be merged to the official
[compliance tests for TOML](https://github.com/toml-lang/compliance)
repository
[BurntSushi/toml-test](https://github.com/BurntSushi/toml-test)
test suite
- thoroughly tested: 100% branch coverage

### Is comment preserving round-trip parsing supported?<a name="is-comment-preserving-round-trip-parsing-supported"></a>
Expand Down
55 changes: 55 additions & 0 deletions tomllib.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# `tomllib` – Tomli in the standard library

Tomli was added to the Python standard library in Python 3.11.

Relevant links:

- Python Issue Tracker: https://bugs.python.org/issue40059
- Tomli issue tracker: https://github.com/hukkin/tomli/issues/141
- Discussion on PyPA "blessing" a TOML parser and/or including one in the standard library: https://discuss.python.org/t/adopting-recommending-a-toml-parser/4068
- Python Enhancement Proposal: https://peps.python.org/pep-0680
- CPython pull request: https://github.com/python/cpython/pull/31498

## Converting Tomli to tomllib

### Sync status

`tomllib` in CPython commit https://github.com/python/cpython/commit/deaf509e8fc6e0363bd6f26d52ad42f976ec42f2
matches Tomli commit https://github.com/hukkin/tomli/commit/7e563eed5286b5d46b8290a9f56a86d955b23a9a

### Steps to convert

- Move everything in `tomli:src/tomli` to `cpython:Lib/tomllib`. Exclude `py.typed`.

- Remove `__version__ = ...` line from `cpython:Lib/tomllib/__init__.py`

- Move everything in `tomli:tests` to `cpython:Lib/test/test_tomllib`. Exclude the following test data dirs recursively:

- `tomli:tests/data/invalid/_external/`
- `tomli:tests/data/valid/_external/`

- Create `cpython:Lib/test/test_tomllib/__main__.py`:

```python
import unittest

from . import load_tests


unittest.main()
```

- Add the following to `cpython:Lib/test/test_tomllib/__init__.py`:

```python
import os
from test.support import load_package_tests


def load_tests(*args):
return load_package_tests(os.path.dirname(__file__), *args)
```

Also change `import tomli as tomllib` to `import tomllib`.

- In `cpython:Lib/tomllib/_parser.py` replace `__fp` with `fp` and `__s` with `s`. Add the `/` to `load` and `loads` function signatures.

0 comments on commit b7b7ad6

Please sign in to comment.