-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Post py311 readme update * Add document for tomllib
- Loading branch information
Showing
2 changed files
with
59 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |