File: tomllib.md

package info (click to toggle)
python-tomli 2.2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,208 kB
  • sloc: python: 1,129; makefile: 7
file content (55 lines) | stat: -rw-r--r-- 1,776 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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.