././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/CHANGELOG.md 0000644 0000000 0000000 00000044414 14643451625 012036 0 ustar 00 # Change Log
## [unreleased]
## [0.13.0] - 2024-07-10
### Changed
- Expect a tomlkit-specific error instead of `TypeError` from a custom encoder. ([#355](https://github.com/python-poetry/tomlkit/issues/355))
- Drop support for Python older than 3.8. Remove 3.7 from the CI matrix.
### Fixed
- Fix the incompatiblity with 3.13 because of the `datetime.replace()` change. ([#333](https://github.com/python-poetry/tomlkit/issues/333))
- Revert the change of parsing out-of-order tables. ([#347](https://github.com/python-poetry/tomlkit/issues/347))
- Keep the nested out-of-order table. ([#361](https://github.com/python-poetry/tomlkit/issues/361))
## [0.12.5] - 2024-05-08
### Fixed
- Remove the extra minus sign added to the float value after calculation. ([#341](https://github.com/python-poetry/tomlkit/issues/341))
- Fix unexpected newline added after accessing the out-of-order table. ([#343](https://github.com/python-poetry/tomlkit/issues/343))
## [0.12.4] - 2024-02-27
### Fixed
- Support `|` and `|=` operator for tables, and support `+` and `+=` operator for arrays. ([#331](https://github.com/sdispater/tomlkit/issues/331))
- Fix an index error when setting dotted keys in a table. ([#332](https://github.com/sdispater/tomlkit/issues/332))
## [0.12.3] - 2023-11-15
### Fixed
- Improve the performance when parsing a table with nested dotted keys. ([#193](https://github.com/sdispater/tomlkit/issues/193))
- Keep the newlines when replacing a table. ([#323](https://github.com/sdispater/tomlkit/issues/323))
## [0.12.2] - 2023-11-02
### Fixed
- Fixed a bug that overwriting a sub table with a plain value raises an error. ([#313](https://github.com/sdispater/tomlkit/issues/313))
- Correct the return type of integer division. ([#312](https://github.com/sdispater/tomlkit/issues/312))
## [0.12.1] - 2023-07-27
### Fixed
- Make float and int hashable.
## [0.12.0] - 2023-07-27
### Added
- Allow users to specify encoders for custom types. ([#296](https://github.com/sdispater/tomlkit/issues/296))
### Fixed
- Fix the incorrect sort when building a table with dotted keys.
- Complete the methods required for integer and float items. ([#307](https://github.com/sdispater/tomlkit/issues/307))
- Replace the deprecated usage of `datetime.utcnow()`. ([#308](https://github.com/sdispater/tomlkit/issues/308))
- Minor performance improvements when iterating over the escape sequences. ([#304](https://github.com/sdispater/tomlkit/issues/304))
## [0.11.8] - 2023-04-27
### Fixed
- Remove the extra indentations added when parsing nested sub-tables. ([#256](https://github.com/sdispater/tomlkit/issues/256))
- Ignore the CRLF immediately following a multiple basic string opening. ([#262](https://github.com/sdispater/tomlkit/issues/262))
- Stringifying subtables and nested tables in arrays of tables. ([#283](https://github.com/sdispater/tomlkit/issues/283))
- Messed table structure when building a table with dotted keys. ([#284](https://github.com/sdispater/tomlkit/issues/284))
## [0.11.7] - 2023-03-27
### Fixed
- Parse empty table name if it is quoted. ([#258](https://github.com/sdispater/tomlkit/issues/258))
- Fix a bug that remove last element of an Inline Table leaves a comma. ([#259](https://github.com/sdispater/tomlkit/issues/259))
- Parse datetime when it is followed by a space. ([#260](https://github.com/sdispater/tomlkit/issues/260))
- Fix the `unwrap()` method for `Container` children values which sometimes returns an internal object if the table is an out-of-order table. ([#264](https://github.com/sdispater/tomlkit/issues/264))
- Fix the wrong return type when doing arithmetic operations between integers and floats. ([#270](https://github.com/sdispater/tomlkit/issues/270))
## [0.11.6] - 2022-10-27
### Fixed
- Allow broader type for toml file path value ([#243](https://github.com/sdispater/tomlkit/issues/243))
- Auto-determine if a table is a super table if not specified explicitly. ([#245](https://github.com/sdispater/tomlkit/issues/245))
## [0.11.5] - 2022-09-28
### Fixed
- Fix the type annotation of `unwrap()` and datetime parsing. ([#229](https://github.com/sdispater/tomlkit/issues/229))
- Clear the existing table header when it is adding to another table. ([#230](https://github.com/sdispater/tomlkit/issues/230))
- Fix a bug that escape chars are lost after concat with another string. ([#235](https://github.com/sdispater/tomlkit/issues/235))
- Fix a rendering issue of tables inside arrays or inline tables. ([#236](https://github.com/sdispater/tomlkit/issues/236))
## [0.11.4] - 2022-08-12
### Fixed
- Fix a memory leak caused by `lru_cache` on methods. ([#227](https://github.com/sdispater/tomlkit/issues/227))
## [0.11.3] - 2022-08-10
### Fixed
- Fix a regression issue that copying an array results in extra `None` items. ([#221](https://github.com/sdispater/tomlkit/issues/221))
- Fix a regression of `array.add_line` that it incorrectly adds a comma to non-value lines. ([#223](https://github.com/sdispater/tomlkit/issues/223))
## [0.11.2] - 2022-08-08
### Fixed
- Fix adding float to an integer value. ([#215](https://github.com/sdispater/tomlkit/issues/215))
- Keep the end-of-array style when adding items to or removing items from an array. ([#213](https://github.com/sdispater/tomlkit/issues/213), [#216](https://github.com/sdispater/tomlkit/issues/216))
- Fix a bug of redundant table header shown when removing children from a super table. ([#217](https://github.com/sdispater/tomlkit/issues/219))
## [0.11.1] - 2022-07-07
### Changed
- Keep consistent line endings when changing files. ([#201](https://github.com/sdispater/tomlkit/issues/201))
- Make `KeyAlreadyPresent` and `InvalidStringError` subclasses of `ParseError`. ([#202](https://github.com/sdispater/tomlkit/issues/202))
- Remove empty table from `OutOfOrderTableProxy` when deleting items. ([#204](https://github.com/sdispater/tomlkit/issues/204))
- Raise errors when trying to access unsupported methods on `OutOfOrderTableProxy`. ([#205](https://github.com/sdispater/tomlkit/issues/205))
### Fixed
- Fix `unwrap()` for String values to remove the quotes. ([#199](https://github.com/sdispater/tomlkit/issues/199))
## [0.11.0] - 2022-05-24
### Added
- Add `unwrap` methods that return tomlkit objects recursively converted to plain python objects. ([#43](https://github.com/sdispater/tomlkit/issues/43))
## [0.10.2] - 2022-04-24
### Fixed
- Use the plain python string representation of `Key` in `KeyAlreadyPresent` error message. ([#185](https://github.com/sdispater/tomlkit/issues/185))
- Fix the `astimezone()` and `replace()` methods of datetime objects. ([#188](https://github.com/sdispater/tomlkit/issues/188))
- Add type definitions for `items()` function. ([#190](https://github.com/sdispater/tomlkit/issues/190))
## [0.10.1] - 2022-03-27
### Fixed
- Preserve the newlines before super tables when rendering. ([#178](https://github.com/sdispater/tomlkit/issues/178))
- Fix the bug that comments are appended with comma when rendering a multiline array. ([#181](https://github.com/sdispater/tomlkit/issues/181))
## [0.10.0] - 2022-02-18
### Fixed
- Fix the only child detection when creating tables. ([#175](https://github.com/sdispater/tomlkit/issues/175))
- Include the `docs/` directory and `CHANGELOG.md` in sdist tarball. ([#176](https://github.com/sdispater/tomlkit/issues/176))
### Added
- Add keyword arguments to `string` API to allow selecting the representation type. ([#177](https://github.com/sdispater/tomlkit/pull/177))
## [0.9.2] - 2022-02-08
### Changed
- When a table's only child is a table or array of table, it is created as a super table. ([#175](https://github.com/sdispater/tomlkit/issues/175))
## [0.9.1] - 2022-02-07
### Fixed
- Fix a bug of separators not being kept when replacing the value. ([#170](https://github.com/sdispater/tomlkit/issues/170))
- Tuples should be dumped as TOML arrays. ([#171](https://github.com/sdispater/tomlkit/issues/171))
## [0.9.0] - 2022-02-01
### Added
- Add a new argument to `table` API to allow it to be a super table. ([#159](https://github.com/sdispater/tomlkit/pull/159))
- Support adding item to `Table` and `Container` with dotted key. ([#160](https://github.com/sdispater/tomlkit/pull/160))
### Fixed
- Fix a bug of `value()` API that parses string incompletely. ([#168](https://github.com/sdispater/tomlkit/pull/168))
## [0.8.0] - 2021-12-20
### Changed
- Drop support for Python<3.6. ([#151](https://github.com/sdispater/tomlkit/pull/151))
- Comply with TOML v1.0.0. ([#154](https://github.com/sdispater/tomlkit/pull/154))
### Fixed
- Support copy protocols for table items. ([#65](https://github.com/sdispater/tomlkit/issues/65))
- Escape characters in double quoted key string. ([#136](https://github.com/sdispater/tomlkit/issues/136))
- Fix the invalid dumping output of multiline array when it is empty. ([#139](https://github.com/sdispater/tomlkit/issues/139))
- Fix a bug that tomlkit accepts an invalid table with missing `=`. ([#141](https://github.com/sdispater/tomlkit/issues/141))
- Fix the invalid dumping output when the key is empty. ([#143](https://github.com/sdispater/tomlkit/issues/143))
- Fix incorrect string returned by dumps when moving/renaming table. ([#144](https://github.com/sdispater/tomlkit/issues/144))
- Fix inconsistent dumps when replacing existing item with nested table. ([#145](https://github.com/sdispater/tomlkit/issues/145))
- Fix invalid dumps output when appending to a multiline array. ([#146](https://github.com/sdispater/tomlkit/issues/146))
- Fix the `KeyAlreadyPresent` when the table is separated into multiple parts. ([#148](https://github.com/sdispater/tomlkit/issues/148))
- Preserve the line endings in `TOMLFile`. ([#149](https://github.com/sdispater/tomlkit/issues/149))
## [0.7.2] - 2021-05-20
### Fixed
- Fixed an error where container's data were lost when copying. ([#126](https://github.com/sdispater/tomlkit/pull/126))
- Fixed missing tests in the source distribution of the package. ([#127](https://github.com/sdispater/tomlkit/pull/127))
## [0.7.1] - 2021-05-19
### Fixed
- Fixed an error with indent for nested table elements when updating. ([#122](https://github.com/sdispater/tomlkit/pull/122))
- Fixed various issues with dict behavior compliance for containers. ([#122](https://github.com/sdispater/tomlkit/pull/122))
- Fixed an internal error when empty tables were present after existing ones. ([#122](https://github.com/sdispater/tomlkit/pull/122))
- Fixed table representation for dotted keys. ([#122](https://github.com/sdispater/tomlkit/pull/122))
- Fixed an error in top level keys handling when building documents programmatically. ([#122](https://github.com/sdispater/tomlkit/pull/122))
- Fixed compliance with mypy by adding a `py.typed` file. ([#109](https://github.com/sdispater/tomlkit/pull/109))
## [0.7.0] - 2020-07-31
### Added
- Added support for sorting keys when dumping raw dictionaries by passing `sort_keys=True` to `dumps()` ([#103](https://github.com/sdispater/tomlkit/pull/103)).
### Changed
- Keys are not longer sorted by default when dumping a raw dictionary but the original order will be preserved ([#103](https://github.com/sdispater/tomlkit/pull/103)).
### Fixed
- Fixed compliance with the 1.0.0rc1 TOML specification ([#102](https://github.com/sdispater/tomlkit/pull/102)).
## [0.6.0] - 2020-04-15
### Added
- Added support for heterogeneous arrays ([#92](https://github.com/sdispater/tomlkit/pull/92)).
## [0.5.11] - 2020-02-29
### Fixed
- Fix containers and our of order tables dictionary behavior ([#82](https://github.com/sdispater/tomlkit/pull/82)))
## [0.5.10] - 2020-02-28
### Fixed
- Fixed out of order tables not behaving properly ([#79](https://github.com/sdispater/tomlkit/pull/79))
## [0.5.9] - 2020-02-28
### Fixed
- Fixed the behavior for out of order tables ([#68](https://github.com/sdispater/tomlkit/pull/68)).
- Fixed parsing errors when single quotes are present in a table name ([#71](https://github.com/sdispater/tomlkit/pull/71)).
- Fixed parsing errors when parsing some table names ([#76](https://github.com/sdispater/tomlkit/pull/76)).
## [0.5.8] - 2019-10-11
### Added
- Added support for producing multiline arrays
## [0.5.7] - 2019-10-04
### Fixed
- Fixed handling of inline tables.
## [0.5.6] - 2019-10-04
### Fixed
- Fixed boolean comparison.
- Fixed appending inline tables to tables.
## [0.5.5] - 2019-07-01
### Fixed
- Fixed display of inline tables after element deletion.
## [0.5.4] - 2019-06-30
### Fixed
- Fixed the handling of inline tables.
- Fixed date, datetime and time handling on Python 3.8.
- Fixed behavior for sub table declaration with intermediate tables.
- Fixed behavior of `setdefault()` on containers (Thanks to [@AndyKluger](https://github.com/AndyKluger)).
- Fixed tables string representation.
## [0.5.3] - 2018-11-19
### Fixed
- Fixed copy of TOML documents.
- Fixed behavior on PyPy3.
## [0.5.2] - 2018-11-09
### Fixed
- Fixed table header missing when replacing a super table's sub table with a single item.
- Fixed comments being displayed in inline tables.
- Fixed string with non-scalar unicode code points not raising an error.
## [0.5.1] - 2018-11-08
### Fixed
- Fixed deletion and replacement of sub tables declared after other tables.
## [0.5.0] - 2018-11-06
### Changed
- Improved distinction between date(time)s and numbers.
### Fixed
- Fixed comma handling when parsing arrays. (Thanks to [@njalerikson](https://github.com/njalerikson))
- Fixed comma handling when parsing inline tables. (Thanks to [@njalerikson](https://github.com/njalerikson))
- Fixed a `KeyAlreadyPresent` error when declaring a sub table after other tables.
## [0.4.6] - 2018-10-16
### Fixed
- Fixed string parsing behavior.
## [0.4.5] - 2018-10-12
### Fixed
- Fixed trailing commas not raising an error for key/value.
- Fixed key comparison.
- Fixed an error when using pickle on TOML documents.
## [0.4.4] - 2018-09-01
### Fixed
- Fixed performances issues while parsing on Python 2.7.
## [0.4.3] - 2018-08-28
### Fixed
- Fixed handling of characters that need escaping when inserting/modifying a string element.
- Fixed missing newline after table header.
- Fixed dict-like behavior for tables and documents.
## [0.4.2] - 2018-08-06
### Fixed
- Fixed insertion of an element after deletion.
## [0.4.1] - 2018-08-06
### Fixed
- Fixed adding an element after another element without a new line.
- Fixed parsing of dotted keys inside tables.
- Fixed parsing of array of tables with same prefix.
## [0.4.0] - 2018-07-23
### Added
- `dumps()` now also accepts a raw dictionary.
### Changed
- `add()`/`append()`/`remove()` now return the current `Container`/`Table` to provide a fluent interface.
- Most items not behave like their native counterparts.
### Fixed
- Fixed potential new lines inside an inline table.
## [0.3.0] - 2018-07-20
### Changed
- Make new dicts automatically sorted when dumped.
- Improved new elements placement when building.
- Automatically convert lists of dicts to arrays of tables.
- No longer add a new line before standalone tables.
- Make arrays behave (mostly) like lists.
### Fixed
- Fixed string parsing when before last char is a backslash character.
- Fixed handling of array of tables after sub tables.
- Fixed table display order.
- Fixed handling of super tables with different sections.
- Fixed raw strings escaping.
[unreleased]: https://github.com/sdispater/tomlkit/compare/0.13.0...master
[0.13.0]: https://github.com/sdispater/tomlkit/releases/tag/0.13.0
[0.12.5]: https://github.com/sdispater/tomlkit/releases/tag/0.12.5
[0.12.4]: https://github.com/sdispater/tomlkit/releases/tag/0.12.4
[0.12.3]: https://github.com/sdispater/tomlkit/releases/tag/0.12.3
[0.12.2]: https://github.com/sdispater/tomlkit/releases/tag/0.12.2
[0.12.1]: https://github.com/sdispater/tomlkit/releases/tag/0.12.1
[0.12.0]: https://github.com/sdispater/tomlkit/releases/tag/0.12.0
[0.11.8]: https://github.com/sdispater/tomlkit/releases/tag/0.11.8
[0.11.7]: https://github.com/sdispater/tomlkit/releases/tag/0.11.7
[0.11.6]: https://github.com/sdispater/tomlkit/releases/tag/0.11.6
[0.11.5]: https://github.com/sdispater/tomlkit/releases/tag/0.11.5
[0.11.4]: https://github.com/sdispater/tomlkit/releases/tag/0.11.4
[0.11.3]: https://github.com/sdispater/tomlkit/releases/tag/0.11.3
[0.11.2]: https://github.com/sdispater/tomlkit/releases/tag/0.11.2
[0.11.1]: https://github.com/sdispater/tomlkit/releases/tag/0.11.1
[0.11.0]: https://github.com/sdispater/tomlkit/releases/tag/0.11.0
[0.10.2]: https://github.com/sdispater/tomlkit/releases/tag/0.10.2
[0.10.1]: https://github.com/sdispater/tomlkit/releases/tag/0.10.1
[0.10.0]: https://github.com/sdispater/tomlkit/releases/tag/0.10.0
[0.9.2]: https://github.com/sdispater/tomlkit/releases/tag/0.9.2
[0.9.1]: https://github.com/sdispater/tomlkit/releases/tag/0.9.1
[0.9.0]: https://github.com/sdispater/tomlkit/releases/tag/0.9.0
[0.8.0]: https://github.com/sdispater/tomlkit/releases/tag/0.8.0
[0.7.2]: https://github.com/sdispater/tomlkit/releases/tag/0.7.2
[0.7.1]: https://github.com/sdispater/tomlkit/releases/tag/0.7.1
[0.7.0]: https://github.com/sdispater/tomlkit/releases/tag/0.7.0
[0.6.0]: https://github.com/sdispater/tomlkit/releases/tag/0.6.0
[0.5.11]: https://github.com/sdispater/tomlkit/releases/tag/0.5.11
[0.5.10]: https://github.com/sdispater/tomlkit/releases/tag/0.5.10
[0.5.9]: https://github.com/sdispater/tomlkit/releases/tag/0.5.9
[0.5.8]: https://github.com/sdispater/tomlkit/releases/tag/0.5.8
[0.5.7]: https://github.com/sdispater/tomlkit/releases/tag/0.5.7
[0.5.6]: https://github.com/sdispater/tomlkit/releases/tag/0.5.6
[0.5.5]: https://github.com/sdispater/tomlkit/releases/tag/0.5.5
[0.5.4]: https://github.com/sdispater/tomlkit/releases/tag/0.5.4
[0.5.3]: https://github.com/sdispater/tomlkit/releases/tag/0.5.3
[0.5.2]: https://github.com/sdispater/tomlkit/releases/tag/0.5.2
[0.5.1]: https://github.com/sdispater/tomlkit/releases/tag/0.5.1
[0.5.0]: https://github.com/sdispater/tomlkit/releases/tag/0.5.0
[0.4.6]: https://github.com/sdispater/tomlkit/releases/tag/0.4.6
[0.4.5]: https://github.com/sdispater/tomlkit/releases/tag/0.4.5
[0.4.4]: https://github.com/sdispater/tomlkit/releases/tag/0.4.4
[0.4.3]: https://github.com/sdispater/tomlkit/releases/tag/0.4.3
[0.4.2]: https://github.com/sdispater/tomlkit/releases/tag/0.4.2
[0.4.1]: https://github.com/sdispater/tomlkit/releases/tag/0.4.1
[0.4.0]: https://github.com/sdispater/tomlkit/releases/tag/0.4.0
[0.3.0]: https://github.com/sdispater/tomlkit/releases/tag/0.3.0
[0.2.0]: https://github.com/sdispater/tomlkit/releases/tag/0.2.0
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/LICENSE 0000644 0000000 0000000 00000002046 14643451625 011225 0 ustar 00 Copyright (c) 2018 Sébastien Eustace
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/README.md 0000644 0000000 0000000 00000003667 14643451625 011511 0 ustar 00 [github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white
[pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white
[python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white
[github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white
[github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg
[![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/)
[![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/)
[![Python Versions][python_versions]](https://pypi.org/project/tomlkit/)
[![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)
[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml)
# TOML Kit - Style-preserving TOML library for Python
TOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library.
It includes a parser that preserves all comments, indentations, whitespace and internal element ordering,
and makes them accessible and editable via an intuitive API.
You can also create new TOML documents from scratch using the provided helpers.
Part of the implementation has been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten).
## Usage
See the [documentation](https://tomlkit.readthedocs.io/) for more information.
## Installation
If you are using [Poetry](https://poetry.eustace.io),
add `tomlkit` to your `pyproject.toml` file by using:
```bash
poetry add tomlkit
```
If not, you can use `pip`:
```bash
pip install tomlkit
```
## Running tests
Please clone the repo with submodules with the following command
`git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`.
We need the submodule - `toml-test` for running the tests.
You can run the tests with `poetry run pytest -q tests`
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/docs/Makefile 0000644 0000000 0000000 00000001172 14643451625 012607 0 ustar 00 # Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/docs/api.rst 0000644 0000000 0000000 00000001112 14643451625 012444 0 ustar 00 API Reference
=============
Public API
----------
Functions you need to create TOML elements to construct
a TOML document.
.. automodule:: tomlkit
:members:
:undoc-members:
:show-inheritance:
TOML Document
-------------
.. module:: tomlkit.toml_document
.. autoclass:: TOMLDocument
:show-inheritance:
:inherited-members:
TOML File
---------
.. module:: tomlkit.toml_file
.. autoclass:: TOMLFile
:show-inheritance:
:members:
TOML Items
----------
.. automodule:: tomlkit.items
:show-inheritance:
:members:
:exclude-members: item, AbstractTable
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/docs/conf.py 0000644 0000000 0000000 00000003725 14643451625 012454 0 ustar 00 # Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
from tomlkit import __version__
# -- Project information -----------------------------------------------------
project = "TOML Kit"
copyright = "2021, Sébastien Eustace"
author = "Sébastien Eustace"
# The full version, including alpha/beta/rc tags
release = __version__
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
"sphinx.ext.autodoc",
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
# -- Options for HTML output -------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "furo"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = []
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/docs/index.rst 0000644 0000000 0000000 00000003156 14643451625 013014 0 ustar 00 .. TOMLKit documentation master file, created by
sphinx-quickstart on Fri Dec 24 09:31:46 2021.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
TOML Kit
========
**Style-preserving TOML library for Python**
.. image:: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white
:target: https://pypi.org/project/tomlkit/
.. image:: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white
:target: https://pypi.org/project/tomlkit/
.. image:: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white
:target: https://github.com/sdispater/tomlkit/blob/master/LICENSE
.. image:: https://img.shields.io/badge/TOML-1.0.0-9c4221
:target: https://toml.io/en/v1.0.0
TOML Kit is a **1.0.0-compliant** `TOML `_ library.
It includes a parser that preserves all comments, indentations, whitespace and internal element ordering,
and makes them accessible and editable via an intuitive API.
You can also create new TOML documents from scratch using the provided helpers.
Part of the implementation as been adapted, improved and fixed from `Molten `_.
Installation
------------
If you are using `Poetry `_,
add ``tomlkit`` to your ``pyproject.toml`` file by using::
poetry add tomlkit
If not, you can use ``pip``::
pip install tomlkit
Contents
--------
.. toctree::
:maxdepth: 2
quickstart
api
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/docs/make.bat 0000644 0000000 0000000 00000001440 14643451625 012552 0 ustar 00 @ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.https://www.sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
:end
popd
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/docs/quickstart.rst 0000644 0000000 0000000 00000005543 14643451625 014101 0 ustar 00 Quickstart
==========
Parsing
-------
TOML Kit comes with a fast and style-preserving parser to help you access
the content of TOML files and strings::
>>> from tomlkit import dumps
>>> from tomlkit import parse # you can also use loads
>>> content = """[table]
... foo = "bar" # String
... """
>>> doc = parse(content)
# doc is a TOMLDocument instance that holds all the information
# about the TOML string.
# It behaves like a standard dictionary.
>>> assert doc["table"]["foo"] == "bar"
# The string generated from the document is exactly the same
# as the original string
>>> assert dumps(doc) == content
Modifying
---------
TOML Kit provides an intuitive API to modify TOML documents::
>>> from tomlkit import dumps
>>> from tomlkit import parse
>>> from tomlkit import table
>>> doc = parse("""[table]
... foo = "bar" # String
... """)
>>> doc["table"]["baz"] = 13
>>> dumps(doc)
"""[table]
foo = "bar" # String
baz = 13
"""
# Add a new table
>>> tab = table()
>>> tab.add("array", [1, 2, 3])
>>> doc["table2"] = tab
>>> dumps(doc)
"""[table]
foo = "bar" # String
baz = 13
[table2]
array = [1, 2, 3]
"""
# Remove the newly added table
>>> doc.pop("table2")
# del doc["table2] is also possible
Writing
-------
You can also write a new TOML document from scratch.
Let's say we want to create this following document
.. code-block:: toml
# This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # First class dates? Why not?
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
It can be created with the following code::
>>> from tomlkit import comment
>>> from tomlkit import document
>>> from tomlkit import nl
>>> from tomlkit import table
>>> doc = document()
>>> doc.add(comment("This is a TOML document."))
>>> doc.add(nl())
>>> doc.add("title", "TOML Example")
# Using doc["title"] = "TOML Example" is also possible
>>> owner = table()
>>> owner.add("name", "Tom Preston-Werner")
>>> owner.add("organization", "GitHub")
>>> owner.add("bio", "GitHub Cofounder & CEO\nLikes tater tots and beer.")
>>> owner.add("dob", datetime(1979, 5, 27, 7, 32, tzinfo=utc))
>>> owner["dob"].comment("First class dates? Why not?")
# Adding the table to the document
>>> doc.add("owner", owner)
>>> database = table()
>>> database["server"] = "192.168.1.1"
>>> database["ports"] = [8001, 8001, 8002]
>>> database["connection_max"] = 5000
>>> database["enabled"] = True
>>> doc["database"] = database
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/docs/requirements.txt 0000644 0000000 0000000 00000000037 14643451625 014432 0 ustar 00 sphinx==4.3.2
furo==2021.11.23
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/pyproject.toml 0000644 0000000 0000000 00000002365 14643451625 013140 0 ustar 00 [tool.poetry]
name = "tomlkit"
version = "0.13.0"
description = "Style preserving TOML library"
authors = [
"Sébastien Eustace ",
"Frost Ming "
]
license = "MIT"
readme = "README.md"
homepage = "https://github.com/sdispater/tomlkit"
repository = "https://github.com/sdispater/tomlkit"
include = [
{ path = "tomlkit/py.typed" },
{ path = "tests", format = "sdist" },
{ path = "docs", format = "sdist" },
{ path = "CHANGELOG.md", format = "sdist" },
]
[tool.poetry.dependencies]
python = ">=3.8"
[tool.poetry.dev-dependencies]
pytest = "^7.2.0"
pytest-cov = "^4.0.0"
PyYAML = "^6.0"
pre-commit = "^2.20.0"
mypy = "^0.990"
Sphinx = "^4.3.2"
furo = "^2022.9.29"
[tool.ruff.lint]
extend-select = [
"I", # isort
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"PGH", # pygrep-hooks
"RUF", # ruff
"W", # pycodestyle
"YTT", # flake8-2020
]
extend-ignore = ["B018", "B019", "RUF018"]
[tool.ruff.lint.mccabe]
max-complexity = 10
[tool.ruff.lint.isort]
known-first-party = ["tomlkit"]
known-third-party = ["pytest"]
force-single-line = true
lines-after-imports = 2
lines-between-types = 1
[build-system]
requires = ["poetry-core>=1.0.0a9"]
build-backend = "poetry.core.masonry.api"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/__init__.py 0000644 0000000 0000000 00000000000 14643451625 013457 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/conftest.py 0000644 0000000 0000000 00000005615 14643451625 013566 0 ustar 00 import os
import pytest
@pytest.fixture
def example():
def _example(name):
with open(
os.path.join(os.path.dirname(__file__), "examples", name + ".toml"),
encoding="utf-8",
) as f:
return f.read()
return _example
@pytest.fixture
def json_example():
def _example(name):
with open(
os.path.join(os.path.dirname(__file__), "examples", "json", name + ".json"),
encoding="utf-8",
) as f:
return f.read()
return _example
@pytest.fixture
def invalid_example():
def _example(name):
with open(
os.path.join(
os.path.dirname(__file__), "examples", "invalid", name + ".toml"
),
encoding="utf-8",
) as f:
return f.read()
return _example
TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-test", "tests")
IGNORED_TESTS = {
"valid": [
"float/inf-and-nan", # Can't compare nan
]
}
def get_tomltest_cases():
dirs = sorted(
f for f in os.listdir(TEST_DIR) if os.path.isdir(os.path.join(TEST_DIR, f))
)
assert dirs == ["invalid", "valid"]
rv = {"invalid_encode": {}}
for d in dirs:
rv[d] = {}
ignored = IGNORED_TESTS.get(d, [])
for root, _, files in os.walk(os.path.join(TEST_DIR, d)):
relpath = os.path.relpath(root, os.path.join(TEST_DIR, d))
if relpath == ".":
relpath = ""
for f in files:
try:
bn, ext = f.rsplit(".", 1)
except ValueError:
bn, ext = f.rsplit("-", 1)
key = f"{relpath}/{bn}"
if ext == "multi":
continue
if key in ignored:
continue
if d == "invalid" and relpath == "encoding":
rv["invalid_encode"][bn] = os.path.join(root, f)
continue
if key not in rv[d]:
rv[d][key] = {}
with open(os.path.join(root, f), encoding="utf-8") as inp:
rv[d][key][ext] = inp.read()
return rv
def pytest_generate_tests(metafunc):
test_list = get_tomltest_cases()
if "valid_case" in metafunc.fixturenames:
metafunc.parametrize(
"valid_case",
test_list["valid"].values(),
ids=list(test_list["valid"].keys()),
)
elif "invalid_decode_case" in metafunc.fixturenames:
metafunc.parametrize(
"invalid_decode_case",
test_list["invalid"].values(),
ids=list(test_list["invalid"].keys()),
)
elif "invalid_encode_case" in metafunc.fixturenames:
metafunc.parametrize(
"invalid_encode_case",
test_list["invalid_encode"].values(),
ids=list(test_list["invalid_encode"].keys()),
)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/0.5.0.toml 0000644 0000000 0000000 00000001302 14643451625 014527 0 ustar 00 date = 1979-05-27
time = 07:32:00
plus-infinity = +inf
# infinity
sf1 = inf # positive infinity
sf2 = +inf # positive infinity
sf3 = -inf # negative infinity
# not a number
sf4 = nan # actual sNaN/qNaN encoding is implementation specific
sf5 = +nan # same as `nan`
sf6 = -nan # valid, actual encoding is implementation specific
# hexadecimal with prefix `0x`
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
hex3 = 0xdead_beef
# octal with prefix `0o`
oct1 = 0o01234567
oct2 = 0o755 # useful for Unix file permissions
# binary with prefix `0b`
bin1 = 0b11010110
# Dotted keys
physical.color = "orange"
physical.shape = "round"
site."google.com" = true
a.b.c = 1
a.b.d = 2
[table]
a.b.c = 1
a.b.d = 2
a.c = 3
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/example.toml 0000644 0000000 0000000 00000001546 14643451625 015534 0 ustar 00 # This is a TOML document. Boom.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # First class dates? Why not?
[database]
server = "192.168.1.1"
ports = [8001, 8001, 8002]
connection_max = 5000
enabled = true
[servers]
# You can indent as you please. Tabs or spaces. TOML don't care.
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
country = "中国" # This should be parsed as UTF-8
[clients]
data = [["gamma", "delta"], [1, 2]] # just an update to make sure parsers support it
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
# Products
[[products]]
name = "Hammer"
sku = 738594937
[[products]]
name = "Nail"
sku = 284758393
color = "gray"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/fruit.toml 0000644 0000000 0000000 00000000302 14643451625 015217 0 ustar 00 [[fruit.blah]]
name = "apple"
[fruit.blah.physical]
color = "red"
shape = "round"
[[fruit.blah]]
name = "banana"
[fruit.blah.physical]
color = "yellow"
shape = "bent"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/hard.toml 0000644 0000000 0000000 00000002575 14643451625 015022 0 ustar 00 # Test file for TOML
# Only this one tries to emulate a TOML file written by a user of the kind of parser writers probably hate
# This part you'll really hate
[the]
test_string = "You'll hate me after this - #" # " Annoying, isn't it?
[the.hard]
test_array = [ "] ", " # "] # ] There you go, parse this!
test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ]
# You didn't think it'd as easy as chucking out the last #, did you?
another_test_string = " Same thing, but with a string #"
harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too"
# Things will get harder
[the.hard."bit#"]
"what?" = "You don't think some user won't do that?"
multi_line_array = [
"]",
# ] Oh yes I did
]
# Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test
#[error] if you didn't catch this, your parser is broken
#string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this
#array = [
# "This might most likely happen in multiline arrays",
# Like here,
# "or here,
# and here"
# ] End of array comment, forgot the #
#number = 3.14 pi <--again forgot the #
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/array_duplicate_comma.toml 0000644 0000000 0000000 00000000024 14643451625 022041 0 ustar 00 simple = [ 1 ,, 2 ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/array_leading_comma.toml 0000644 0000000 0000000 00000000021 14643451625 021467 0 ustar 00 simple = [ , 1 ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/array_no_comma.toml 0000644 0000000 0000000 00000000021 14643451625 020500 0 ustar 00 simple = [ 1 2 ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/array_with_invalid_chars.toml 0000644 0000000 0000000 00000000215 14643451625 022556 0 ustar 00 array = [
"This might most likely happen in multiline arrays",
Like here,
"or here,
and here"
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/inline_table_duplicate_comma.toml 0000644 0000000 0000000 00000000033 14643451625 023350 0 ustar 00 simple = { a = 1 ,, b = 2}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/inline_table_leading_comma.toml 0000644 0000000 0000000 00000000025 14643451625 023002 0 ustar 00 simple = { , a = 1 }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/inline_table_no_comma.toml 0000644 0000000 0000000 00000000030 14643451625 022007 0 ustar 00 simple = { a = 1 b = 2}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/inline_table_trailing_comma.toml 0000644 0000000 0000000 00000000025 14643451625 023210 0 ustar 00 simple = { a = 1 , }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/invalid_date.toml 0000644 0000000 0000000 00000000022 14643451625 020136 0 ustar 00 date = 2018-13-33
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/invalid_datetime.toml 0000644 0000000 0000000 00000000037 14643451625 021023 0 ustar 00 datetime = 2018-13-33T23:12:34
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/invalid_number.toml 0000644 0000000 0000000 00000000017 14643451625 020515 0 ustar 00 number = 34"5"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/invalid_time.toml 0000644 0000000 0000000 00000000024 14643451625 020161 0 ustar 00 datetime = 26:61:61
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/key_value_with_trailing_chars.toml 0000644 0000000 0000000 00000000240 14643451625 023605 0 ustar 00 string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/newline_in_singleline_string.toml 0000644 0000000 0000000 00000000030 14643451625 023440 0 ustar 00 this = "this
that
more"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/section_with_trailing_characters.toml 0000644 0000000 0000000 00000000072 14643451625 024307 0 ustar 00 [error] if you didn't catch this, your parser is broken
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/string_slash_whitespace_char.toml 0000644 0000000 0000000 00000000046 14643451625 023432 0 ustar 00 invalid_escape = """this \ more"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/invalid/trailing_comma.toml 0000644 0000000 0000000 00000000035 14643451625 020504 0 ustar 00 hello = "world" , # this
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/json/0.5.0.json 0000644 0000000 0000000 00000001244 14643451625 015503 0 ustar 00 {
"date": "1979-05-27",
"time": "07:32:00",
"plus-infinity": Infinity,
"sf1": Infinity,
"sf2": Infinity,
"sf3": -Infinity,
"sf4": NaN,
"sf5": NaN,
"sf6": NaN,
"hex1": 3735928559,
"hex2": 3735928559,
"hex3": 3735928559,
"oct1": 342391,
"oct2": 493,
"bin1": 214,
"physical": {
"color": "orange",
"shape": "round"
},
"site": {
"google.com": true
},
"a": {
"b": {
"c": 1,
"d": 2
}
},
"table": {
"a": {
"b": {
"c": 1,
"d": 2
},
"c": 3
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/json/pyproject.json 0000644 0000000 0000000 00000006414 14643451625 017066 0 ustar 00 {
"tool": {
"poetry": {
"name": "poetry",
"version": "0.11.2",
"description": "Python dependency management and packaging made easy.",
"authors": [
"S\u00e9bastien Eustace "
],
"license": "MIT",
"readme": "README.md",
"homepage": "https://poetry.eustace.io/",
"repository": "https://github.com/sdispater/poet",
"documentation": "https://poetry.eustace.io/docs",
"keywords": [
"packaging",
"dependency",
"poetry"
],
"classifiers": [
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"dependencies": {
"python": "~2.7 || ^3.4",
"cleo": "^0.6.7",
"pytoml": "^0.1.16",
"requests": "^2.18",
"cachy": "^0.2",
"requests-toolbelt": "^0.8.0",
"jsonschema": "^2.6",
"pyrsistent": "^0.14.2",
"pyparsing": "^2.2",
"cachecontrol": {
"version": "^0.12.4",
"extras": [
"filecache"
]
},
"pkginfo": "^1.4",
"html5lib": "^1.0",
"shellingham": "^1.1",
"typing": {
"version": "^3.6",
"python": "~2.7 || ~3.4"
},
"pathlib2": {
"version": "^2.3",
"python": "~2.7 || ~3.4"
},
"virtualenv": {
"version": "^16.0",
"python": "~2.7"
}
},
"dev-dependencies": {
"pytest": "^3.4",
"pytest-cov": "^2.5",
"mkdocs": "^0.17.3",
"pymdown-extensions": "^4.9",
"pygments": "^2.2",
"pytest-mock": "^1.9",
"pygments-github-lexers": "^0.0.5",
"black": {
"version": "^18.3-alpha.0",
"python": "^3.6"
},
"pre-commit": "^1.10",
"tox": "^3.0"
},
"scripts": {
"poetry": "poetry.console:main"
}
},
"black": {
"line-length": 88,
"py36": true,
"include": "\\.pyi?$",
"exclude": "/(\n \\.git\n | \\.hg\n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | _build\n | build\n | dist\n | tests/toml-test\n)/\n"
},
"foo": [
{
"name": "first"
},
{
"name": "second"
},
{
"name": "third"
},
{
"name": "fourth"
}
],
"bar": [
{
"foo": "bar"
}
]
},
"build-system": {
"requires": [
"poetry-core>=1.0.0a3"
],
"build-backend": "poetry.core.masonry.api"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/json/table_names.json 0000644 0000000 0000000 00000000453 14643451625 017316 0 ustar 00 {
"Special \"table\"": {
"foo": "bar"
},
"BJ's Restaurant": {
"account": "dining"
},
"]": {
"foo": 1
},
"[bracket]": {
"bar": 2
},
"a": {
"b.c": {
"d": {
"baz": 3
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/newline_in_strings.toml 0000644 0000000 0000000 00000000065 14643451625 017774 0 ustar 00 this = "this\\nthat\\nmore"
foo = """bar
baz
qux
"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/preserve_quotes_in_string.toml 0000644 0000000 0000000 00000000032 14643451625 021375 0 ustar 00 this = """this
""
more"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/pyproject.toml 0000644 0000000 0000000 00000003712 14643451625 016115 0 ustar 00 [tool.poetry]
name = "poetry"
version = "0.11.2"
description = "Python dependency management and packaging made easy."
authors = [
"Sébastien Eustace "
]
license = "MIT"
readme = "README.md"
homepage = "https://poetry.eustace.io/"
repository = "https://github.com/sdispater/poet"
documentation = "https://poetry.eustace.io/docs"
keywords = ["packaging", "dependency", "poetry"]
classifiers = [
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
]
# Requirements
[tool.poetry.dependencies]
python = "~2.7 || ^3.4"
cleo = "^0.6.7"
pytoml = "^0.1.16"
requests = "^2.18"
cachy = "^0.2"
requests-toolbelt = "^0.8.0"
jsonschema = "^2.6"
pyrsistent = "^0.14.2"
pyparsing = "^2.2"
cachecontrol = { version = "^0.12.4", extras = ["filecache"] }
pkginfo = "^1.4"
html5lib = "^1.0"
shellingham = "^1.1"
# The typing module is not in the stdlib in Python 2.7 and 3.4
typing = { version = "^3.6", python = "~2.7 || ~3.4" }
# Use pathlib2 for Python 2.7 and 3.4
pathlib2 = { version = "^2.3", python = "~2.7 || ~3.4" }
# Use virtualenv for Python 2.7 since venv does not exist
virtualenv = { version = "^16.0", python = "~2.7" }
[tool.poetry.dev-dependencies]
pytest = "^3.4"
pytest-cov = "^2.5"
mkdocs = "^0.17.3"
pymdown-extensions = "^4.9"
pygments = "^2.2"
pytest-mock = "^1.9"
pygments-github-lexers = "^0.0.5"
black = { version = "^18.3-alpha.0", python = "^3.6" }
pre-commit = "^1.10"
tox = "^3.0"
[tool.poetry.scripts]
poetry = "poetry.console:main"
[build-system]
requires = ["poetry-core>=1.0.0a3"]
build-backend = "poetry.core.masonry.api"
[tool.black]
line-length = 88
py36 = true
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| build
| dist
| tests/toml-test
)/
'''
[[tool.foo]]
name = 'first'
[[tool.foo]]
name = 'second'
# CS
[[tool.foo]]
name = 'third'
[[tool.foo]]
name = 'fourth'
[[tool.bar]]
foo = "bar"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/sections_with_same_start.toml 0000644 0000000 0000000 00000000144 14643451625 021176 0 ustar 00 [section]
key = "value"
[section2]
"key2" = 12.34
[section2.sub-section]
"key3" = "something"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/string_slash_whitespace_newline.toml 0000644 0000000 0000000 00000000122 14643451625 022523 0 ustar 00 no_whitespace = """hello \
world"""
has_whitespace = """hello \
world"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/table_names.toml 0000644 0000000 0000000 00000000217 14643451625 016345 0 ustar 00 ['Special "table"']
foo = "bar"
["BJ's Restaurant"]
account = "dining"
["]"]
foo = 1
[ "[bracket]" ]
bar = 2
[ a . "b.c" . d ]
baz = 3
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/examples/test.toml 0000644 0000000 0000000 00000003053 14643451625 015053 0 ustar 00 # This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
# Indentation (tabs and/or spaces) is allowed but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
str_multiline = """
Roses are red
Violets are blue"""
str_quoted = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
str2 = """
The quick brown \
fox jumps over \
the lazy dog."""
key3 = """\
The quick brown \
fox jumps over \
the lazy dog.\
"""
# What you see is what you get.
winpath = 'C:\Users\nodejs\templates'
winpath2 = '\\ServerX\admin$\system32\'
quoted = 'Tom "Dubs" Preston-Werner'
regex = '<\i\c*\s*>'
regex2 = '''I [dw]on't need \d{2} apples'''
lines = '''
The first newline is
trimmed in raw strings.
All other whitespace
is preserved.
'''
[[fruit]]
name = "apple"
[fruit.physical]
color = "red"
shape = "round"
[[fruit.variety]]
name = "red delicious"
[[fruit.variety]]
name = "granny smith"
[[fruit]]
name = "banana"
[[fruit.variety]]
name = "plantain"
points = [ { x = 1, y = 2, z = 3 }, # This value is so special to me
{ x = 7, y = 8, z = 9 },
{ x = 2, y = 4, z = 8 } ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_api.py 0000644 0000000 0000000 00000030075 14643451625 013547 0 ustar 00 import io
import json
import os
from datetime import date
from datetime import datetime
from datetime import time
from types import MappingProxyType
import pytest
import tomlkit
from tomlkit import dump
from tomlkit import dumps
from tomlkit import load
from tomlkit import loads
from tomlkit import parse
from tomlkit.exceptions import InvalidCharInStringError
from tomlkit.exceptions import InvalidControlChar
from tomlkit.exceptions import InvalidDateError
from tomlkit.exceptions import InvalidDateTimeError
from tomlkit.exceptions import InvalidNumberError
from tomlkit.exceptions import InvalidStringError
from tomlkit.exceptions import InvalidTimeError
from tomlkit.exceptions import UnexpectedCharError
from tomlkit.items import AoT
from tomlkit.items import Array
from tomlkit.items import Bool
from tomlkit.items import Date
from tomlkit.items import DateTime
from tomlkit.items import Float
from tomlkit.items import InlineTable
from tomlkit.items import Integer
from tomlkit.items import Key
from tomlkit.items import Table
from tomlkit.items import Time
from tomlkit.toml_document import TOMLDocument
def json_serial(obj):
"""JSON serializer for objects not serializable by default json code"""
if isinstance(obj, (datetime, date, time)):
return obj.isoformat()
raise TypeError(f"Type {type(obj)} not serializable")
@pytest.mark.parametrize(
"example_name",
[
"example",
"fruit",
"hard",
"sections_with_same_start",
"pyproject",
"0.5.0",
"test",
"newline_in_strings",
"preserve_quotes_in_string",
"string_slash_whitespace_newline",
"table_names",
],
)
def test_parse_can_parse_valid_toml_files(example, example_name):
assert isinstance(parse(example(example_name)), TOMLDocument)
assert isinstance(loads(example(example_name)), TOMLDocument)
@pytest.mark.parametrize(
"example_name",
[
"example",
"fruit",
"hard",
"sections_with_same_start",
"pyproject",
"0.5.0",
"test",
"newline_in_strings",
"preserve_quotes_in_string",
"string_slash_whitespace_newline",
"table_names",
],
)
def test_load_from_file_object(example_name):
with open(
os.path.join(os.path.dirname(__file__), "examples", example_name + ".toml"),
encoding="utf-8",
) as fp:
assert isinstance(load(fp), TOMLDocument)
@pytest.mark.parametrize("example_name", ["0.5.0", "pyproject", "table_names"])
def test_parsed_document_are_properly_json_representable(
example, json_example, example_name
):
doc = json.loads(json.dumps(parse(example(example_name)), default=json_serial))
json_doc = json.loads(json_example(example_name))
assert doc == json_doc
@pytest.mark.parametrize(
"example_name,error",
[
("section_with_trailing_characters", UnexpectedCharError),
("key_value_with_trailing_chars", UnexpectedCharError),
("array_with_invalid_chars", UnexpectedCharError),
("invalid_number", InvalidNumberError),
("invalid_date", InvalidDateError),
("invalid_time", InvalidTimeError),
("invalid_datetime", InvalidDateTimeError),
("trailing_comma", UnexpectedCharError),
("newline_in_singleline_string", InvalidControlChar),
("string_slash_whitespace_char", InvalidCharInStringError),
("array_no_comma", UnexpectedCharError),
("array_duplicate_comma", UnexpectedCharError),
("array_leading_comma", UnexpectedCharError),
("inline_table_no_comma", UnexpectedCharError),
("inline_table_duplicate_comma", UnexpectedCharError),
("inline_table_leading_comma", UnexpectedCharError),
("inline_table_trailing_comma", UnexpectedCharError),
],
)
def test_parse_raises_errors_for_invalid_toml_files(
invalid_example, error, example_name
):
with pytest.raises(error):
parse(invalid_example(example_name))
@pytest.mark.parametrize(
"example_name",
[
"example",
"fruit",
"hard",
"sections_with_same_start",
"pyproject",
"0.5.0",
"test",
"table_names",
],
)
def test_original_string_and_dumped_string_are_equal(example, example_name):
content = example(example_name)
parsed = parse(content)
assert content == dumps(parsed)
def test_a_raw_dict_can_be_dumped():
s = dumps({"foo": "bar"})
assert s == 'foo = "bar"\n'
def test_mapping_types_can_be_dumped():
x = MappingProxyType({"foo": "bar"})
assert dumps(x) == 'foo = "bar"\n'
def test_dumps_weird_object():
with pytest.raises(TypeError):
dumps(object())
def test_dump_tuple_value_as_array():
x = {"foo": (1, 2)}
assert dumps(x) == "foo = [1, 2]\n"
x = {"foo": ({"a": 1}, {"a": 2})}
assert dumps(x) == "[[foo]]\na = 1\n\n[[foo]]\na = 2\n"
def test_dump_to_file_object():
doc = {"foo": "bar"}
fp = io.StringIO()
dump(doc, fp)
assert fp.getvalue() == 'foo = "bar"\n'
def test_integer():
i = tomlkit.integer("34")
assert isinstance(i, Integer)
def test_float():
i = tomlkit.float_("34.56")
assert isinstance(i, Float)
def test_boolean():
i = tomlkit.boolean("true")
assert isinstance(i, Bool)
def test_date():
dt = tomlkit.date("1979-05-13")
assert isinstance(dt, Date)
with pytest.raises(ValueError):
tomlkit.date("12:34:56")
def test_time():
dt = tomlkit.time("12:34:56")
assert isinstance(dt, Time)
with pytest.raises(ValueError):
tomlkit.time("1979-05-13")
def test_datetime():
dt = tomlkit.datetime("1979-05-13T12:34:56")
assert isinstance(dt, DateTime)
with pytest.raises(ValueError):
tomlkit.time("1979-05-13")
def test_array():
a = tomlkit.array()
assert isinstance(a, Array)
a = tomlkit.array("[1,2, 3]")
assert isinstance(a, Array)
def test_table():
t = tomlkit.table()
assert isinstance(t, Table)
def test_inline_table():
t = tomlkit.inline_table()
assert isinstance(t, InlineTable)
def test_aot():
t = tomlkit.aot()
assert isinstance(t, AoT)
def test_key():
k = tomlkit.key("foo")
assert isinstance(k, Key)
def test_key_value():
k, i = tomlkit.key_value("foo = 12")
assert isinstance(k, Key)
assert isinstance(i, Integer)
def test_string():
s = tomlkit.string('foo "')
assert s.value == 'foo "'
assert s.as_string() == '"foo \\""'
def test_item_dict_to_table():
t = tomlkit.item({"foo": {"bar": "baz"}})
assert t.value == {"foo": {"bar": "baz"}}
assert (
t.as_string()
== """[foo]
bar = "baz"
"""
)
def test_item_mixed_aray():
example = [{"a": 3}, "b", 42]
expected = '[{a = 3}, "b", 42]'
t = tomlkit.item(example)
assert t.as_string().strip() == expected
assert dumps({"x": {"y": example}}).strip() == "[x]\ny = " + expected
def test_build_super_table():
doc = tomlkit.document()
table = tomlkit.table(True)
table.add("bar", {"x": 1})
doc.add("foo", table)
assert doc.as_string() == "[foo.bar]\nx = 1\n"
def test_add_dotted_key():
doc = tomlkit.document()
doc.add(tomlkit.key(["foo", "bar"]), 1)
assert doc.as_string() == "foo.bar = 1\n"
table = tomlkit.table()
table.add(tomlkit.key(["foo", "bar"]), 1)
assert table.as_string() == "foo.bar = 1\n"
@pytest.mark.parametrize(
("raw", "expected"),
[
("true", True),
("false", False),
],
)
def test_value_parses_boolean(raw, expected):
parsed = tomlkit.value(raw)
assert parsed == expected
@pytest.mark.parametrize(
"raw", ["t", "f", "tru", "fals", "test", "friend", "truthy", "falsify"]
)
def test_value_rejects_values_looking_like_bool_at_start(raw):
"""Reproduces https://github.com/sdispater/tomlkit/issues/165"""
with pytest.raises(tomlkit.exceptions.ParseError):
tomlkit.value(raw)
@pytest.mark.parametrize(
"raw",
[
"truee",
"truely",
"true-thoughts",
"true_hip_hop",
],
)
def test_value_rejects_values_having_true_prefix(raw):
"""Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected."""
with pytest.raises(tomlkit.exceptions.ParseError):
tomlkit.value(raw)
@pytest.mark.parametrize(
"raw",
[
"falsee",
"falsely",
"false-ideas",
"false_prophet",
],
)
def test_value_rejects_values_having_false_prefix(raw):
"""Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected."""
with pytest.raises(tomlkit.exceptions.ParseError):
tomlkit.value(raw)
@pytest.mark.parametrize(
"raw",
[
'"foo"1.2',
"truefalse",
"1.0false",
"100true",
"truetrue",
"falsefalse",
"1.2.3.4",
"[][]",
"{a=[][]}[]",
"true[]",
"false{a=1}",
],
)
def test_value_rejects_values_with_appendage(raw):
"""Values that appear valid at the beginning but leave chars unparsed are rejected."""
with pytest.raises(tomlkit.exceptions.ParseError):
tomlkit.value(raw)
def test_create_super_table_with_table():
data = {"foo": {"bar": {"a": 1}}}
assert dumps(data) == "[foo.bar]\na = 1\n"
def test_create_super_table_with_aot():
data = {"foo": {"bar": [{"a": 1}]}}
assert dumps(data) == "[[foo.bar]]\na = 1\n"
@pytest.mark.parametrize(
"kwargs, example, expected",
[
({}, "My\nString", '"My\\nString"'),
({"escape": False}, "My String\t", '"My String\t"'),
({"literal": True}, "My String\t", "'My String\t'"),
({"escape": True, "literal": True}, "My String\t", "'My String\t'"),
({}, "My String\u0001", '"My String\\u0001"'),
({}, "My String\u000b", '"My String\\u000b"'),
({}, "My String\x08", '"My String\\b"'),
({}, "My String\x0c", '"My String\\f"'),
({}, "My String\x01", '"My String\\u0001"'),
({}, "My String\x06", '"My String\\u0006"'),
({}, "My String\x12", '"My String\\u0012"'),
({}, "My String\x7f", '"My String\\u007f"'),
({"escape": False}, "My String\u0001", '"My String\u0001"'),
({"multiline": True}, "\nMy\nString\n", '"""\nMy\nString\n"""'),
({"multiline": True}, 'My"String', '"""My"String"""'),
({"multiline": True}, 'My""String', '"""My""String"""'),
({"multiline": True}, 'My"""String', '"""My""\\"String"""'),
({"multiline": True}, 'My""""String', '"""My""\\""String"""'),
(
{"multiline": True},
'"""My"""Str"""ing"""',
'"""""\\"My""\\"Str""\\"ing""\\""""',
),
({"multiline": True, "literal": True}, "My\nString", "'''My\nString'''"),
({"multiline": True, "literal": True}, "My'String", "'''My'String'''"),
({"multiline": True, "literal": True}, "My\r\nString", "'''My\r\nString'''"),
(
{"literal": True},
r"C:\Users\nodejs\templates",
r"'C:\Users\nodejs\templates'",
),
({"literal": True}, r"<\i\c*\s*>", r"'<\i\c*\s*>'"),
(
{"multiline": True, "literal": True},
r"I [dw]on't need \d{2} apples",
r"'''I [dw]on't need \d{2} apples'''",
),
],
)
def test_create_string(kwargs, example, expected):
value = tomlkit.string(example, **kwargs)
assert value.as_string() == expected
@pytest.mark.parametrize(
"kwargs, example",
[
({"literal": True}, "My'String"),
({"literal": True}, "My\nString"),
({"literal": True}, "My\r\nString"),
({"literal": True}, "My\bString"),
({"literal": True}, "My\x08String"),
({"literal": True}, "My\x0cString"),
({"literal": True}, "My\x7fString"),
({"multiline": True, "literal": True}, "My'''String"),
],
)
def test_create_string_with_invalid_characters(kwargs, example):
with pytest.raises(InvalidStringError):
tomlkit.string(example, **kwargs)
def test_parse_empty_quoted_table_name():
content = "['']\nx = 1\n"
parsed = loads(content)
assert parsed == {"": {"x": 1}}
assert dumps(parsed) == content
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_build.py 0000644 0000000 0000000 00000006021 14643451625 014067 0 ustar 00 import datetime
from tomlkit import aot
from tomlkit import array
from tomlkit import comment
from tomlkit import document
from tomlkit import item
from tomlkit import nl
from tomlkit import parse
from tomlkit import table
from tomlkit._utils import _utc
def test_build_example(example):
content = example("example")
doc = document()
doc.add(comment("This is a TOML document. Boom."))
doc.add(nl())
doc.add("title", "TOML Example")
owner = table()
owner.add("name", "Tom Preston-Werner")
owner.add("organization", "GitHub")
owner.add("bio", "GitHub Cofounder & CEO\nLikes tater tots and beer.")
owner.add("dob", datetime.datetime(1979, 5, 27, 7, 32, tzinfo=_utc))
owner["dob"].comment("First class dates? Why not?")
doc.add("owner", owner)
database = table()
database["server"] = "192.168.1.1"
database["ports"] = [8001, 8001, 8002]
database["connection_max"] = 5000
database["enabled"] = True
doc["database"] = database
servers = table()
servers.add(nl())
c = comment(
"You can indent as you please. Tabs or spaces. TOML don't care."
).indent(2)
c.trivia.trail = ""
servers.add(c)
alpha = table()
servers.append("alpha", alpha)
alpha.indent(2)
alpha.add("ip", "10.0.0.1")
alpha.add("dc", "eqdc10")
beta = table()
servers.append("beta", beta)
beta.add("ip", "10.0.0.2")
beta.add("dc", "eqdc10")
beta.add("country", "中国")
beta["country"].comment("This should be parsed as UTF-8")
beta.indent(2)
doc["servers"] = servers
clients = table()
doc.add("clients", clients)
clients["data"] = item([["gamma", "delta"], [1, 2]]).comment(
"just an update to make sure parsers support it"
)
clients.add(nl())
clients.add(comment("Line breaks are OK when inside arrays"))
clients["hosts"] = array(
"""[
"alpha",
"omega"
]"""
)
doc.add(nl())
doc.add(comment("Products"))
products = aot()
doc["products"] = products
hammer = table().indent(2)
hammer["name"] = "Hammer"
hammer["sku"] = 738594937
nail = table().indent(2)
nail["name"] = "Nail"
nail["sku"] = 284758393
nail["color"] = "gray"
products.append(hammer)
products.append(nail)
assert content == doc.as_string()
def test_add_remove():
content = ""
doc = parse(content)
doc.append("foo", "bar")
assert (
doc.as_string()
== """foo = "bar"
"""
)
doc.remove("foo")
assert doc.as_string() == ""
def test_append_table_after_multiple_indices():
content = """
[packages]
foo = "*"
[settings]
enable = false
[packages.bar]
version = "*"
"""
doc = parse(content)
doc.append("foobar", {"name": "John"})
def test_top_level_keys_are_put_at_the_root_of_the_document():
doc = document()
doc.add(comment("Comment"))
doc["foo"] = {"name": "test"}
doc["bar"] = 1
expected = """\
# Comment
bar = 1
[foo]
name = "test"
"""
assert doc.as_string() == expected
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_items.py 0000644 0000000 0000000 00000050611 14643451625 014115 0 ustar 00 import copy
import math
import pickle
from datetime import date
from datetime import datetime
from datetime import time
from datetime import timedelta
from datetime import timezone
import pytest
from tests.util import assert_is_ppo
from tests.util import elementary_test
from tomlkit import api
from tomlkit import parse
from tomlkit.exceptions import NonExistentKey
from tomlkit.items import Array
from tomlkit.items import Bool
from tomlkit.items import Comment
from tomlkit.items import InlineTable
from tomlkit.items import Integer
from tomlkit.items import Item
from tomlkit.items import KeyType
from tomlkit.items import Null
from tomlkit.items import SingleKey as Key
from tomlkit.items import String
from tomlkit.items import StringType
from tomlkit.items import Table
from tomlkit.items import Trivia
from tomlkit.items import item
from tomlkit.parser import Parser
@pytest.fixture()
def tz_pst():
try:
from datetime import timezone
return timezone(timedelta(hours=-8), "PST")
except ImportError:
from datetime import tzinfo
class PST(tzinfo):
def utcoffset(self, dt):
return timedelta(hours=-8)
def tzname(self, dt):
return "PST"
def dst(self, dt):
return timedelta(0)
return PST()
@pytest.fixture()
def tz_utc():
try:
from datetime import timezone
return timezone.utc
except ImportError:
from datetime import tzinfo
class UTC(tzinfo):
def utcoffset(self, dt):
return timedelta(hours=0)
def tzname(self, dt):
return "UTC"
def dst(self, dt):
return timedelta(0)
return UTC()
def test_item_base_has_no_unwrap():
trivia = Trivia(indent="\t", comment_ws=" ", comment="For unit test")
item = Item(trivia)
try:
item.unwrap()
except NotImplementedError:
pass
else:
raise AssertionError("`items.Item` should not implement `unwrap`")
def test_integer_unwrap():
elementary_test(item(666), int)
def test_float_unwrap():
elementary_test(item(2.78), float)
def test_false_unwrap():
elementary_test(item(False), bool)
def test_true_unwrap():
elementary_test(item(True), bool)
def test_datetime_unwrap():
dt = datetime.now(tz=timezone.utc)
elementary_test(item(dt), datetime)
def test_string_unwrap():
elementary_test(item("hello"), str)
def test_null_unwrap():
n = Null()
elementary_test(n, type(None))
def test_aot_unwrap():
d = item([{"a": "A"}, {"b": "B"}])
unwrapped = d.unwrap()
assert_is_ppo(unwrapped, list)
for du, _ in zip(unwrapped, d):
assert_is_ppo(du, dict)
for ku in du:
vu = du[ku]
assert_is_ppo(ku, str)
assert_is_ppo(vu, str)
def test_time_unwrap():
t = time(3, 8, 14)
elementary_test(item(t), time)
def test_date_unwrap():
d = date.today()
elementary_test(item(d), date)
def test_array_unwrap():
trivia = Trivia(indent="\t", comment_ws=" ", comment="For unit test")
i = item(666)
f = item(2.78)
b = item(False)
a = Array([i, f, b], trivia)
a_unwrapped = a.unwrap()
assert_is_ppo(a_unwrapped, list)
assert_is_ppo(a_unwrapped[0], int)
assert_is_ppo(a_unwrapped[1], float)
assert_is_ppo(a_unwrapped[2], bool)
def test_abstract_table_unwrap():
table = item({"foo": "bar"})
super_table = item({"table": table, "baz": "borg"})
table_unwrapped = super_table.unwrap()
sub_table = table_unwrapped["table"]
assert_is_ppo(table_unwrapped, dict)
assert_is_ppo(sub_table, dict)
for ku in sub_table:
vu = sub_table[ku]
assert_is_ppo(ku, str)
assert_is_ppo(vu, str)
def test_key_comparison():
k = Key("foo")
assert k == Key("foo")
assert k == "foo"
assert k != "bar"
assert k != 5
def test_items_can_be_appended_to_and_removed_from_a_table():
string = """[table]
"""
parser = Parser(string)
_, table = parser._parse_table()
assert isinstance(table, Table)
assert table.as_string() == ""
table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail="\n")))
assert table.as_string() == 'foo = "bar"\n'
table.append(
Key("baz"),
Integer(34, Trivia(comment_ws=" ", comment="# Integer", trail=""), "34"),
)
assert table.as_string() == 'foo = "bar"\nbaz = 34 # Integer'
table.remove(Key("baz"))
assert table.as_string() == 'foo = "bar"\n'
table.remove(Key("foo"))
assert table.as_string() == ""
with pytest.raises(NonExistentKey):
table.remove(Key("foo"))
def test_items_can_be_appended_to_and_removed_from_an_inline_table():
string = """table = {}
"""
parser = Parser(string)
_, table = parser._parse_item()
assert isinstance(table, InlineTable)
assert table.as_string() == "{}"
table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail="")))
assert table.as_string() == '{foo = "bar"}'
table.append(Key("baz"), Integer(34, Trivia(trail=""), "34"))
assert table.as_string() == '{foo = "bar", baz = 34}'
table.remove(Key("baz"))
assert table.as_string() == '{foo = "bar"}'
table.remove(Key("foo"))
assert table.as_string() == "{}"
with pytest.raises(NonExistentKey):
table.remove(Key("foo"))
def test_inf_and_nan_are_supported(example):
content = example("0.5.0")
doc = parse(content)
assert doc["sf1"] == float("inf")
assert doc["sf2"] == float("inf")
assert doc["sf3"] == float("-inf")
assert math.isnan(doc["sf4"])
assert math.isnan(doc["sf5"])
assert math.isnan(doc["sf6"])
def test_hex_octal_and_bin_integers_are_supported(example):
content = example("0.5.0")
doc = parse(content)
assert doc["hex1"] == 3735928559
assert doc["hex2"] == 3735928559
assert doc["hex3"] == 3735928559
assert doc["oct1"] == 342391
assert doc["oct2"] == 493
assert doc["bin1"] == 214
def test_key_automatically_sets_proper_string_type_if_not_bare():
key = Key("foo.bar")
assert key.t == KeyType.Basic
key = Key("")
assert key.t == KeyType.Basic
def test_array_behaves_like_a_list():
a = item([1, 2])
assert a == [1, 2]
assert a.as_string() == "[1, 2]"
a += [3, 4]
assert a == [1, 2, 3, 4]
assert a.as_string() == "[1, 2, 3, 4]"
del a[2]
assert a == [1, 2, 4]
assert a.as_string() == "[1, 2, 4]"
assert a.pop() == 4
assert a == [1, 2]
assert a.as_string() == "[1, 2]"
a[0] = 4
assert a == [4, 2]
a[-2] = 0
assert a == [0, 2]
del a[-2]
assert a == [2]
assert a.as_string() == "[2]"
a.clear()
assert a == []
assert a.as_string() == "[]"
content = """a = [1, 2,] # Comment
"""
doc = parse(content)
assert str(doc["a"]) == "[1, 2]"
assert doc["a"] == [1, 2]
doc["a"] += [3, 4]
assert doc["a"] == [1, 2, 3, 4]
assert (
doc.as_string()
== """a = [1, 2, 3, 4] # Comment
"""
)
def test_array_multiline():
t = item([1, 2, 3, 4, 5, 6, 7, 8])
t.multiline(True)
expected = """\
[
1,
2,
3,
4,
5,
6,
7,
8,
]"""
assert expected == t.as_string()
t = item([])
t.multiline(True)
assert t.as_string() == "[]"
def test_array_multiline_modify():
doc = parse(
"""\
a = [
"abc"
]"""
)
doc["a"].append("def")
expected = """\
a = [
"abc",
"def"
]"""
assert expected == doc.as_string()
doc["a"].insert(1, "ghi")
expected = """\
a = [
"abc",
"ghi",
"def"
]"""
assert expected == doc.as_string()
def test_append_to_empty_array():
doc = parse("x = [ ]")
doc["x"].append("a")
assert doc.as_string() == 'x = ["a" ]'
doc = parse("x = [\n]")
doc["x"].append("a")
assert doc.as_string() == 'x = [\n "a"\n]'
def test_modify_array_with_comment():
doc = parse("x = [ # comment\n]")
doc["x"].append("a")
assert doc.as_string() == 'x = [ # comment\n "a"\n]'
doc = parse(
"""\
x = [
"a",
# comment
"b"
]"""
)
doc["x"].insert(1, "c")
expected = """\
x = [
"a",
# comment
"c",
"b"
]"""
assert doc.as_string() == expected
doc = parse(
"""\
x = [
1 # comment
]"""
)
doc["x"].append(2)
assert (
doc.as_string()
== """\
x = [
1, # comment
2
]"""
)
doc["x"].pop(0)
assert doc.as_string() == "x = [\n 2\n]"
def test_append_to_multiline_array_with_comment():
doc = parse(
"""\
x = [
# Here is a comment
1,
2
]
"""
)
doc["x"].multiline(True).append(3)
assert (
doc.as_string()
== """\
x = [
# Here is a comment
1,
2,
3,
]
"""
)
assert doc["x"].pop() == 3
assert (
doc.as_string()
== """\
x = [
# Here is a comment
1,
2,
]
"""
)
def test_append_dict_to_array():
doc = parse("x = []")
doc["x"].append({"name": "John Doe", "email": "john@doe.com"})
expected = 'x = [{name = "John Doe",email = "john@doe.com"}]'
assert doc.as_string() == expected
# Make sure the produced string is valid
assert parse(doc.as_string()) == doc
def test_dicts_are_converted_to_tables():
t = item({"foo": {"bar": "baz"}})
assert (
t.as_string()
== """[foo]
bar = "baz"
"""
)
def test_array_add_line():
t = api.array()
t.add_line(1, 2, 3, comment="Line 1")
t.add_line(4, 5, 6, comment="Line 2")
t.add_line(7, api.ws(","), api.ws(" "), 8, add_comma=False)
t.add_line(comment="Line 4")
t.add_line(indent="")
assert len(t) == 8
assert list(t) == [1, 2, 3, 4, 5, 6, 7, 8]
assert (
t.as_string()
== """[
1, 2, 3, # Line 1
4, 5, 6, # Line 2
7, 8,
# Line 4
]"""
)
def test_array_add_line_invalid_value():
t = api.array()
with pytest.raises(ValueError, match="is not allowed"):
t.add_line(1, api.ws(" "))
with pytest.raises(ValueError, match="is not allowed"):
t.add_line(Comment(Trivia(" ", comment="test")))
assert len(t) == 0
def test_dicts_are_converted_to_tables_and_keep_order():
t = item(
{
"foo": {
"bar": "baz",
"abc": 123,
"baz": [{"c": 3, "b": 2, "a": 1}],
},
}
)
assert (
t.as_string()
== """[foo]
bar = "baz"
abc = 123
[[foo.baz]]
c = 3
b = 2
a = 1
"""
)
def test_dicts_are_converted_to_tables_and_are_sorted_if_requested():
t = item(
{
"foo": {
"bar": "baz",
"abc": 123,
"baz": [{"c": 3, "b": 2, "a": 1}],
},
},
_sort_keys=True,
)
assert (
t.as_string()
== """[foo]
abc = 123
bar = "baz"
[[foo.baz]]
a = 1
b = 2
c = 3
"""
)
def test_dicts_with_sub_dicts_are_properly_converted():
t = item(
{"foo": {"bar": {"string": "baz"}, "int": 34, "float": 3.14}}, _sort_keys=True
)
assert (
t.as_string()
== """[foo]
float = 3.14
int = 34
[foo.bar]
string = "baz"
"""
)
def test_item_array_of_dicts_converted_to_aot():
a = item({"foo": [{"bar": "baz"}]})
assert (
a.as_string()
== """[[foo]]
bar = "baz"
"""
)
def test_add_float_to_int():
content = "[table]\nmy_int = 2043"
doc = parse(content)
doc["table"]["my_int"] += 5.0
assert doc["table"]["my_int"] == 2048.0
assert isinstance(doc["table"]["my_int"], float)
def test_sub_float_from_int():
content = "[table]\nmy_int = 2048"
doc = parse(content)
doc["table"]["my_int"] -= 5.0
assert doc["table"]["my_int"] == 2043.0
assert isinstance(doc["table"]["my_int"], float)
def test_sub_int_from_float():
content = "[table]\nmy_int = 2048.0"
doc = parse(content)
doc["table"]["my_int"] -= 5
assert doc["table"]["my_int"] == 2043.0
def test_add_sum_int_with_float():
content = "[table]\nmy_int = 2048.3"
doc = parse(content)
doc["table"]["my_int"] += 5
assert doc["table"]["my_int"] == 2053.3
def test_integers_behave_like_ints():
i = item(34)
assert i == 34
assert i.as_string() == "34"
i += 1
assert i == 35
assert i.as_string() == "35"
i -= 2
assert i == 33
assert i.as_string() == "33"
i /= 2
assert i == 16.5
assert i.as_string() == "16.5"
doc = parse("int = +34")
doc["int"] += 1
assert doc.as_string() == "int = +35"
def test_floats_behave_like_floats():
i = item(34.12)
assert i == 34.12
assert i.as_string() == "34.12"
i += 1
assert i == 35.12
assert i.as_string() == "35.12"
i -= 2
assert i == 33.12
assert i.as_string() == "33.12"
doc = parse("float = +34.12")
doc["float"] += 1
assert doc.as_string() == "float = +35.12"
def test_datetimes_behave_like_datetimes(tz_utc, tz_pst):
i = item(datetime(2018, 7, 22, 12, 34, 56))
assert i == datetime(2018, 7, 22, 12, 34, 56)
assert i.as_string() == "2018-07-22T12:34:56"
i += timedelta(days=1)
assert i == datetime(2018, 7, 23, 12, 34, 56)
assert i.as_string() == "2018-07-23T12:34:56"
i -= timedelta(days=2)
assert i == datetime(2018, 7, 21, 12, 34, 56)
assert i.as_string() == "2018-07-21T12:34:56"
i = i.replace(year=2019, tzinfo=tz_utc)
assert i == datetime(2019, 7, 21, 12, 34, 56, tzinfo=tz_utc)
assert i.as_string() == "2019-07-21T12:34:56+00:00"
i = i.astimezone(tz_pst)
assert i == datetime(2019, 7, 21, 4, 34, 56, tzinfo=tz_pst)
assert i.as_string() == "2019-07-21T04:34:56-08:00"
doc = parse("dt = 2018-07-22T12:34:56-05:00")
doc["dt"] += timedelta(days=1)
assert doc.as_string() == "dt = 2018-07-23T12:34:56-05:00"
def test_dates_behave_like_dates():
i = item(date(2018, 7, 22))
assert i == date(2018, 7, 22)
assert i.as_string() == "2018-07-22"
i += timedelta(days=1)
assert i == date(2018, 7, 23)
assert i.as_string() == "2018-07-23"
i -= timedelta(days=2)
assert i == date(2018, 7, 21)
assert i.as_string() == "2018-07-21"
i = i.replace(year=2019)
assert i == date(2019, 7, 21)
assert i.as_string() == "2019-07-21"
doc = parse("dt = 2018-07-22 # Comment")
doc["dt"] += timedelta(days=1)
assert doc.as_string() == "dt = 2018-07-23 # Comment"
def test_parse_datetime_followed_by_space():
# issue #260
doc = parse("dt = 2018-07-22 ")
assert doc["dt"] == date(2018, 7, 22)
assert doc.as_string() == "dt = 2018-07-22 "
doc = parse("dt = 2013-01-24 13:48:01.123456 ")
assert doc["dt"] == datetime(2013, 1, 24, 13, 48, 1, 123456)
assert doc.as_string() == "dt = 2013-01-24 13:48:01.123456 "
def test_times_behave_like_times():
i = item(time(12, 34, 56))
assert i == time(12, 34, 56)
assert i.as_string() == "12:34:56"
i = i.replace(hour=13)
assert i == time(13, 34, 56)
assert i.as_string() == "13:34:56"
def test_strings_behave_like_strs():
i = item("foo")
assert i == "foo"
assert i.as_string() == '"foo"'
i += " bar"
assert i == "foo bar"
assert i.as_string() == '"foo bar"'
i += " é"
assert i == "foo bar é"
assert i.as_string() == '"foo bar é"'
doc = parse('str = "foo" # Comment')
doc["str"] += " bar"
assert doc.as_string() == 'str = "foo bar" # Comment'
def test_string_add_preserve_escapes():
i = api.value('"foo\\"bar"')
i += " baz"
assert i == 'foo"bar baz'
assert i.as_string() == '"foo\\"bar baz"'
def test_tables_behave_like_dicts():
t = item({"foo": "bar"})
assert (
t.as_string()
== """foo = "bar"
"""
)
t.update({"bar": "baz"})
assert (
t.as_string()
== """foo = "bar"
bar = "baz"
"""
)
t.update({"bar": "boom"})
assert (
t.as_string()
== """foo = "bar"
bar = "boom"
"""
)
assert t.get("bar") == "boom"
assert t.setdefault("foobar", "fuzz") == "fuzz"
assert (
t.as_string()
== """foo = "bar"
bar = "boom"
foobar = "fuzz"
"""
)
def test_items_are_pickable():
n = item(12)
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "12"
n = item(12.34)
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "12.34"
n = item(True)
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "true"
n = item(datetime(2018, 10, 11, 12, 34, 56, 123456))
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "2018-10-11T12:34:56.123456"
n = item(date(2018, 10, 11))
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "2018-10-11"
n = item(time(12, 34, 56, 123456))
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "12:34:56.123456"
n = item([1, 2, 3])
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == "[1, 2, 3]"
n = item({"foo": "bar"})
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == 'foo = "bar"\n'
n = api.inline_table()
n["foo"] = "bar"
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == '{foo = "bar"}'
n = item("foo")
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == '"foo"'
n = item([{"foo": "bar"}])
s = pickle.dumps(n)
assert pickle.loads(s).as_string() == 'foo = "bar"\n'
def test_trim_comments_when_building_inline_table():
table = api.inline_table()
row = parse('foo = "bar" # Comment')
table.update(row)
assert table.as_string() == '{foo = "bar"}'
value = item("foobaz")
value.comment("Another comment")
table.append("baz", value)
assert "# Another comment" not in table.as_string()
assert table.as_string() == '{foo = "bar", baz = "foobaz"}'
def test_deleting_inline_table_element_does_not_leave_trailing_separator():
table = api.inline_table()
table["foo"] = "bar"
table["baz"] = "boom"
assert table.as_string() == '{foo = "bar", baz = "boom"}'
del table["baz"]
assert table.as_string() == '{foo = "bar"}'
table = api.inline_table()
table["foo"] = "bar"
del table["foo"]
table["baz"] = "boom"
assert table.as_string() == '{baz = "boom"}'
def test_deleting_inline_table_element_does_not_leave_trailing_separator2():
doc = parse('a = {foo = "bar", baz = "boom"}')
table = doc["a"]
assert table.as_string() == '{foo = "bar", baz = "boom"}'
del table["baz"]
assert table.as_string() == '{foo = "bar" }'
del table["foo"]
assert table.as_string() == "{ }"
table["baz"] = "boom"
assert table.as_string() == '{ baz = "boom"}'
def test_booleans_comparison():
boolean = Bool(True, Trivia())
assert boolean
boolean = Bool(False, Trivia())
assert not boolean
s = """[foo]
value = false
"""
content = parse(s)
assert {"foo": {"value": False}} == content
assert {"value": False} == content["foo"]
def test_table_copy():
table = item({"foo": "bar"})
table_copy = table.copy()
assert isinstance(table_copy, Table)
table["foo"] = "baz"
assert table_copy["foo"] == "bar"
assert table_copy.as_string() == 'foo = "bar"\n'
def test_copy_copy():
result = parse(
"""
[tool.poetry]
classifiers = [
# comment
"a",
"b",
]
"""
)
classifiers = result["tool"]["poetry"]["classifiers"]
new = copy.copy(classifiers)
assert new == classifiers
@pytest.mark.parametrize(
"key_str,escaped",
[("\\", '"\\\\"'), ('"', '"\\""'), ("\t", '"\\t"'), ("\x10", '"\\u0010"')],
)
def test_escape_key(key_str, escaped):
assert api.key(key_str).as_string() == escaped
def test_custom_encoders():
import decimal
@api.register_encoder
def encode_decimal(obj):
if isinstance(obj, decimal.Decimal):
return api.float_(str(obj))
raise TypeError
assert api.item(decimal.Decimal("1.23")).as_string() == "1.23"
with pytest.raises(TypeError):
api.item(object())
assert api.dumps({"foo": decimal.Decimal("1.23")}) == "foo = 1.23\n"
api.unregister_encoder(encode_decimal)
def test_no_extra_minus_sign():
doc = parse("a = -1")
assert doc.as_string() == "a = -1"
doc["a"] *= -1
assert doc.as_string() == "a = +1"
doc["a"] *= -1
assert doc.as_string() == "a = -1"
doc = parse("a = -1.5")
assert doc.as_string() == "a = -1.5"
doc["a"] *= -1
assert doc.as_string() == "a = +1.5"
doc["a"] *= -1
assert doc.as_string() == "a = -1.5"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_parser.py 0000644 0000000 0000000 00000002331 14643451625 014264 0 ustar 00 import pytest
from tomlkit.exceptions import EmptyTableNameError
from tomlkit.exceptions import InternalParserError
from tomlkit.exceptions import UnexpectedCharError
from tomlkit.items import StringType
from tomlkit.parser import Parser
def test_parser_should_raise_an_internal_error_if_parsing_wrong_type_of_string():
parser = Parser('"foo"')
with pytest.raises(InternalParserError) as e:
parser._parse_string(StringType.SLL)
assert e.value.line == 1
assert e.value.col == 0
def test_parser_should_raise_an_error_for_empty_tables():
content = """
[one]
[]
"""
parser = Parser(content)
with pytest.raises(EmptyTableNameError) as e:
parser.parse()
assert e.value.line == 3
assert e.value.col == 1
def test_parser_should_raise_an_error_if_equal_not_found():
content = """[foo]
a {c = 1, d = 2}
"""
parser = Parser(content)
with pytest.raises(UnexpectedCharError):
parser.parse()
def test_parse_multiline_string_ignore_the_first_newline():
content = 'a = """\nfoo\n"""'
parser = Parser(content)
assert parser.parse() == {"a": "foo\n"}
content = 'a = """\r\nfoo\n"""'
parser = Parser(content)
assert parser.parse() == {"a": "foo\n"}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_toml_document.py 0000644 0000000 0000000 00000046443 14643451625 015655 0 ustar 00 import copy
import json
import pickle
from datetime import datetime
from textwrap import dedent
import pytest
import tomlkit
from tests.util import assert_is_ppo
from tomlkit import parse
from tomlkit import ws
from tomlkit._utils import _utc
from tomlkit.api import document
from tomlkit.exceptions import NonExistentKey
def test_document_is_a_dict(example):
content = example("example")
doc = parse(content)
assert isinstance(doc, dict)
assert "owner" in doc
# owner
owner = doc["owner"]
assert doc.get("owner") == owner
assert isinstance(owner, dict)
assert "name" in owner
assert owner["name"] == "Tom Preston-Werner"
assert owner["organization"] == "GitHub"
assert owner["bio"] == "GitHub Cofounder & CEO\nLikes tater tots and beer."
assert owner["dob"] == datetime(1979, 5, 27, 7, 32, tzinfo=_utc)
# database
database = doc["database"]
assert isinstance(database, dict)
assert database["server"] == "192.168.1.1"
assert database["ports"] == [8001, 8001, 8002]
assert database["connection_max"] == 5000
assert database["enabled"] is True
# servers
servers = doc["servers"]
assert isinstance(servers, dict)
alpha = servers["alpha"]
assert servers.get("alpha") == alpha
assert isinstance(alpha, dict)
assert alpha["ip"] == "10.0.0.1"
assert alpha["dc"] == "eqdc10"
beta = servers["beta"]
assert isinstance(beta, dict)
assert beta["ip"] == "10.0.0.2"
assert beta["dc"] == "eqdc10"
assert beta["country"] == "中国"
# clients
clients = doc["clients"]
assert isinstance(clients, dict)
data = clients["data"]
assert isinstance(data, list)
assert data[0] == ["gamma", "delta"]
assert data[1] == [1, 2]
assert clients["hosts"] == ["alpha", "omega"]
# Products
products = doc["products"]
assert isinstance(products, list)
hammer = products[0]
assert hammer == {"name": "Hammer", "sku": 738594937}
nail = products[1]
assert nail["name"] == "Nail"
assert nail["sku"] == 284758393
assert nail["color"] == "gray"
nail["color"] = "black"
assert nail["color"] == "black"
assert doc["products"][1]["color"] == "black"
assert nail.get("color") == "black"
content = """foo = "bar"
"""
doc = parse(content)
doc.update({"bar": "baz"})
assert (
doc.as_string()
== """foo = "bar"
bar = "baz"
"""
)
doc.update({"bar": "boom"})
assert (
doc.as_string()
== """foo = "bar"
bar = "boom"
"""
)
assert doc.setdefault("bar", "waldo") == "boom"
assert (
doc.as_string()
== """foo = "bar"
bar = "boom"
"""
)
assert doc.setdefault("thud", "waldo") == "waldo"
assert (
doc.as_string()
== """foo = "bar"
bar = "boom"
thud = "waldo"
"""
)
def test_toml_document_without_super_tables():
content = """[tool.poetry]
name = "foo"
"""
doc = parse(content)
assert "tool" in doc
assert "poetry" in doc["tool"]
assert doc["tool"]["poetry"]["name"] == "foo"
doc["tool"]["poetry"]["name"] = "bar"
assert (
doc.as_string()
== """[tool.poetry]
name = "bar"
"""
)
d = {}
d.update(doc)
assert "tool" in d
def test_toml_document_unwrap():
content = """[tool.poetry]
name = "foo"
"""
doc = parse(content)
unwrapped = doc.unwrap()
assert_is_ppo(unwrapped, dict)
assert_is_ppo(next(iter(unwrapped)), str)
assert_is_ppo(unwrapped["tool"], dict)
assert_is_ppo(next(iter(unwrapped["tool"])), str)
assert_is_ppo(unwrapped["tool"]["poetry"]["name"], str)
def test_toml_document_with_dotted_keys(example):
content = example("0.5.0")
doc = parse(content)
assert "physical" in doc
assert "color" in doc["physical"]
assert "shape" in doc["physical"]
assert doc["physical"]["color"] == "orange"
assert doc["physical"]["shape"] == "round"
assert "site" in doc
assert "google.com" in doc["site"]
assert doc["site"]["google.com"]
assert doc["a"]["b"]["c"] == 1
assert doc["a"]["b"]["d"] == 2
def test_toml_document_super_table_with_different_sub_sections(example):
content = example("pyproject")
doc = parse(content)
tool = doc["tool"]
assert "poetry" in tool
assert "black" in tool
def test_adding_an_element_to_existing_table_with_ws_remove_ws():
content = """[foo]
[foo.bar]
"""
doc = parse(content)
doc["foo"]["int"] = 34
expected = """[foo]
int = 34
[foo.bar]
"""
assert expected == doc.as_string()
def test_document_with_aot_after_sub_tables():
content = """[foo.bar]
name = "Bar"
[foo.bar.baz]
name = "Baz"
[[foo.bar.tests]]
name = "Test 1"
"""
doc = parse(content)
assert doc["foo"]["bar"]["tests"][0]["name"] == "Test 1"
def test_document_with_new_sub_table_after_other_table():
content = """[foo]
name = "Bar"
[bar]
name = "Baz"
[foo.baz]
name = "Test 1"
"""
doc = parse(content)
assert doc["foo"]["name"] == "Bar"
assert doc["bar"]["name"] == "Baz"
assert doc["foo"]["baz"]["name"] == "Test 1"
assert doc.as_string() == content
def test_document_with_new_sub_table_after_other_table_delete():
content = """[foo]
name = "Bar"
[bar]
name = "Baz"
[foo.baz]
name = "Test 1"
"""
doc = parse(content)
del doc["foo"]
assert (
doc.as_string()
== """[bar]
name = "Baz"
"""
)
def test_document_with_new_sub_table_after_other_table_replace():
content = """[foo]
name = "Bar"
[bar]
name = "Baz"
[foo.baz]
name = "Test 1"
"""
doc = parse(content)
doc["foo"] = {"a": "b"}
assert (
doc.as_string()
== """[foo]
a = "b"
[bar]
name = "Baz"
"""
)
def test_inserting_after_element_with_no_new_line_adds_a_new_line():
doc = parse("foo = 10")
doc["bar"] = 11
expected = """foo = 10
bar = 11
"""
assert expected == doc.as_string()
doc = parse("# Comment")
doc["bar"] = 11
expected = """# Comment
bar = 11
"""
assert expected == doc.as_string()
def test_inserting_after_deletion():
doc = parse("foo = 10\n")
del doc["foo"]
doc["bar"] = 11
expected = """bar = 11
"""
assert expected == doc.as_string()
def test_toml_document_with_dotted_keys_inside_table(example):
content = example("0.5.0")
doc = parse(content)
t = doc["table"]
assert "a" in t
assert t["a"]["b"]["c"] == 1
assert t["a"]["b"]["d"] == 2
assert t["a"]["c"] == 3
def test_toml_document_with_super_aot_after_super_table(example):
content = example("pyproject")
doc = parse(content)
aot = doc["tool"]["foo"]
assert isinstance(aot, list)
first = aot[0]
assert first["name"] == "first"
second = aot[1]
assert second["name"] == "second"
def test_toml_document_has_always_a_new_line_after_table_header():
content = """[section.sub]"""
doc = parse(content)
assert doc.as_string() == """[section.sub]"""
doc["section"]["sub"]["foo"] = "bar"
assert (
doc.as_string()
== """[section.sub]
foo = "bar"
"""
)
del doc["section"]["sub"]["foo"]
assert doc.as_string() == """[section.sub]"""
def test_toml_document_is_pickable(example):
content = example("example")
doc = parse(content)
assert pickle.loads(pickle.dumps(doc)).as_string() == content
def test_toml_document_set_super_table_element():
content = """[site.user]
name = "John"
"""
doc = parse(content)
doc["site"]["user"] = "Tom"
assert (
doc.as_string()
== """[site]
user = "Tom"
"""
)
def test_toml_document_can_be_copied():
content = "[foo]\nbar=1"
doc = parse(content)
doc = copy.copy(doc)
assert (
doc.as_string()
== """[foo]
bar=1"""
)
assert doc == {"foo": {"bar": 1}}
assert doc["foo"]["bar"] == 1
assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}}
doc = parse(content)
doc = doc.copy()
assert (
doc.as_string()
== """[foo]
bar=1"""
)
assert doc == {"foo": {"bar": 1}}
assert doc["foo"]["bar"] == 1
assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}}
def test_getting_inline_table_is_still_an_inline_table():
content = """\
[tool.poetry]
name = "foo"
[tool.poetry.dependencies]
[tool.poetry.dev-dependencies]
"""
doc = parse(content)
poetry_section = doc["tool"]["poetry"]
dependencies = poetry_section["dependencies"]
dependencies["foo"] = tomlkit.inline_table()
dependencies["foo"]["version"] = "^2.0"
dependencies["foo"]["source"] = "local"
dependencies["bar"] = tomlkit.inline_table()
dependencies["bar"]["version"] = "^3.0"
dependencies["bar"]["source"] = "remote"
dev_dependencies = poetry_section["dev-dependencies"]
dev_dependencies["baz"] = tomlkit.inline_table()
dev_dependencies["baz"]["version"] = "^4.0"
dev_dependencies["baz"]["source"] = "other"
assert (
doc.as_string()
== """\
[tool.poetry]
name = "foo"
[tool.poetry.dependencies]
foo = {version = "^2.0", source = "local"}
bar = {version = "^3.0", source = "remote"}
[tool.poetry.dev-dependencies]
baz = {version = "^4.0", source = "other"}
"""
)
def test_declare_sub_table_with_intermediate_table():
content = """
[students]
tommy = 87
mary = 66
[subjects]
maths = "maths"
english = "english"
[students.bob]
score = 91
"""
doc = parse(content)
assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc["students"]
assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc.get("students")
def test_values_can_still_be_set_for_out_of_order_tables():
content = """
[a.a]
key = "value"
[a.b]
[a.a.c]
"""
doc = parse(content)
doc["a"]["a"]["key"] = "new_value"
assert doc["a"]["a"]["key"] == "new_value"
expected = """
[a.a]
key = "new_value"
[a.b]
[a.a.c]
"""
assert expected == doc.as_string()
doc["a"]["a"]["bar"] = "baz"
expected = """
[a.a]
key = "new_value"
bar = "baz"
[a.b]
[a.a.c]
"""
assert expected == doc.as_string()
del doc["a"]["a"]["key"]
expected = """
[a.a]
bar = "baz"
[a.b]
[a.a.c]
"""
assert expected == doc.as_string()
with pytest.raises(NonExistentKey):
doc["a"]["a"]["key"]
with pytest.raises(NonExistentKey):
del doc["a"]["a"]["key"]
def test_out_of_order_table_can_add_multiple_tables():
content = """\
[a.a.b]
x = 1
[foo]
bar = 1
[a.a.c]
y = 1
[a.a.d]
z = 1
"""
doc = parse(content)
assert doc.as_string() == content
assert doc["a"]["a"] == {"b": {"x": 1}, "c": {"y": 1}, "d": {"z": 1}}
def test_out_of_order_tables_are_still_dicts():
content = """
[a.a]
key = "value"
[a.b]
[a.a.c]
"""
doc = parse(content)
assert isinstance(doc["a"], dict)
assert isinstance(doc["a"]["a"], dict)
table = doc["a"]["a"]
assert "key" in table
assert "c" in table
assert table.get("key") == "value"
assert {} == table.get("c")
assert table.get("d") is None
assert table.get("d", "foo") == "foo"
assert table.setdefault("d", "bar") == "bar"
assert table["d"] == "bar"
assert table.pop("key") == "value"
assert "key" not in table
assert table.pop("missing", default="baz") == "baz"
with pytest.raises(KeyError):
table.pop("missing")
def test_string_output_order_is_preserved_for_out_of_order_tables():
content = """
[tool.poetry]
name = "foo"
[tool.poetry.dependencies]
python = "^3.6"
bar = "^1.0"
[build-system]
requires = ["poetry-core"]
backend = "poetry.core.masonry.api"
[tool.other]
a = "b"
"""
doc = parse(content)
constraint = tomlkit.inline_table()
constraint["version"] = "^1.0"
doc["tool"]["poetry"]["dependencies"]["bar"] = constraint
assert doc["tool"]["poetry"]["dependencies"]["bar"]["version"] == "^1.0"
expected = """
[tool.poetry]
name = "foo"
[tool.poetry.dependencies]
python = "^3.6"
bar = {version = "^1.0"}
[build-system]
requires = ["poetry-core"]
backend = "poetry.core.masonry.api"
[tool.other]
a = "b"
"""
assert expected == doc.as_string()
def test_remove_from_out_of_order_table():
content = """[a]
x = 1
[c]
z = 3
[a.b]
y = 2
"""
document = parse(content)
del document["a"]["b"]
assert (
document.as_string()
== """[a]
x = 1
[c]
z = 3
"""
)
assert json.dumps(document) == '{"a": {"x": 1}, "c": {"z": 3}}'
def test_update_nested_out_of_order_table():
doc = parse("""\
[root1.root2.a.b.c]
value = 2
[WALRUS]
goo = "gjob"
[root1.root2.x]
value = 4
""")
doc["root1"]["root2"]["a"].add("tmp", "hi")
assert (
doc.as_string()
== """\
[root1.root2.a]
tmp = "hi"
[root1.root2.a.b.c]
value = 2
[WALRUS]
goo = "gjob"
[root1.root2.x]
value = 4
"""
)
def test_updating_nested_value_keeps_correct_indent():
content = """
[Key1]
[key1.Key2]
Value1 = 10
Value2 = 30
"""
doc = parse(content)
doc["key1"]["Key2"]["Value1"] = 20
expected = """
[Key1]
[key1.Key2]
Value1 = 20
Value2 = 30
"""
assert doc.as_string() == expected
def test_repr():
content = """
namespace.key1 = "value1"
namespace.key2 = "value2"
[tool.poetry.foo]
option = "test"
[tool.poetry.bar]
option = "test"
inline = {"foo" = "bar", "bar" = "baz"}
"""
doc = parse(content)
assert (
repr(doc)
== "{'namespace': {'key1': 'value1', 'key2': 'value2'}, 'tool': {'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}}"
)
assert (
repr(doc["tool"])
== "{'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}"
)
assert repr(doc["namespace"]) == "{'key1': 'value1', 'key2': 'value2'}"
def test_deepcopy():
content = """
[tool]
name = "foo"
[tool.project.section]
option = "test"
"""
doc = parse(content)
copied = copy.deepcopy(doc)
assert copied == doc
assert copied.as_string() == content
def test_move_table():
content = """a = 1
[x]
a = 1
[y]
b = 1
"""
doc = parse(content)
doc["a"] = doc.pop("x")
doc["z"] = doc.pop("y")
assert (
doc.as_string()
== """[a]
a = 1
[z]
b = 1
"""
)
def test_replace_with_table():
content = """a = 1
b = 2
c = 3
"""
doc = parse(content)
doc["b"] = {"foo": "bar"}
assert (
doc.as_string()
== """a = 1
c = 3
[b]
foo = "bar"
"""
)
def test_replace_table_with_value():
content = """[foo]
a = 1
[bar]
b = 2
"""
doc = parse(content)
doc["bar"] = 42
assert (
doc.as_string()
== """bar = 42
[foo]
a = 1
"""
)
def test_replace_preserve_sep():
content = """a = 1
[foo]
b = "what"
"""
doc = parse(content)
doc["a"] = 2
doc["foo"]["b"] = "how"
assert (
doc.as_string()
== """a = 2
[foo]
b = "how"
"""
)
def test_replace_with_table_of_nested():
example = """\
[a]
x = 1
[a.b]
y = 2
"""
doc = parse(dedent(example))
doc["c"] = doc.pop("a")
expected = """\
[c]
x = 1
[c.b]
y = 2
"""
assert doc.as_string().strip() == dedent(expected).strip()
def test_replace_with_aot_of_nested():
example = """\
[a]
x = 1
[[a.b]]
y = 2
[[a.b]]
[a.b.c]
z = 2
[[a.b.c.d]]
w = 2
"""
doc = parse(dedent(example))
doc["f"] = doc.pop("a")
expected = """\
[f]
x = 1
[[f.b]]
y = 2
[[f.b]]
[f.b.c]
z = 2
[[f.b.c.d]]
w = 2
"""
assert doc.as_string().strip() == dedent(expected).strip()
def test_replace_with_comment():
content = 'a = "1"'
doc = parse(content)
a = tomlkit.item(int(doc["a"]))
a.comment("`a` should be an int")
doc["a"] = a
expected = "a = 1 # `a` should be an int"
assert doc.as_string() == expected
content = 'a = "1, 2, 3"'
doc = parse(content)
a = tomlkit.array()
a.comment("`a` should be an array")
for x in doc["a"].split(","):
a.append(int(x.strip()))
doc["a"] = a
expected = "a = [1, 2, 3] # `a` should be an array"
assert doc.as_string() == expected
doc = parse(content)
a = tomlkit.inline_table()
a.comment("`a` should be an inline-table")
for x in doc["a"].split(","):
i = int(x.strip())
a.append(chr(ord("a") + i - 1), i)
doc["a"] = a
expected = "a = {a = 1, b = 2, c = 3} # `a` should be an inline-table"
assert doc.as_string() == expected
def test_no_spurious_whitespaces():
content = """\
[x]
a = 1
[y]
b = 2
"""
doc = parse(dedent(content))
doc["z"] = doc.pop("y")
expected = """\
[x]
a = 1
[z]
b = 2
"""
assert doc.as_string() == dedent(expected)
doc["w"] = {"c": 3}
expected = """\
[x]
a = 1
[z]
b = 2
[w]
c = 3
"""
assert doc.as_string() == dedent(expected)
doc = parse(dedent(content))
del doc["x"]
doc["z"] = {"c": 3}
expected = """\
[y]
b = 2
[z]
c = 3
"""
assert doc.as_string() == dedent(expected)
def test_pop_add_whitespace_and_insert_table_work_togheter():
content = """\
a = 1
b = 2
c = 3
d = 4
"""
doc = parse(dedent(content))
doc.pop("a")
doc.pop("b")
doc.add(ws("\n"))
doc["e"] = {"foo": "bar"}
expected = """\
c = 3
d = 4
[e]
foo = "bar"
"""
text = doc.as_string()
out = parse(text)
assert out["d"] == 4
assert "d" not in out["e"]
assert text == dedent(expected)
def test_add_newline_before_super_table():
doc = document()
doc["a"] = 1
doc["b"] = {"c": {}}
doc["d"] = {"e": {}}
expected = """\
a = 1
[b.c]
[d.e]
"""
assert doc.as_string() == dedent(expected)
def test_remove_item_from_super_table():
content = """\
[hello.one]
a = 1
[hello.two]
b = 1
"""
doc = parse(dedent(content))
del doc["hello"]["two"]
expected = """\
[hello.one]
a = 1
"""
assert doc.as_string() == dedent(expected)
def test_nested_table_update_display_name():
content = """\
[parent]
[parent.foo]
x = 1
"""
doc = parse(dedent(content))
sub = """\
[foo]
y = 2
[bar]
z = 3
"""
doc["parent"].update(parse(dedent(sub)))
expected = """\
[parent]
[parent.foo]
y = 2
[parent.bar]
z = 3
"""
assert doc.as_string() == dedent(expected)
def test_build_table_with_dotted_key():
doc = tomlkit.document()
data = {
"a.b.c": 1,
"a.b.d": 2,
"a": {"c": {"foo": "bar"}},
"a.d.e": 3,
}
for key, value in data.items():
if "." not in key:
doc.append(key, value)
else:
doc.append(tomlkit.key(key.split(".")), value)
expected = """\
a.b.c = 1
a.b.d = 2
a.d.e = 3
[a.c]
foo = "bar"
"""
assert doc.as_string() == expected
assert json.loads(json.dumps(doc)) == {
"a": {"b": {"c": 1, "d": 2}, "d": {"e": 3}, "c": {"foo": "bar"}}
}
def test_parse_subtables_no_extra_indent():
expected = """\
[a]
[a.b.c]
foo = 1
[a.b.d]
bar = 2
"""
doc = parse(expected)
assert doc.as_string() == expected
def test_item_preserves_the_order():
t = tomlkit.inline_table()
t.update({"a": 1, "b": 2})
doc = {"name": "foo", "table": t, "age": 42}
expected = """\
name = "foo"
table = {a = 1, b = 2}
age = 42
"""
assert tomlkit.dumps(doc) == expected
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_toml_file.py 0000644 0000000 0000000 00000005366 14643451625 014755 0 ustar 00 import os
from tomlkit.toml_document import TOMLDocument
from tomlkit.toml_file import TOMLFile
def test_toml_file(example):
original_content = example("example")
toml_file = os.path.join(os.path.dirname(__file__), "examples", "example.toml")
toml = TOMLFile(toml_file)
content = toml.read()
assert isinstance(content, TOMLDocument)
assert content["owner"]["organization"] == "GitHub"
toml.write(content)
try:
with open(toml_file, encoding="utf-8") as f:
assert original_content == f.read()
finally:
with open(toml_file, "w", encoding="utf-8", newline="") as f:
assert f.write(original_content)
def test_keep_old_eol(tmpdir):
toml_path = str(tmpdir / "pyproject.toml")
with open(toml_path, "wb+") as f:
f.write(b"a = 1\r\nb = 2\r\n")
f = TOMLFile(toml_path)
content = f.read()
content["b"] = 3
f.write(content)
with open(toml_path, "rb") as f:
assert f.read() == b"a = 1\r\nb = 3\r\n"
def test_keep_old_eol_2(tmpdir):
toml_path = str(tmpdir / "pyproject.toml")
with open(toml_path, "wb+") as f:
f.write(b"a = 1\nb = 2\n")
f = TOMLFile(toml_path)
content = f.read()
content["b"] = 3
f.write(content)
with open(toml_path, "rb") as f:
assert f.read() == b"a = 1\nb = 3\n"
def test_mixed_eol(tmpdir):
toml_path = str(tmpdir / "pyproject.toml")
with open(toml_path, "wb+") as f:
f.write(b"a = 1\r\nrb = 2\n")
f = TOMLFile(toml_path)
f.write(f.read())
with open(toml_path, "rb") as f:
assert f.read() == b"a = 1\r\nrb = 2\n"
def test_consistent_eol(tmpdir):
toml_path = str(tmpdir / "pyproject.toml")
with open(toml_path, "wb+") as f:
f.write(b"a = 1\r\nb = 2\r\n")
f = TOMLFile(toml_path)
content = f.read()
content["c"] = 3
f.write(content)
with open(toml_path, "rb") as f:
assert f.read() == b"a = 1\r\nb = 2\r\nc = 3\r\n"
def test_consistent_eol_2(tmpdir):
toml_path = str(tmpdir / "pyproject.toml")
with open(toml_path, "wb+") as f:
f.write(b"a = 1\nb = 2\n")
f = TOMLFile(toml_path)
content = f.read()
content["c"] = 3
content["c"].trivia.trail = "\r\n"
f.write(content)
with open(toml_path, "rb") as f:
assert f.read() == b"a = 1\nb = 2\nc = 3\n"
def test_default_eol_is_os_linesep(tmpdir):
toml_path = str(tmpdir / "pyproject.toml")
f = TOMLFile(toml_path)
content = TOMLDocument()
content.append("a", 1)
content["a"].trivia.trail = "\n"
content.append("b", 2)
content["b"].trivia.trail = "\r\n"
f.write(content)
linesep = os.linesep.encode()
with open(toml_path, "rb") as f:
assert f.read() == b"a = 1" + linesep + b"b = 2" + linesep
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_toml_spec_tests.py 0000644 0000000 0000000 00000006601 14643451625 016203 0 ustar 00 import json
import os
import re
import pytest
import yaml
from tomlkit import parse
from tomlkit._compat import decode
from tomlkit._utils import parse_rfc3339
from tomlkit.exceptions import TOMLKitError
IGNORED_TESTS = []
# The following tests trigger a RecursionError
IGNORED_TESTS += ["qa-array-inline-nested-1000", "qa-table-inline-nested-1000"]
# The following tests don't work due to time microseconds precision of the tests
IGNORED_TESTS += ["spec-date-time-6", "spec-date-time-local-2", "spec-time-2"]
# The following tests don't work due to nan always comparing to False
IGNORED_TESTS += ["spec-float-13", "spec-float-14", "spec-float-15"]
# The following tests don't work due to issues with th epyyaml library
IGNORED_TESTS += ["spec-key-value-pair-9"]
SPEC_TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-spec-tests")
VALID_TESTS = sorted(
os.path.basename(f).rsplit(".", 1)[0]
for f in os.listdir(os.path.join(SPEC_TEST_DIR, "values"))
if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS
)
ERROR_TESTS = sorted(
os.path.basename(f).rsplit(".", 1)[0]
for f in os.listdir(os.path.join(SPEC_TEST_DIR, "errors"))
if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS
)
def to_bool(s):
assert s in ["true", "false"]
return s == "true"
stypes = {
"string": str,
"bool": to_bool,
"integer": int,
"float": float,
"datetime": parse_rfc3339,
"datetime-local": parse_rfc3339,
"date": parse_rfc3339,
"time": parse_rfc3339,
}
loader = yaml.SafeLoader
loader.add_implicit_resolver(
"tag:yaml.org,2002:float",
re.compile(
"""^(?:
[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)?
|[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
|\\.[0-9_]+(?:[eE][-+][0-9]+)?
|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*
|[-+]?\\.(?:inf|Inf|INF)
|\\.(?:nan|NaN|NAN))$""",
re.X,
),
list("-+0123456789."),
)
def untag(value):
if isinstance(value, list):
return [untag(i) for i in value]
elif "type" in value and "value" in value and len(value) == 2:
if value["type"] in stypes:
val = decode(value["value"])
return stypes[value["type"]](val)
elif value["type"] == "array":
return [untag(i) for i in value["value"]]
else:
raise Exception(f'Unsupported type {value["type"]}')
else:
return {k: untag(v) for k, v in value.items()}
@pytest.mark.parametrize("test", VALID_TESTS)
def test_valid_decode(test):
toml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".toml")
yaml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".yaml")
with open(toml_file, encoding="utf-8") as f:
toml_content = f.read()
toml_val = parse(toml_content)
if os.path.exists(yaml_file):
with open(yaml_file, encoding="utf-8") as f:
yaml_val = yaml.load(f.read(), Loader=loader)
else:
with open(
os.path.join(SPEC_TEST_DIR, "values", test + ".json"), encoding="utf-8"
) as f:
yaml_val = untag(json.loads(f.read()))
assert toml_val == yaml_val
assert toml_val.as_string() == toml_content
@pytest.mark.parametrize("test", ERROR_TESTS)
def test_invalid_decode(test):
toml_file = os.path.join(SPEC_TEST_DIR, "errors", test + ".toml")
with pytest.raises(TOMLKitError), open(toml_file, encoding="utf-8") as f:
parse(f.read())
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_toml_tests.py 0000644 0000000 0000000 00000003030 14643451625 015162 0 ustar 00 import json
import pytest
from tomlkit import load
from tomlkit import parse
from tomlkit._compat import decode
from tomlkit._utils import parse_rfc3339
from tomlkit.exceptions import TOMLKitError
def to_bool(s):
assert s in ["true", "false"]
return s == "true"
stypes = {
"string": str,
"bool": to_bool,
"integer": int,
"float": float,
"datetime": parse_rfc3339,
"datetime-local": parse_rfc3339,
"date-local": parse_rfc3339,
"time-local": parse_rfc3339,
}
def untag(value):
if isinstance(value, list):
return [untag(i) for i in value]
elif "type" in value and "value" in value and len(value) == 2:
if value["type"] in stypes:
val = decode(value["value"])
return stypes[value["type"]](val)
elif value["type"] == "array":
return [untag(i) for i in value["value"]]
else:
raise Exception(f'Unsupported type {value["type"]}')
else:
return {k: untag(v) for k, v in value.items()}
def test_valid_decode(valid_case):
json_val = untag(json.loads(valid_case["json"]))
toml_val = parse(valid_case["toml"])
assert toml_val == json_val
assert toml_val.as_string() == valid_case["toml"]
def test_invalid_decode(invalid_decode_case):
with pytest.raises(TOMLKitError):
parse(invalid_decode_case["toml"])
def test_invalid_encode(invalid_encode_case):
with pytest.raises((TOMLKitError, UnicodeDecodeError)), open(
invalid_encode_case, encoding="utf-8"
) as f:
load(f)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_utils.py 0000644 0000000 0000000 00000002572 14643451625 014137 0 ustar 00 from datetime import date
from datetime import datetime as dt
from datetime import time
from datetime import timedelta as td
from datetime import timezone as tz
import pytest
from tomlkit._utils import _utc
from tomlkit._utils import parse_rfc3339
@pytest.mark.parametrize(
"string, expected",
[
("1979-05-27T07:32:00", dt(1979, 5, 27, 7, 32, 0)),
("1979-05-27T07:32:00Z", dt(1979, 5, 27, 7, 32, 0, tzinfo=_utc)),
(
"1979-05-27T07:32:00-07:00",
dt(1979, 5, 27, 7, 32, 0, tzinfo=tz(td(seconds=-7 * 3600), "-07:00")),
),
(
"1979-05-27T00:32:00.999999-07:00",
dt(
1979,
5,
27,
0,
32,
0,
999999,
tzinfo=tz(td(seconds=-7 * 3600), "-07:00"),
),
),
],
)
def test_parse_rfc3339_datetime(string, expected):
assert parse_rfc3339(string) == expected
@pytest.mark.parametrize("string, expected", [("1979-05-27", date(1979, 5, 27))])
def test_parse_rfc3339_date(string, expected):
assert parse_rfc3339(string) == expected
@pytest.mark.parametrize(
"string, expected",
[("12:34:56", time(12, 34, 56)), ("12:34:56.123456", time(12, 34, 56, 123456))],
)
def test_parse_rfc3339_time(string, expected):
assert parse_rfc3339(string) == expected
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/test_write.py 0000644 0000000 0000000 00000001474 14643451625 014131 0 ustar 00 from tomlkit import dumps
from tomlkit import loads
def test_write_backslash():
d = {"foo": "\\e\u25e6\r"}
expected = """foo = "\\\\e\u25e6\\r"
"""
assert expected == dumps(d)
assert loads(dumps(d))["foo"] == "\\e\u25e6\r"
def test_escape_special_characters_in_key():
d = {"foo\nbar": "baz"}
expected = '"foo\\nbar" = "baz"\n'
assert expected == dumps(d)
assert loads(dumps(d))["foo\nbar"] == "baz"
def test_write_inline_table_in_nested_arrays():
d = {"foo": [[{"a": 1}]]}
expected = "foo = [[{a = 1}]]\n"
assert expected == dumps(d)
assert loads(dumps(d))["foo"] == [[{"a": 1}]]
def test_serialize_aot_with_nested_tables():
doc = {"a": [{"b": {"c": 1}}]}
expected = """\
[[a]]
[a.b]
c = 1
"""
assert dumps(doc) == expected
assert loads(expected) == doc
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/.gitattributes 0000644 0000000 0000000 00000000104 14643451625 017311 0 ustar 00 *.toml text=auto
*.yaml text=auto
values/spec-newline-*.toml binary
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/LICENSE 0000644 0000000 0000000 00000001346 14643451625 015434 0 ustar 00 Copyright Rebecca Turner
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/README.md 0000644 0000000 0000000 00000001176 14643451625 015707 0 ustar 00 These are the spec tests for TOML used by @iarna/toml.
The errors folder contains TOML files that should cause a parser to report an error.
The values folder contains TOML files and paired YAML or JSON files. The
YAML files should parse to a structure that's deeply equal to the TOML
structure. The JSON files match the patterns found in [BurntSushi 0.4 TOML
tests](https://github.com/BurntSushi/toml-test#json-encoding).
We introduce the following new types to match TOML 0.5.0:
* _datetime-local_ - A datetime without a timezone. Floating.
* _date_ - A date without any time component
* _time_ - A time without any date component
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/errors/array-of-tables-1.toml 0000644 0000000 0000000 00000000067 14643451625 021765 0 ustar 00 # INVALID TOML DOC
fruit = []
[[fruit]] # Not allowed
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/errors/array-of-tables-2.toml 0000644 0000000 0000000 00000000274 14643451625 021766 0 ustar 00 # INVALID TOML DOC
[[fruit]]
name = "apple"
[[fruit.variety]]
name = "red delicious"
# This table conflicts with the previous table
[fruit.variety]
name = "granny smith"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/errors/bare-key-1.toml 0000644 0000000 0000000 00000000017 14643451625 020467 0 ustar 00 bare!key = 123
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/errors/bare-key-2.toml 0000644 0000000 0000000 00000000021 14643451625 020463 0 ustar 00 barekey
= 123
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0309246
tomlkit-0.13.0/tests/toml-spec-tests/errors/bare-key-3.toml 0000644 0000000 0000000 00000000011 14643451625 020463 0 ustar 00 barekey = ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/comment-control-1.toml 0000644 0000000 0000000 00000000017 14643451625 022110 0 ustar 00 a = "null" #
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/comment-control-2.toml 0000644 0000000 0000000 00000000021 14643451625 022104 0 ustar 00 a = "ctrl-P" #
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/comment-control-3.toml 0000644 0000000 0000000 00000000021 14643451625 022105 0 ustar 00 a = "ctrl-_" #
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/comment-control-4.toml 0000644 0000000 0000000 00000000017 14643451625 022113 0 ustar 00 a = "0x7f" #
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/inline-table-imutable-1.toml 0000644 0000000 0000000 00000000102 14643451625 023126 0 ustar 00 [product]
type = { name = "Nail" }
type.edible = false # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/inline-table-imutable-2.toml 0000644 0000000 0000000 00000000102 14643451625 023127 0 ustar 00 [product]
type.name = "Nail"
type = { edible = false } # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/inline-table-trailing-comma.toml 0000644 0000000 0000000 00000000025 14643451625 024075 0 ustar 00 abc = { abc = 123, }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/int-0-padded.toml 0000644 0000000 0000000 00000000013 14643451625 020774 0 ustar 00 int = 0123
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/int-signed-bin.toml 0000644 0000000 0000000 00000000014 14643451625 021436 0 ustar 00 bin = +0b10
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/int-signed-hex.toml 0000644 0000000 0000000 00000000014 14643451625 021452 0 ustar 00 hex = +0xab
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/int-signed-oct.toml 0000644 0000000 0000000 00000000014 14643451625 021453 0 ustar 00 oct = +0o23
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/key-value-pair-1.toml 0000644 0000000 0000000 00000000020 14643451625 021615 0 ustar 00 key = # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/key-value-pair-2.toml 0000644 0000000 0000000 00000000060 14643451625 021622 0 ustar 00 first = "Tom" last = "Preston-Werner" # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/multiple-dot-key.toml 0000644 0000000 0000000 00000000341 14643451625 022037 0 ustar 00 # THE FOLLOWING IS INVALID
# This defines the value of fruit.apple to be an integer.
fruit.apple = 1
# But then this treats fruit.apple like it's a table.
# You can't turn an integer into a table.
fruit.apple.smooth = true
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/multiple-key.toml 0000644 0000000 0000000 00000000057 14643451625 021257 0 ustar 00 # DO NOT DO THIS
name = "Tom"
name = "Pradyun"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/no-key-name.toml 0000644 0000000 0000000 00000000033 14643451625 020750 0 ustar 00 = "no key name" # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-control-1.toml 0000644 0000000 0000000 00000000014 14643451625 023030 0 ustar 00 a = "null "
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-control-2.toml 0000644 0000000 0000000 00000000016 14643451625 023033 0 ustar 00 a = "ctrl-P"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-control-3.toml 0000644 0000000 0000000 00000000016 14643451625 023034 0 ustar 00 a = "ctrl-_"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-control-4.toml 0000644 0000000 0000000 00000000014 14643451625 023033 0 ustar 00 a = "0x7f"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-control-1.toml 0000644 0000000 0000000 00000000020 14643451625 025025 0 ustar 00 a = """null """
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-control-2.toml 0000644 0000000 0000000 00000000020 14643451625 025026 0 ustar 00 a = """null"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-control-3.toml 0000644 0000000 0000000 00000000020 14643451625 025027 0 ustar 00 a = """null"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-control-4.toml 0000644 0000000 0000000 00000000020 14643451625 025030 0 ustar 00 a = """null"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-invalid-backslash.toml 0000644 0000000 0000000 00000000034 14643451625 026573 0 ustar 00 a = """
foo \ \n
bar"""
././@PaxHeader 0000000 0000000 0000000 00000000213 00000000000 010211 x ustar 00 111 path=tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-1.toml
28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-1.tom0000644 0000000 0000000 00000000025 14643451625 030363 0 ustar 00 a = """\UFFFFFFFF"""
././@PaxHeader 0000000 0000000 0000000 00000000213 00000000000 010211 x ustar 00 111 path=tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-2.toml
28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-2.tom0000644 0000000 0000000 00000000025 14643451625 030364 0 ustar 00 a = """\U00D80000"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-quotes.toml 0000644 0000000 0000000 00000000062 14643451625 024535 0 ustar 00 str5 = """Here are three quotation marks: """."""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-multiline-unknown-escape.toml 0000644 0000000 0000000 00000000015 14643451625 026150 0 ustar 00 a = """\@"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-1.toml 0000644 0000000 0000000 00000000021 14643451625 026533 0 ustar 00 a = "\UFFFFFFFF"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-2.toml 0000644 0000000 0000000 00000000021 14643451625 026534 0 ustar 00 a = "\U00D80000"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-basic-unknown-escape.toml 0000644 0000000 0000000 00000000011 14643451625 024144 0 ustar 00 a = "\@"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-control-1.toml 0000644 0000000 0000000 00000000014 14643451625 023403 0 ustar 00 a = 'null '
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-control-2.toml 0000644 0000000 0000000 00000000014 14643451625 023404 0 ustar 00 a = 'null'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-control-3.toml 0000644 0000000 0000000 00000000014 14643451625 023405 0 ustar 00 a = 'null'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-control-4.toml 0000644 0000000 0000000 00000000014 14643451625 023406 0 ustar 00 a = 'null'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-multiline-control-1.toml 0000644 0000000 0000000 00000000020 14643451625 025400 0 ustar 00 a = '''null '''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-multiline-control-2.toml 0000644 0000000 0000000 00000000020 14643451625 025401 0 ustar 00 a = '''null'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-multiline-control-3.toml 0000644 0000000 0000000 00000000020 14643451625 025402 0 ustar 00 a = '''null'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-multiline-control-4.toml 0000644 0000000 0000000 00000000020 14643451625 025403 0 ustar 00 a = '''null'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/string-literal-multiline-quotes.toml 0000644 0000000 0000000 00000000110 14643451625 025102 0 ustar 00 apos15 = '''Here are fifteen apostrophes: '''''''''''''''''' # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-1.toml 0000644 0000000 0000000 00000000103 14643451625 020053 0 ustar 00 # DO NOT DO THIS
[fruit]
apple = "red"
[fruit]
orange = "orange"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-2.toml 0000644 0000000 0000000 00000000121 14643451625 020054 0 ustar 00 # DO NOT DO THIS EITHER
[fruit]
apple = "red"
[fruit.apple]
texture = "smooth"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-3.toml 0000644 0000000 0000000 00000000117 14643451625 020062 0 ustar 00 [fruit]
apple.color = "red"
apple.taste.sweet = true
[fruit.apple] # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-4.toml 0000644 0000000 0000000 00000000125 14643451625 020062 0 ustar 00 [fruit]
apple.color = "red"
apple.taste.sweet = true
[fruit.apple.taste] # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-invalid-1.toml 0000644 0000000 0000000 00000000362 14643451625 021506 0 ustar 00 [fruit.physical] # subtable, but to which parent element should it belong?
color = "red"
shape = "round"
[[fruit]] # parser must throw an error upon discovering that "fruit" is
# an array rather than a table
name = "apple" ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-invalid-2.toml 0000644 0000000 0000000 00000000067 14643451625 021511 0 ustar 00 # INVALID TOML DOC
fruit = []
[[fruit]] # Not allowed
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-invalid-3.toml 0000644 0000000 0000000 00000000411 14643451625 021503 0 ustar 00 # INVALID TOML DOC
[[fruit]]
name = "apple"
[[fruit.variety]]
name = "red delicious"
# INVALID: This table conflicts with the previous array of tables
[fruit.variety]
name = "granny smith"
[fruit.physical]
color = "red"
shape = "round"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/errors/table-invalid-4.toml 0000644 0000000 0000000 00000000406 14643451625 021510 0 ustar 00 # INVALID TOML DOC
[[fruit]]
name = "apple"
[[fruit.variety]]
name = "red delicious"
[fruit.physical]
color = "red"
shape = "round"
# INVALID: This array of tables conflicts with the previous table
[[fruit.physical]]
color = "green"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-array-inline-1000.toml 0000644 0000000 0000000 00000031332 14643451625 022170 0 ustar 00 key = [
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"abcdefg",
"end"]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-array-inline-1000.yaml 0000644 0000000 0000000 00000027356 14643451625 022172 0 ustar 00 key:
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- abcdefg
- end
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-array-inline-nested-1000.toml 0000644 0000000 0000000 00000003732 14643451625 023453 0 ustar 00 key = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-array-inline-nested-1000.yaml 0000644 0000000 0000000 00000003733 14643451625 023443 0 ustar 00 key:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - []
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-key-literal-40kb.toml 0000644 0000000 0000000 00000116117 14643451625 022205 0 ustar 00 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' = 'long'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-key-literal-40kb.yaml 0000644 0000000 0000000 00000116120 14643451625 022166 0 ustar 00 ? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.'
: long
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-key-string-40kb.toml 0000644 0000000 0000000 00000116117 14643451625 022057 0 ustar 00 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in." = "long"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-key-string-40kb.yaml 0000644 0000000 0000000 00000116120 14643451625 022040 0 ustar 00 ? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.'
: long
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-literal-40kb.toml 0000644 0000000 0000000 00000116115 14643451625 022660 0 ustar 00 long = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-literal-40kb.yaml 0000644 0000000 0000000 00000120162 14643451625 022644 0 ustar 00 long: >-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla
facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed
velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et.
Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper
feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet
consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus.
Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu
ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue
quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl
pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices
eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus
cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in
cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer
malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget
egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis
parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla
facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec
tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo
integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus
urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id
cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam
ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit
cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas
egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.
Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus
egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper
a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu
non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis
eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci.
Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique
senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt.
Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus
in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur
adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi
tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl.
Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu
feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi
tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit
amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam.
Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis
aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet
lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit
aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim
cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras
semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia
quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie
nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio
facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque
felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus
pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam
pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut
aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra
ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis
vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit
aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et
netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus
elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare
arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in
pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique
senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere
morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique
senectus et netus et. Dictum non consectetur a erat nam at lectus urna.
Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in
metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh
mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget.
Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis
lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio
euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies.
Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna
molestie at elementum eu facilisis sed. In fermentum posuere urna nec
tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate
dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit
amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie
nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis
convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis
vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed
arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor.
Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices
dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi
tincidunt ornare massa eget egestas purus. Ac felis donec et odio
pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed
turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor
id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec
ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet
consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum
pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse
faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet
consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus
turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus
nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus
vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet
porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem
fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At
ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam
dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non.
Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet
sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem
nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in.
Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi
proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus
imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis
cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra
massa massa. Dolor purus non enim praesent elementum facilisis leo vel.
Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor
consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non.
Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget
egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus
venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus
viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor
lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum.
Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed
euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim
neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi
blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae
nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla
phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas
erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis
aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst
vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod
nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget
lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea
dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim.
Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum
quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum
lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at
ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed
tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci.
Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum
rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus
et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla
pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam
erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum
neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper
malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse
interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique
nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut
lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra
pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing.
Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare
massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet
cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At
erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices
gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam
ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar
elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida
quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt.
Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc
aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi
quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque
massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor
sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit
amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat
pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc
sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque
massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut.
Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla.
Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo
ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam
tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque
dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros
donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras
adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus
turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin
nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa.
Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis
feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci
sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar
elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque
sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque
ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat.
Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis
massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet
non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla
facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam
volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida
in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at
lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet
nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna
condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet
sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh
ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi
sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac
tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere
urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est
pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin.
Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate
eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec
adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum
nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies
lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis
mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec
ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed
turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam
vestibulum. Semper eget duis at tellus at urna condimentum mattis
pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin.
Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus
venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum
pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu
lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis
hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula
ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id.
Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus
non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius
vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula
ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et
odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla
pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam
quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis
eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis
tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus
scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum
tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus
egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae
proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc
id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh.
Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget
gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi
quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero
nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor
id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum
consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue
interdum velit euismod in pellentesque. Pharetra pharetra massa massa
ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida
neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper.
Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean.
Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh
ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris
pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio
facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum
sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis
egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet
aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis
urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat.
Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis
magna etiam tempor. In mollis nunc sed id semper risus in hendrerit.
Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus
in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet
dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque.
Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut
venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non
consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit
amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam.
Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id
consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec
dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet
facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel
risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu
consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat
mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna
molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus
accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero
nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum
curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium
vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar.
Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida
neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu
cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae
tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta
nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in
eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent
elementum facilisis leo vel fringilla est ullamcorper. Semper risus in
hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas
pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien
eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh
nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit
amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus
feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut
etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci
nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis
varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in
arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim
lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat
scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat
pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque
habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing
elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue
mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae
justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in
tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis.
Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet
porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem
donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat
velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse
platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus.
Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi
quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non
consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit
amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in
ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed
tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula
ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor
purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed
libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec
ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus
eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis
aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem
fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla
facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh
venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur
gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam
faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna
fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim
sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis
at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis
gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet
cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a
pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat
vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam
quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam
erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel
fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque
egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis
gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel
elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum.
Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie
a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam
id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae
justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh
mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat
ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam.
Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat
est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet.
Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus
aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a.
Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus
semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus
feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue
lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam
vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non
diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra
et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi
tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat.
Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum.
Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus
nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor
massa id neque aliquam vestibulum. Augue interdum velit euismod in
pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat.
Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam
quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent
tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit
amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu
mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus
accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est
pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor.
Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc
consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium
aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit
amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a
diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat
consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus.
Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed
risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa
ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit
libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna
fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus
quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit
amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra.
Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas
sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante
in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis
enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar
etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu.
Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius
quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla.
Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra
ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut.
Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras
pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum.
Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non
odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing
enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat
id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat
ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium
lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu
dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis
aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna
porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum
leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis
nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt.
Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam.
Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna
fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut
aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam.
Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices
eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel
turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet
est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus.
Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis
dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed
cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas
sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed
ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem
donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque
eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis
rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor
eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis
auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi
scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque
nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus
feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus
pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien
faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus
ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis
tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet
enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et
malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas
maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in
dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique
sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar
pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet
tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae
congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris
cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut
placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus
turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere
sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc
pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt.
Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et
malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id
donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc
eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa
tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris
augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet
risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer
malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam
quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae.
Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere
urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus
molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus
vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus
eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum
suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare
arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis.
Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare
arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique
senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis
aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque
felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet
massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet
mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor
aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra
justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus.
Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus
sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere
sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi
scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum
tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue
eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque
massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque
in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper
velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget.
Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies
tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim
diam quis enim lobortis scelerisque. Adipiscing elit duis tristique
sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac
tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem
viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi
non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus
dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi
enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus
in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam
lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla
aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam
libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper
velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur
vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a
arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque
dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra.
Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec
tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis
nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis
imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque
dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque
non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris
rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui
faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et
netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus
nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim
lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus
imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur
lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus
et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi
ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui
vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur
ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque.
Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed
pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque
in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus
feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse
platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa
ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer.
Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis
auctor elit sed. In est ante in nibh mauris cursus mattis molestie.
Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est
placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a
condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit
amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla
posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna
neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet
eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim
neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida
in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra
aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam
pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus
risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at
quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa
enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque.
Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum
fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat
scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio
aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices.
Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing
elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus
molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare
suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo.
Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam
maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo
nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida.
Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis
risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis
pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet.
Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst
quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi
etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel
pretium lectus quam id leo in.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.toml 0000644 0000000 0000000 00000116121 14643451625 024655 0 ustar 00 long = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra.
Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.
Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim.
Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor.
Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed.
Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna.
Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed.
In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id.
At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed.
Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel.
Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc.
Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci.
Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet.
In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus.
Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id.
Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse.
Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet.
Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet.
Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna.
Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit.
Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id.
Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris.
Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum.
Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel.
Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam.
Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus.
Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia.
Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis.
Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim.
Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis.
Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras.
Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa.
Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus.
Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in.
Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa.
Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor.
Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices.
Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi.
Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci.
Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in.
Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis.
Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor.
In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at.
Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit.
Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris.
Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet.
Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at.
Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus.
Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi.
Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in."""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.yaml 0000644 0000000 0000000 00000120303 14643451625 024641 0 ustar 00 long: >-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla
facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed
velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et.
Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper
feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet
consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus.
Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu
ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue
quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl
pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices
eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus
cras adipiscing enim eu turpis egestas pretium aenean pharetra.
Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo
integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa
eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis
dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam
nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec
tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo
integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus
urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id
cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam
ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit
cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas
egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.
Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus
egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper
a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu
non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis
eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci.
Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique
senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt.
Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus
in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur
adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi
tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl.
Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu
feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi
tincidunt. Ultrices dui sapien eget mi proin sed libero enim.
Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper
viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec
sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id
aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis
eget velit aliquet sagittis id consectetur purus. Pellentesque elit
ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet
venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae
tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a
lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci
sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae.
Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus
rutrum tellus pellentesque eu tincidunt tortor.
Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor
sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet
purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu
bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla
aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in
dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et
molestie ac feugiat sed.
Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh.
Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in
pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique
senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere
morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique
senectus et netus et. Dictum non consectetur a erat nam at lectus urna.
Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in
metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh
mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget.
Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis
lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio
euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies.
Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna
molestie at elementum eu facilisis sed.
In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi
blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh
mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu
lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut
pharetra sit amet aliquam. Convallis convallis tellus id interdum velit
laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet
porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor
pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum
pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio
facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa
eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium
lectus quam id leo in. Ultricies lacus sed turpis tincidunt id.
At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra
diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus
euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing
elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non.
Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet
lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur
adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi
bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt
eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu.
Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor
morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi
tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus
imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam
quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas
erat imperdiet sed.
Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at
augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor
at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus
euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam
maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit
eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed
tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent
elementum facilisis leo vel.
Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor
consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non.
Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget
egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus
venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus
viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor
lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum.
Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed
euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim
neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi
blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae
nunc.
Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla
phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas
erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis
aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst
vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod
nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget
lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea
dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim.
Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum
quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum
lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at
ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed
tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci.
Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum
rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus
et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla
pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam
erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum
neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper
malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse
interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique
nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut
lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra
pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing.
Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare
massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet
cursus sit amet.
In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque
adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce.
Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci
a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu
odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis
cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis
egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim
facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at
tellus at urna condimentum mattis. Euismod in pellentesque massa placerat.
Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum
nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed
lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing
commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus.
Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna
etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut
placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo
odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non
pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis
elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus
sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum
pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis.
Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum.
Lectus proin nibh nisl condimentum id.
Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra
massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras
tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam
viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus
pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed.
Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et
ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim
blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis
nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id
volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat.
Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio
pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse.
Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium
nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas
integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu
ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id.
In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet
tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio
facilisis mauris sit amet.
Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac
tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere
urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est
pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin.
Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate
eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec
adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum
nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies
lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis
mauris sit amet.
Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit.
Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id.
Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget
duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent
semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla
pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna.
Quam quisque id diam vel quam elementum pulvinar. At tempor commodo
ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices
gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna.
Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin.
Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar
proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend
mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio
ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc
consequat interdum varius. Donec et odio pellentesque diam volutpat commodo.
Id ornare arcu odio ut sem nulla pharetra diam sit.
Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis
vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam.
Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique
sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus
scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum
tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus
egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae
proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc
id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh.
Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget
gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi
quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero
nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor
id.
Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum
consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue
interdum velit euismod in pellentesque. Pharetra pharetra massa massa
ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida
neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper.
Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean.
Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh
ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris
pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio
facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum
sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis
egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet
aliquam id diam maecenas ultricies mi eget mauris.
Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat
pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non
nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper
risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam.
Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet
cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien
pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat
diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum
non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam
sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam.
Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id
consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec
dui nunc mattis enim ut tellus elementum.
Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci
ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus.
Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla.
Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis
posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet
porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper
malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing
tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales
ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa
tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet
mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae.
Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum.
Mauris sit amet massa vitae tortor condimentum lacinia quis vel.
Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id
semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie
nunc non blandit massa enim. Enim praesent elementum facilisis leo vel
fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque
non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere
sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero.
In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id
venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget.
Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus
dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus
aliquam.
Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue
ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas
congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh
tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in.
In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie
a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar
pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur
adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor
augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer
vitae justo eget. Sed egestas egestas fringilla phasellus.
Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus
gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis
vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius
duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in
metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis
cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi
vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa
massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id
ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio
facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod
lacinia.
Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis.
Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi
nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris.
Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit.
Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum
faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit
amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis
hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque
viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum
dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper
dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus
urna duis.
Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc
lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus
venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt
id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse
potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet
bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor
urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim.
Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra
magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi
etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat
blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non
pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque
egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet
bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue
mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique
et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis
vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo
laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris
pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed.
Suspendisse in est ante in nibh mauris cursus mattis.
Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae.
Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh
tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui.
Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu
turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi
in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis
enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at
tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus
orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor
aliquam nulla facilisi cras.
Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna
fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi
quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in
massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus
vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus
suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit
massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et
egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue
interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing
tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum
velit. Vitae et leo duis ut diam quam nulla porttitor massa.
Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin
aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis
varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat
sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac.
Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra
suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo
vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis
vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum
lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi
vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci
sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui
nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus.
Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare
quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget.
Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem
integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis.
Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper
feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui
faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras
fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate
dignissim suspendisse in est ante in.
Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut
tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non
quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at
in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque
id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis
tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet
bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor
pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis
nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros
in cursus turpis massa.
Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in
iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum
varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis
eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium
nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue
interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum
ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus
venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi
ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend
quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in
cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio
aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea
dictumst quisque. Magna fringilla urna porttitor rhoncus dolor.
Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget
magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac
placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam
in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis
volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam
adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent.
Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur
ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus.
Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper
viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus
viverra accumsan in nisl nisi scelerisque eu ultrices.
Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna
neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor
morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed
vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices.
Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor
purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo
donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate
dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac
feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique
nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis
ullamcorper velit sed ullamcorper morbi.
Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies
tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu
volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac
turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit
scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus.
Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque
pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit
amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra
vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh
mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum
fusce ut placerat orci.
Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id
cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra
adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec
feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris
pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis
risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque
habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed
viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar
sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in.
Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor
pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus
commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada
bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris
ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna
etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu
odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla
pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra
mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse
ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui
vivamus arcu felis. Egestas diam in arcu cursus euismod quis.
Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare
arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique
senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis
aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque
felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet
massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet
mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor
aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra
justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus.
Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus
sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere
sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi
scelerisque eu ultrices vitae auctor.
In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit
amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue
interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra
aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed
lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a
pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque
varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor
at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque.
Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque
habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at.
Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at
imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna
porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat
scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis
aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend.
Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus
ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut
consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc
sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est.
Vitae elementum curabitur vitae nunc sed velit.
Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec
feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit
amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas
diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper
feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus
urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel.
Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis
massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris
augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris.
Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi
tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo.
Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare
suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in
ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget.
Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi
tristique senectus et netus et. A iaculis at erat pellentesque adipiscing
commodo elit at imperdiet.
Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui
vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur
ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque.
Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed
pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque
in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus
feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse
platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa
ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer.
Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis
auctor elit sed. In est ante in nibh mauris cursus mattis molestie.
Scelerisque in dictum non consectetur a erat nam at.
Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl
condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum
integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus
aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus
in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget.
Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas
congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue
mauris augue neque gravida in fermentum. Velit aliquet sagittis id
consectetur. Enim ut sem viverra aliquet eget sit amet tellus.
Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim
nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet
nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at
consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum
consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas
quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla
pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero
volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas
quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum.
Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit.
Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec.
Tortor vitae purus faucibus ornare suspendisse sed nisi.
Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel
fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis
tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id
volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus
sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim
blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id.
Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium.
Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla
est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et
leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-string-40kb.toml 0000644 0000000 0000000 00000116115 14643451625 022532 0 ustar 00 long = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-string-40kb.yaml 0000644 0000000 0000000 00000120162 14643451625 022516 0 ustar 00 long: >-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla
facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed
velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et.
Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper
feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet
consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus.
Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu
ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue
quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl
pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices
eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus
cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in
cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer
malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget
egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis
parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla
facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec
tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo
integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus
urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id
cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam
ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit
cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas
egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.
Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus
egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper
a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu
non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis
eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci.
Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique
senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt.
Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus
in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur
adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi
tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl.
Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu
feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi
tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit
amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam.
Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis
aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet
lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit
aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim
cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras
semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia
quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie
nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio
facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque
felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus
pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam
pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut
aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra
ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis
vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit
aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et
netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus
elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare
arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in
pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique
senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere
morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique
senectus et netus et. Dictum non consectetur a erat nam at lectus urna.
Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in
metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh
mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget.
Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis
lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio
euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies.
Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna
molestie at elementum eu facilisis sed. In fermentum posuere urna nec
tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate
dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit
amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie
nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis
convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis
vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed
arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor.
Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices
dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi
tincidunt ornare massa eget egestas purus. Ac felis donec et odio
pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed
turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor
id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec
ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet
consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum
pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse
faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet
consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus
turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus
nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus
vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet
porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem
fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At
ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam
dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non.
Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet
sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem
nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in.
Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi
proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus
imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis
cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra
massa massa. Dolor purus non enim praesent elementum facilisis leo vel.
Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor
consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non.
Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget
egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus
venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus
viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor
lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum.
Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed
euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim
neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi
blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae
nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla
phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas
erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis
aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst
vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod
nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget
lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea
dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim.
Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum
quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum
lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at
ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed
tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci.
Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum
rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus
et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla
pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam
erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum
neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper
malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse
interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique
nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut
lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra
pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing.
Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare
massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet
cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At
erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices
gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam
ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar
elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida
quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt.
Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc
aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi
quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque
massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor
sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit
amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat
pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc
sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque
massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut.
Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla.
Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo
ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam
tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque
dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros
donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras
adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus
turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin
nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa.
Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis
feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci
sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar
elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque
sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque
ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat.
Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis
massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet
non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla
facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam
volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida
in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at
lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet
nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna
condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet
sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh
ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi
sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac
tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere
urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est
pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin.
Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate
eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec
adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum
nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies
lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis
mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec
ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed
turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam
vestibulum. Semper eget duis at tellus at urna condimentum mattis
pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin.
Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus
venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum
pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu
lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis
hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula
ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id.
Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus
non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius
vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula
ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et
odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla
pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam
quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis
eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis
tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus
scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum
tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus
egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae
proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc
id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh.
Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget
gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi
quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero
nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor
id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum
consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue
interdum velit euismod in pellentesque. Pharetra pharetra massa massa
ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida
neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper.
Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean.
Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh
ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris
pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio
facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum
sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis
egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet
aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis
urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat.
Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis
magna etiam tempor. In mollis nunc sed id semper risus in hendrerit.
Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus
in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet
dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque.
Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut
venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non
consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit
amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam.
Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id
consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec
dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet
facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel
risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu
consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat
mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna
molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus
accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero
nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum
curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium
vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar.
Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida
neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu
cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae
tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta
nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in
eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent
elementum facilisis leo vel fringilla est ullamcorper. Semper risus in
hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas
pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien
eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh
nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit
amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus
feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut
etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci
nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis
varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in
arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim
lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat
scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat
pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque
habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing
elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue
mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae
justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in
tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis.
Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet
porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem
donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat
velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse
platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus.
Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi
quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non
consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit
amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in
ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed
tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula
ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor
purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed
libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec
ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus
eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis
aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem
fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla
facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh
venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur
gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam
faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna
fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim
sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis
at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis
gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet
cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a
pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat
vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam
quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam
erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel
fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque
egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis
gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel
elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum.
Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie
a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam
id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae
justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh
mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat
ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam.
Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat
est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet.
Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus
aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a.
Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus
semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus
feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue
lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam
vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non
diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra
et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi
tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat.
Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum.
Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus
nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor
massa id neque aliquam vestibulum. Augue interdum velit euismod in
pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat.
Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam
quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent
tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit
amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu
mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus
accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est
pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor.
Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc
consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium
aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit
amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a
diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat
consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus.
Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed
risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa
ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit
libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna
fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus
quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit
amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra.
Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas
sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante
in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis
enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar
etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu.
Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius
quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla.
Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra
ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut.
Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras
pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum.
Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non
odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing
enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat
id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat
ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium
lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu
dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis
aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna
porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum
leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis
nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt.
Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam.
Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna
fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut
aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam.
Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices
eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel
turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet
est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus.
Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis
dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed
cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas
sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed
ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem
donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque
eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis
rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor
eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis
auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi
scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque
nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus
feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus
pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien
faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus
ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis
tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet
enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et
malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas
maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in
dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique
sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar
pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet
tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae
congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris
cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut
placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus
turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere
sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc
pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt.
Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et
malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id
donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc
eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa
tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris
augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet
risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer
malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam
quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae.
Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere
urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus
molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus
vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus
eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum
suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare
arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis.
Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare
arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique
senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis
aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque
felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet
massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet
mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor
aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra
justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus.
Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus
sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere
sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi
scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum
tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue
eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque
massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque
in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper
velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget.
Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies
tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim
diam quis enim lobortis scelerisque. Adipiscing elit duis tristique
sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac
tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem
viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi
non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus
dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi
enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus
in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam
lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla
aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam
libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper
velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur
vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a
arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque
dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra.
Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec
tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis
nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis
imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque
dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque
non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris
rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui
faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et
netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus
nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim
lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus
imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur
lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus
et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi
ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui
vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur
ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque.
Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed
pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque
in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus
feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse
platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa
ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer.
Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis
auctor elit sed. In est ante in nibh mauris cursus mattis molestie.
Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est
placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a
condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit
amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla
posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna
neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet
eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim
neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida
in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra
aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam
pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus
risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at
quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa
enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque.
Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum
fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat
scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio
aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices.
Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing
elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus
molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare
suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo.
Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam
maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo
nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida.
Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis
risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis
pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet.
Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst
quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi
etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel
pretium lectus quam id leo in.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.toml 0000644 0000000 0000000 00000116121 14643451625 024527 0 ustar 00 long = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra.
Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.
Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim.
Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor.
Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed.
Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna.
Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed.
In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id.
At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed.
Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel.
Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc.
Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci.
Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet.
In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus.
Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id.
Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse.
Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet.
Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet.
Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna.
Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit.
Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id.
Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris.
Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum.
Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel.
Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam.
Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus.
Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia.
Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis.
Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim.
Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis.
Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras.
Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa.
Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus.
Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in.
Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa.
Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor.
Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices.
Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi.
Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci.
Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in.
Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis.
Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor.
In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at.
Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit.
Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris.
Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet.
Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at.
Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus.
Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi.
Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.yaml 0000644 0000000 0000000 00000120303 14643451625 024513 0 ustar 00 long: >-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla
facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed
velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et.
Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper
feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet
consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus.
Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu
ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue
quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl
pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices
eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus
cras adipiscing enim eu turpis egestas pretium aenean pharetra.
Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo
integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa
eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis
dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam
nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec
tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo
integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus
urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id
cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam
ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit
cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas
egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.
Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus
egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper
a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu
non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis
eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci.
Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique
senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt.
Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus
in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur
adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi
tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl.
Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu
feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi
tincidunt. Ultrices dui sapien eget mi proin sed libero enim.
Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper
viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec
sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id
aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis
eget velit aliquet sagittis id consectetur purus. Pellentesque elit
ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet
venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae
tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a
lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci
sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae.
Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus
rutrum tellus pellentesque eu tincidunt tortor.
Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor
sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet
purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu
bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla
aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in
dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et
molestie ac feugiat sed.
Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh.
Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in
pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique
senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere
morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique
senectus et netus et. Dictum non consectetur a erat nam at lectus urna.
Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in
metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh
mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget.
Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis
lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio
euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies.
Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna
molestie at elementum eu facilisis sed.
In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi
blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh
mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu
lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut
pharetra sit amet aliquam. Convallis convallis tellus id interdum velit
laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet
porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor
pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum
pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio
facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa
eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium
lectus quam id leo in. Ultricies lacus sed turpis tincidunt id.
At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra
diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus
euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing
elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non.
Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet
lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur
adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi
bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt
eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu.
Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor
morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi
tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus
imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam
quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas
erat imperdiet sed.
Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at
augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor
at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus
euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam
maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit
eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed
tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent
elementum facilisis leo vel.
Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor
consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non.
Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget
egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus
interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus
venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus
viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor
lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum.
Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed
euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim
neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi
blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae
nunc.
Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla
phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas
erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis
aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst
vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod
nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget
lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea
dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim.
Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum
quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum
lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at
ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed
tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci.
Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum
rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus
et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla
pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam
erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum
neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper
malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse
interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique
nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut
lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra
pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing.
Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare
massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet
cursus sit amet.
In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque
adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce.
Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci
a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu
odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis
cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis
egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim
facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at
tellus at urna condimentum mattis. Euismod in pellentesque massa placerat.
Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum
nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed
lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing
commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus.
Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna
etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut
placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo
odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non
pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis
elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus
sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum
pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis.
Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum.
Lectus proin nibh nisl condimentum id.
Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra
massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras
tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam
viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus
pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed.
Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et
ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim
blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis
nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id
volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat.
Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio
pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse.
Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium
nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas
integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu
ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id.
In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet
tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio
facilisis mauris sit amet.
Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac
tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere
urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est
pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin.
Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate
eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec
adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum
nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies
lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis
mauris sit amet.
Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit.
Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id.
Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget
duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent
semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla
pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna.
Quam quisque id diam vel quam elementum pulvinar. At tempor commodo
ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices
gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna.
Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin.
Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar
proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend
mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio
ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc
consequat interdum varius. Donec et odio pellentesque diam volutpat commodo.
Id ornare arcu odio ut sem nulla pharetra diam sit.
Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis
vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam.
Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique
sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus
scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum
tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus
egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae
proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc
id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh.
Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget
gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi
quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero
nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor
id.
Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum
consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue
interdum velit euismod in pellentesque. Pharetra pharetra massa massa
ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida
neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper.
Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean.
Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh
ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris
pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio
facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum
sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis
egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet
aliquam id diam maecenas ultricies mi eget mauris.
Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat
pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non
nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper
risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam.
Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet
cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien
pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat
diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum
non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam
sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam.
Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id
consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec
dui nunc mattis enim ut tellus elementum.
Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci
ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus.
Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla.
Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis
posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet
porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper
malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing
tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales
ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa
tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet
mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae.
Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum.
Mauris sit amet massa vitae tortor condimentum lacinia quis vel.
Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id
semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie
nunc non blandit massa enim. Enim praesent elementum facilisis leo vel
fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque
non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere
sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero.
In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id
venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget.
Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus
dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus
aliquam.
Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue
ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas
congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh
tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in.
In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie
a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar
pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur
adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor
augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer
vitae justo eget. Sed egestas egestas fringilla phasellus.
Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus
gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis
vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius
duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in
metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis
cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi
vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa
massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id
ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio
facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod
lacinia.
Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis.
Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi
nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris.
Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit.
Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum
faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit
amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis
hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque
viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum
dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper
dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus
urna duis.
Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc
lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus
venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt
id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse
potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet
bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor
urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim.
Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra
magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi
etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat
blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non
pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque
egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet
bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue
mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique
et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis
vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo
laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris
pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed.
Suspendisse in est ante in nibh mauris cursus mattis.
Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae.
Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh
tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui.
Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu
turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi
in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis
enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at
tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus
orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor
aliquam nulla facilisi cras.
Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna
fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi
quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in
massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus
vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus
suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit
massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et
egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue
interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing
tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum
velit. Vitae et leo duis ut diam quam nulla porttitor massa.
Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin
aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis
varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat
sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac.
Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra
suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo
vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis
vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum
lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi
vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci
sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui
nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus.
Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare
quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget.
Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem
integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis.
Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper
feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui
faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras
fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate
dignissim suspendisse in est ante in.
Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut
tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non
quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at
in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque
id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis
tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet
bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor
pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis
nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros
in cursus turpis massa.
Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in
iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum
varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis
eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium
nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue
interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum
ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus
venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi
ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend
quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in
cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio
aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea
dictumst quisque. Magna fringilla urna porttitor rhoncus dolor.
Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget
magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac
placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam
in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis
volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam
adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent.
Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur
ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus.
Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper
viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus
viverra accumsan in nisl nisi scelerisque eu ultrices.
Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna
neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor
morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed
vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices.
Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor
purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo
donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate
dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac
feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique
nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis
ullamcorper velit sed ullamcorper morbi.
Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies
tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu
volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac
turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit
scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus.
Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque
pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit
amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra
vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh
mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum
fusce ut placerat orci.
Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id
cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra
adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec
feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris
pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis
risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque
habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed
viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar
sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in.
Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor
pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus
commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada
bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris
ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna
etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu
odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla
pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra
mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse
ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui
vivamus arcu felis. Egestas diam in arcu cursus euismod quis.
Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare
arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique
senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis
aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque
felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet
massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet
mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor
aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra
justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus.
Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus
sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus
vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere
sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi
scelerisque eu ultrices vitae auctor.
In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit
amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue
interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra
aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed
lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a
pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque
varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor
at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque.
Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque
habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at.
Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at
imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna
porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat
scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis
aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend.
Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus
ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut
consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc
sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est.
Vitae elementum curabitur vitae nunc sed velit.
Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec
feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit
amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas
diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper
feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus
urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel.
Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis
massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris
augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris.
Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi
tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo.
Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare
suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in
ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget.
Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi
tristique senectus et netus et. A iaculis at erat pellentesque adipiscing
commodo elit at imperdiet.
Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui
vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur
ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque.
Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed
pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque
in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus
feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse
platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa
ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer.
Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis
auctor elit sed. In est ante in nibh mauris cursus mattis molestie.
Scelerisque in dictum non consectetur a erat nam at.
Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl
condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum
integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus
aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus
in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget.
Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas
congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue
mauris augue neque gravida in fermentum. Velit aliquet sagittis id
consectetur. Enim ut sem viverra aliquet eget sit amet tellus.
Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim
nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet
nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at
consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum
consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas
quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla
pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero
volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas
quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum.
Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit.
Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec.
Tortor vitae purus faucibus ornare suspendisse sed nisi.
Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel
fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis
tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id
volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus
sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim
blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id.
Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium.
Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla
est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et
leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-table-inline-1000.toml 0000644 0000000 0000000 00000046711 14643451625 022150 0 ustar 00 key = { key1 = "abcdefg", key2 = "abcdefg", key3 = "abcdefg", key4 = "abcdefg", key5 = "abcdefg", key6 = "abcdefg", key7 = "abcdefg", key8 = "abcdefg", key9 = "abcdefg", key10 = "abcdefg", key11 = "abcdefg", key12 = "abcdefg", key13 = "abcdefg", key14 = "abcdefg", key15 = "abcdefg", key16 = "abcdefg", key17 = "abcdefg", key18 = "abcdefg", key19 = "abcdefg", key20 = "abcdefg", key21 = "abcdefg", key22 = "abcdefg", key23 = "abcdefg", key24 = "abcdefg", key25 = "abcdefg", key26 = "abcdefg", key27 = "abcdefg", key28 = "abcdefg", key29 = "abcdefg", key30 = "abcdefg", key31 = "abcdefg", key32 = "abcdefg", key33 = "abcdefg", key34 = "abcdefg", key35 = "abcdefg", key36 = "abcdefg", key37 = "abcdefg", key38 = "abcdefg", key39 = "abcdefg", key40 = "abcdefg", key41 = "abcdefg", key42 = "abcdefg", key43 = "abcdefg", key44 = "abcdefg", key45 = "abcdefg", key46 = "abcdefg", key47 = "abcdefg", key48 = "abcdefg", key49 = "abcdefg", key50 = "abcdefg", key51 = "abcdefg", key52 = "abcdefg", key53 = "abcdefg", key54 = "abcdefg", key55 = "abcdefg", key56 = "abcdefg", key57 = "abcdefg", key58 = "abcdefg", key59 = "abcdefg", key60 = "abcdefg", key61 = "abcdefg", key62 = "abcdefg", key63 = "abcdefg", key64 = "abcdefg", key65 = "abcdefg", key66 = "abcdefg", key67 = "abcdefg", key68 = "abcdefg", key69 = "abcdefg", key70 = "abcdefg", key71 = "abcdefg", key72 = "abcdefg", key73 = "abcdefg", key74 = "abcdefg", key75 = "abcdefg", key76 = "abcdefg", key77 = "abcdefg", key78 = "abcdefg", key79 = "abcdefg", key80 = "abcdefg", key81 = "abcdefg", key82 = "abcdefg", key83 = "abcdefg", key84 = "abcdefg", key85 = "abcdefg", key86 = "abcdefg", key87 = "abcdefg", key88 = "abcdefg", key89 = "abcdefg", key90 = "abcdefg", key91 = "abcdefg", key92 = "abcdefg", key93 = "abcdefg", key94 = "abcdefg", key95 = "abcdefg", key96 = "abcdefg", key97 = "abcdefg", key98 = "abcdefg", key99 = "abcdefg", key100 = "abcdefg", key101 = "abcdefg", key102 = "abcdefg", key103 = "abcdefg", key104 = "abcdefg", key105 = "abcdefg", key106 = "abcdefg", key107 = "abcdefg", key108 = "abcdefg", key109 = "abcdefg", key110 = "abcdefg", key111 = "abcdefg", key112 = "abcdefg", key113 = "abcdefg", key114 = "abcdefg", key115 = "abcdefg", key116 = "abcdefg", key117 = "abcdefg", key118 = "abcdefg", key119 = "abcdefg", key120 = "abcdefg", key121 = "abcdefg", key122 = "abcdefg", key123 = "abcdefg", key124 = "abcdefg", key125 = "abcdefg", key126 = "abcdefg", key127 = "abcdefg", key128 = "abcdefg", key129 = "abcdefg", key130 = "abcdefg", key131 = "abcdefg", key132 = "abcdefg", key133 = "abcdefg", key134 = "abcdefg", key135 = "abcdefg", key136 = "abcdefg", key137 = "abcdefg", key138 = "abcdefg", key139 = "abcdefg", key140 = "abcdefg", key141 = "abcdefg", key142 = "abcdefg", key143 = "abcdefg", key144 = "abcdefg", key145 = "abcdefg", key146 = "abcdefg", key147 = "abcdefg", key148 = "abcdefg", key149 = "abcdefg", key150 = "abcdefg", key151 = "abcdefg", key152 = "abcdefg", key153 = "abcdefg", key154 = "abcdefg", key155 = "abcdefg", key156 = "abcdefg", key157 = "abcdefg", key158 = "abcdefg", key159 = "abcdefg", key160 = "abcdefg", key161 = "abcdefg", key162 = "abcdefg", key163 = "abcdefg", key164 = "abcdefg", key165 = "abcdefg", key166 = "abcdefg", key167 = "abcdefg", key168 = "abcdefg", key169 = "abcdefg", key170 = "abcdefg", key171 = "abcdefg", key172 = "abcdefg", key173 = "abcdefg", key174 = "abcdefg", key175 = "abcdefg", key176 = "abcdefg", key177 = "abcdefg", key178 = "abcdefg", key179 = "abcdefg", key180 = "abcdefg", key181 = "abcdefg", key182 = "abcdefg", key183 = "abcdefg", key184 = "abcdefg", key185 = "abcdefg", key186 = "abcdefg", key187 = "abcdefg", key188 = "abcdefg", key189 = "abcdefg", key190 = "abcdefg", key191 = "abcdefg", key192 = "abcdefg", key193 = "abcdefg", key194 = "abcdefg", key195 = "abcdefg", key196 = "abcdefg", key197 = "abcdefg", key198 = "abcdefg", key199 = "abcdefg", key200 = "abcdefg", key201 = "abcdefg", key202 = "abcdefg", key203 = "abcdefg", key204 = "abcdefg", key205 = "abcdefg", key206 = "abcdefg", key207 = "abcdefg", key208 = "abcdefg", key209 = "abcdefg", key210 = "abcdefg", key211 = "abcdefg", key212 = "abcdefg", key213 = "abcdefg", key214 = "abcdefg", key215 = "abcdefg", key216 = "abcdefg", key217 = "abcdefg", key218 = "abcdefg", key219 = "abcdefg", key220 = "abcdefg", key221 = "abcdefg", key222 = "abcdefg", key223 = "abcdefg", key224 = "abcdefg", key225 = "abcdefg", key226 = "abcdefg", key227 = "abcdefg", key228 = "abcdefg", key229 = "abcdefg", key230 = "abcdefg", key231 = "abcdefg", key232 = "abcdefg", key233 = "abcdefg", key234 = "abcdefg", key235 = "abcdefg", key236 = "abcdefg", key237 = "abcdefg", key238 = "abcdefg", key239 = "abcdefg", key240 = "abcdefg", key241 = "abcdefg", key242 = "abcdefg", key243 = "abcdefg", key244 = "abcdefg", key245 = "abcdefg", key246 = "abcdefg", key247 = "abcdefg", key248 = "abcdefg", key249 = "abcdefg", key250 = "abcdefg", key251 = "abcdefg", key252 = "abcdefg", key253 = "abcdefg", key254 = "abcdefg", key255 = "abcdefg", key256 = "abcdefg", key257 = "abcdefg", key258 = "abcdefg", key259 = "abcdefg", key260 = "abcdefg", key261 = "abcdefg", key262 = "abcdefg", key263 = "abcdefg", key264 = "abcdefg", key265 = "abcdefg", key266 = "abcdefg", key267 = "abcdefg", key268 = "abcdefg", key269 = "abcdefg", key270 = "abcdefg", key271 = "abcdefg", key272 = "abcdefg", key273 = "abcdefg", key274 = "abcdefg", key275 = "abcdefg", key276 = "abcdefg", key277 = "abcdefg", key278 = "abcdefg", key279 = "abcdefg", key280 = "abcdefg", key281 = "abcdefg", key282 = "abcdefg", key283 = "abcdefg", key284 = "abcdefg", key285 = "abcdefg", key286 = "abcdefg", key287 = "abcdefg", key288 = "abcdefg", key289 = "abcdefg", key290 = "abcdefg", key291 = "abcdefg", key292 = "abcdefg", key293 = "abcdefg", key294 = "abcdefg", key295 = "abcdefg", key296 = "abcdefg", key297 = "abcdefg", key298 = "abcdefg", key299 = "abcdefg", key300 = "abcdefg", key301 = "abcdefg", key302 = "abcdefg", key303 = "abcdefg", key304 = "abcdefg", key305 = "abcdefg", key306 = "abcdefg", key307 = "abcdefg", key308 = "abcdefg", key309 = "abcdefg", key310 = "abcdefg", key311 = "abcdefg", key312 = "abcdefg", key313 = "abcdefg", key314 = "abcdefg", key315 = "abcdefg", key316 = "abcdefg", key317 = "abcdefg", key318 = "abcdefg", key319 = "abcdefg", key320 = "abcdefg", key321 = "abcdefg", key322 = "abcdefg", key323 = "abcdefg", key324 = "abcdefg", key325 = "abcdefg", key326 = "abcdefg", key327 = "abcdefg", key328 = "abcdefg", key329 = "abcdefg", key330 = "abcdefg", key331 = "abcdefg", key332 = "abcdefg", key333 = "abcdefg", key334 = "abcdefg", key335 = "abcdefg", key336 = "abcdefg", key337 = "abcdefg", key338 = "abcdefg", key339 = "abcdefg", key340 = "abcdefg", key341 = "abcdefg", key342 = "abcdefg", key343 = "abcdefg", key344 = "abcdefg", key345 = "abcdefg", key346 = "abcdefg", key347 = "abcdefg", key348 = "abcdefg", key349 = "abcdefg", key350 = "abcdefg", key351 = "abcdefg", key352 = "abcdefg", key353 = "abcdefg", key354 = "abcdefg", key355 = "abcdefg", key356 = "abcdefg", key357 = "abcdefg", key358 = "abcdefg", key359 = "abcdefg", key360 = "abcdefg", key361 = "abcdefg", key362 = "abcdefg", key363 = "abcdefg", key364 = "abcdefg", key365 = "abcdefg", key366 = "abcdefg", key367 = "abcdefg", key368 = "abcdefg", key369 = "abcdefg", key370 = "abcdefg", key371 = "abcdefg", key372 = "abcdefg", key373 = "abcdefg", key374 = "abcdefg", key375 = "abcdefg", key376 = "abcdefg", key377 = "abcdefg", key378 = "abcdefg", key379 = "abcdefg", key380 = "abcdefg", key381 = "abcdefg", key382 = "abcdefg", key383 = "abcdefg", key384 = "abcdefg", key385 = "abcdefg", key386 = "abcdefg", key387 = "abcdefg", key388 = "abcdefg", key389 = "abcdefg", key390 = "abcdefg", key391 = "abcdefg", key392 = "abcdefg", key393 = "abcdefg", key394 = "abcdefg", key395 = "abcdefg", key396 = "abcdefg", key397 = "abcdefg", key398 = "abcdefg", key399 = "abcdefg", key400 = "abcdefg", key401 = "abcdefg", key402 = "abcdefg", key403 = "abcdefg", key404 = "abcdefg", key405 = "abcdefg", key406 = "abcdefg", key407 = "abcdefg", key408 = "abcdefg", key409 = "abcdefg", key410 = "abcdefg", key411 = "abcdefg", key412 = "abcdefg", key413 = "abcdefg", key414 = "abcdefg", key415 = "abcdefg", key416 = "abcdefg", key417 = "abcdefg", key418 = "abcdefg", key419 = "abcdefg", key420 = "abcdefg", key421 = "abcdefg", key422 = "abcdefg", key423 = "abcdefg", key424 = "abcdefg", key425 = "abcdefg", key426 = "abcdefg", key427 = "abcdefg", key428 = "abcdefg", key429 = "abcdefg", key430 = "abcdefg", key431 = "abcdefg", key432 = "abcdefg", key433 = "abcdefg", key434 = "abcdefg", key435 = "abcdefg", key436 = "abcdefg", key437 = "abcdefg", key438 = "abcdefg", key439 = "abcdefg", key440 = "abcdefg", key441 = "abcdefg", key442 = "abcdefg", key443 = "abcdefg", key444 = "abcdefg", key445 = "abcdefg", key446 = "abcdefg", key447 = "abcdefg", key448 = "abcdefg", key449 = "abcdefg", key450 = "abcdefg", key451 = "abcdefg", key452 = "abcdefg", key453 = "abcdefg", key454 = "abcdefg", key455 = "abcdefg", key456 = "abcdefg", key457 = "abcdefg", key458 = "abcdefg", key459 = "abcdefg", key460 = "abcdefg", key461 = "abcdefg", key462 = "abcdefg", key463 = "abcdefg", key464 = "abcdefg", key465 = "abcdefg", key466 = "abcdefg", key467 = "abcdefg", key468 = "abcdefg", key469 = "abcdefg", key470 = "abcdefg", key471 = "abcdefg", key472 = "abcdefg", key473 = "abcdefg", key474 = "abcdefg", key475 = "abcdefg", key476 = "abcdefg", key477 = "abcdefg", key478 = "abcdefg", key479 = "abcdefg", key480 = "abcdefg", key481 = "abcdefg", key482 = "abcdefg", key483 = "abcdefg", key484 = "abcdefg", key485 = "abcdefg", key486 = "abcdefg", key487 = "abcdefg", key488 = "abcdefg", key489 = "abcdefg", key490 = "abcdefg", key491 = "abcdefg", key492 = "abcdefg", key493 = "abcdefg", key494 = "abcdefg", key495 = "abcdefg", key496 = "abcdefg", key497 = "abcdefg", key498 = "abcdefg", key499 = "abcdefg", key500 = "abcdefg", key501 = "abcdefg", key502 = "abcdefg", key503 = "abcdefg", key504 = "abcdefg", key505 = "abcdefg", key506 = "abcdefg", key507 = "abcdefg", key508 = "abcdefg", key509 = "abcdefg", key510 = "abcdefg", key511 = "abcdefg", key512 = "abcdefg", key513 = "abcdefg", key514 = "abcdefg", key515 = "abcdefg", key516 = "abcdefg", key517 = "abcdefg", key518 = "abcdefg", key519 = "abcdefg", key520 = "abcdefg", key521 = "abcdefg", key522 = "abcdefg", key523 = "abcdefg", key524 = "abcdefg", key525 = "abcdefg", key526 = "abcdefg", key527 = "abcdefg", key528 = "abcdefg", key529 = "abcdefg", key530 = "abcdefg", key531 = "abcdefg", key532 = "abcdefg", key533 = "abcdefg", key534 = "abcdefg", key535 = "abcdefg", key536 = "abcdefg", key537 = "abcdefg", key538 = "abcdefg", key539 = "abcdefg", key540 = "abcdefg", key541 = "abcdefg", key542 = "abcdefg", key543 = "abcdefg", key544 = "abcdefg", key545 = "abcdefg", key546 = "abcdefg", key547 = "abcdefg", key548 = "abcdefg", key549 = "abcdefg", key550 = "abcdefg", key551 = "abcdefg", key552 = "abcdefg", key553 = "abcdefg", key554 = "abcdefg", key555 = "abcdefg", key556 = "abcdefg", key557 = "abcdefg", key558 = "abcdefg", key559 = "abcdefg", key560 = "abcdefg", key561 = "abcdefg", key562 = "abcdefg", key563 = "abcdefg", key564 = "abcdefg", key565 = "abcdefg", key566 = "abcdefg", key567 = "abcdefg", key568 = "abcdefg", key569 = "abcdefg", key570 = "abcdefg", key571 = "abcdefg", key572 = "abcdefg", key573 = "abcdefg", key574 = "abcdefg", key575 = "abcdefg", key576 = "abcdefg", key577 = "abcdefg", key578 = "abcdefg", key579 = "abcdefg", key580 = "abcdefg", key581 = "abcdefg", key582 = "abcdefg", key583 = "abcdefg", key584 = "abcdefg", key585 = "abcdefg", key586 = "abcdefg", key587 = "abcdefg", key588 = "abcdefg", key589 = "abcdefg", key590 = "abcdefg", key591 = "abcdefg", key592 = "abcdefg", key593 = "abcdefg", key594 = "abcdefg", key595 = "abcdefg", key596 = "abcdefg", key597 = "abcdefg", key598 = "abcdefg", key599 = "abcdefg", key600 = "abcdefg", key601 = "abcdefg", key602 = "abcdefg", key603 = "abcdefg", key604 = "abcdefg", key605 = "abcdefg", key606 = "abcdefg", key607 = "abcdefg", key608 = "abcdefg", key609 = "abcdefg", key610 = "abcdefg", key611 = "abcdefg", key612 = "abcdefg", key613 = "abcdefg", key614 = "abcdefg", key615 = "abcdefg", key616 = "abcdefg", key617 = "abcdefg", key618 = "abcdefg", key619 = "abcdefg", key620 = "abcdefg", key621 = "abcdefg", key622 = "abcdefg", key623 = "abcdefg", key624 = "abcdefg", key625 = "abcdefg", key626 = "abcdefg", key627 = "abcdefg", key628 = "abcdefg", key629 = "abcdefg", key630 = "abcdefg", key631 = "abcdefg", key632 = "abcdefg", key633 = "abcdefg", key634 = "abcdefg", key635 = "abcdefg", key636 = "abcdefg", key637 = "abcdefg", key638 = "abcdefg", key639 = "abcdefg", key640 = "abcdefg", key641 = "abcdefg", key642 = "abcdefg", key643 = "abcdefg", key644 = "abcdefg", key645 = "abcdefg", key646 = "abcdefg", key647 = "abcdefg", key648 = "abcdefg", key649 = "abcdefg", key650 = "abcdefg", key651 = "abcdefg", key652 = "abcdefg", key653 = "abcdefg", key654 = "abcdefg", key655 = "abcdefg", key656 = "abcdefg", key657 = "abcdefg", key658 = "abcdefg", key659 = "abcdefg", key660 = "abcdefg", key661 = "abcdefg", key662 = "abcdefg", key663 = "abcdefg", key664 = "abcdefg", key665 = "abcdefg", key666 = "abcdefg", key667 = "abcdefg", key668 = "abcdefg", key669 = "abcdefg", key670 = "abcdefg", key671 = "abcdefg", key672 = "abcdefg", key673 = "abcdefg", key674 = "abcdefg", key675 = "abcdefg", key676 = "abcdefg", key677 = "abcdefg", key678 = "abcdefg", key679 = "abcdefg", key680 = "abcdefg", key681 = "abcdefg", key682 = "abcdefg", key683 = "abcdefg", key684 = "abcdefg", key685 = "abcdefg", key686 = "abcdefg", key687 = "abcdefg", key688 = "abcdefg", key689 = "abcdefg", key690 = "abcdefg", key691 = "abcdefg", key692 = "abcdefg", key693 = "abcdefg", key694 = "abcdefg", key695 = "abcdefg", key696 = "abcdefg", key697 = "abcdefg", key698 = "abcdefg", key699 = "abcdefg", key700 = "abcdefg", key701 = "abcdefg", key702 = "abcdefg", key703 = "abcdefg", key704 = "abcdefg", key705 = "abcdefg", key706 = "abcdefg", key707 = "abcdefg", key708 = "abcdefg", key709 = "abcdefg", key710 = "abcdefg", key711 = "abcdefg", key712 = "abcdefg", key713 = "abcdefg", key714 = "abcdefg", key715 = "abcdefg", key716 = "abcdefg", key717 = "abcdefg", key718 = "abcdefg", key719 = "abcdefg", key720 = "abcdefg", key721 = "abcdefg", key722 = "abcdefg", key723 = "abcdefg", key724 = "abcdefg", key725 = "abcdefg", key726 = "abcdefg", key727 = "abcdefg", key728 = "abcdefg", key729 = "abcdefg", key730 = "abcdefg", key731 = "abcdefg", key732 = "abcdefg", key733 = "abcdefg", key734 = "abcdefg", key735 = "abcdefg", key736 = "abcdefg", key737 = "abcdefg", key738 = "abcdefg", key739 = "abcdefg", key740 = "abcdefg", key741 = "abcdefg", key742 = "abcdefg", key743 = "abcdefg", key744 = "abcdefg", key745 = "abcdefg", key746 = "abcdefg", key747 = "abcdefg", key748 = "abcdefg", key749 = "abcdefg", key750 = "abcdefg", key751 = "abcdefg", key752 = "abcdefg", key753 = "abcdefg", key754 = "abcdefg", key755 = "abcdefg", key756 = "abcdefg", key757 = "abcdefg", key758 = "abcdefg", key759 = "abcdefg", key760 = "abcdefg", key761 = "abcdefg", key762 = "abcdefg", key763 = "abcdefg", key764 = "abcdefg", key765 = "abcdefg", key766 = "abcdefg", key767 = "abcdefg", key768 = "abcdefg", key769 = "abcdefg", key770 = "abcdefg", key771 = "abcdefg", key772 = "abcdefg", key773 = "abcdefg", key774 = "abcdefg", key775 = "abcdefg", key776 = "abcdefg", key777 = "abcdefg", key778 = "abcdefg", key779 = "abcdefg", key780 = "abcdefg", key781 = "abcdefg", key782 = "abcdefg", key783 = "abcdefg", key784 = "abcdefg", key785 = "abcdefg", key786 = "abcdefg", key787 = "abcdefg", key788 = "abcdefg", key789 = "abcdefg", key790 = "abcdefg", key791 = "abcdefg", key792 = "abcdefg", key793 = "abcdefg", key794 = "abcdefg", key795 = "abcdefg", key796 = "abcdefg", key797 = "abcdefg", key798 = "abcdefg", key799 = "abcdefg", key800 = "abcdefg", key801 = "abcdefg", key802 = "abcdefg", key803 = "abcdefg", key804 = "abcdefg", key805 = "abcdefg", key806 = "abcdefg", key807 = "abcdefg", key808 = "abcdefg", key809 = "abcdefg", key810 = "abcdefg", key811 = "abcdefg", key812 = "abcdefg", key813 = "abcdefg", key814 = "abcdefg", key815 = "abcdefg", key816 = "abcdefg", key817 = "abcdefg", key818 = "abcdefg", key819 = "abcdefg", key820 = "abcdefg", key821 = "abcdefg", key822 = "abcdefg", key823 = "abcdefg", key824 = "abcdefg", key825 = "abcdefg", key826 = "abcdefg", key827 = "abcdefg", key828 = "abcdefg", key829 = "abcdefg", key830 = "abcdefg", key831 = "abcdefg", key832 = "abcdefg", key833 = "abcdefg", key834 = "abcdefg", key835 = "abcdefg", key836 = "abcdefg", key837 = "abcdefg", key838 = "abcdefg", key839 = "abcdefg", key840 = "abcdefg", key841 = "abcdefg", key842 = "abcdefg", key843 = "abcdefg", key844 = "abcdefg", key845 = "abcdefg", key846 = "abcdefg", key847 = "abcdefg", key848 = "abcdefg", key849 = "abcdefg", key850 = "abcdefg", key851 = "abcdefg", key852 = "abcdefg", key853 = "abcdefg", key854 = "abcdefg", key855 = "abcdefg", key856 = "abcdefg", key857 = "abcdefg", key858 = "abcdefg", key859 = "abcdefg", key860 = "abcdefg", key861 = "abcdefg", key862 = "abcdefg", key863 = "abcdefg", key864 = "abcdefg", key865 = "abcdefg", key866 = "abcdefg", key867 = "abcdefg", key868 = "abcdefg", key869 = "abcdefg", key870 = "abcdefg", key871 = "abcdefg", key872 = "abcdefg", key873 = "abcdefg", key874 = "abcdefg", key875 = "abcdefg", key876 = "abcdefg", key877 = "abcdefg", key878 = "abcdefg", key879 = "abcdefg", key880 = "abcdefg", key881 = "abcdefg", key882 = "abcdefg", key883 = "abcdefg", key884 = "abcdefg", key885 = "abcdefg", key886 = "abcdefg", key887 = "abcdefg", key888 = "abcdefg", key889 = "abcdefg", key890 = "abcdefg", key891 = "abcdefg", key892 = "abcdefg", key893 = "abcdefg", key894 = "abcdefg", key895 = "abcdefg", key896 = "abcdefg", key897 = "abcdefg", key898 = "abcdefg", key899 = "abcdefg", key900 = "abcdefg", key901 = "abcdefg", key902 = "abcdefg", key903 = "abcdefg", key904 = "abcdefg", key905 = "abcdefg", key906 = "abcdefg", key907 = "abcdefg", key908 = "abcdefg", key909 = "abcdefg", key910 = "abcdefg", key911 = "abcdefg", key912 = "abcdefg", key913 = "abcdefg", key914 = "abcdefg", key915 = "abcdefg", key916 = "abcdefg", key917 = "abcdefg", key918 = "abcdefg", key919 = "abcdefg", key920 = "abcdefg", key921 = "abcdefg", key922 = "abcdefg", key923 = "abcdefg", key924 = "abcdefg", key925 = "abcdefg", key926 = "abcdefg", key927 = "abcdefg", key928 = "abcdefg", key929 = "abcdefg", key930 = "abcdefg", key931 = "abcdefg", key932 = "abcdefg", key933 = "abcdefg", key934 = "abcdefg", key935 = "abcdefg", key936 = "abcdefg", key937 = "abcdefg", key938 = "abcdefg", key939 = "abcdefg", key940 = "abcdefg", key941 = "abcdefg", key942 = "abcdefg", key943 = "abcdefg", key944 = "abcdefg", key945 = "abcdefg", key946 = "abcdefg", key947 = "abcdefg", key948 = "abcdefg", key949 = "abcdefg", key950 = "abcdefg", key951 = "abcdefg", key952 = "abcdefg", key953 = "abcdefg", key954 = "abcdefg", key955 = "abcdefg", key956 = "abcdefg", key957 = "abcdefg", key958 = "abcdefg", key959 = "abcdefg", key960 = "abcdefg", key961 = "abcdefg", key962 = "abcdefg", key963 = "abcdefg", key964 = "abcdefg", key965 = "abcdefg", key966 = "abcdefg", key967 = "abcdefg", key968 = "abcdefg", key969 = "abcdefg", key970 = "abcdefg", key971 = "abcdefg", key972 = "abcdefg", key973 = "abcdefg", key974 = "abcdefg", key975 = "abcdefg", key976 = "abcdefg", key977 = "abcdefg", key978 = "abcdefg", key979 = "abcdefg", key980 = "abcdefg", key981 = "abcdefg", key982 = "abcdefg", key983 = "abcdefg", key984 = "abcdefg", key985 = "abcdefg", key986 = "abcdefg", key987 = "abcdefg", key988 = "abcdefg", key989 = "abcdefg", key990 = "abcdefg", key991 = "abcdefg", key992 = "abcdefg", key993 = "abcdefg", key994 = "abcdefg", key995 = "abcdefg", key996 = "abcdefg", key997 = "abcdefg", key998 = "abcdefg", key999 = "abcdefg", key1000 = "abcdefg", end = true}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-table-inline-1000.yaml 0000644 0000000 0000000 00000042767 14643451625 022146 0 ustar 00 key:
key1: abcdefg
key2: abcdefg
key3: abcdefg
key4: abcdefg
key5: abcdefg
key6: abcdefg
key7: abcdefg
key8: abcdefg
key9: abcdefg
key10: abcdefg
key11: abcdefg
key12: abcdefg
key13: abcdefg
key14: abcdefg
key15: abcdefg
key16: abcdefg
key17: abcdefg
key18: abcdefg
key19: abcdefg
key20: abcdefg
key21: abcdefg
key22: abcdefg
key23: abcdefg
key24: abcdefg
key25: abcdefg
key26: abcdefg
key27: abcdefg
key28: abcdefg
key29: abcdefg
key30: abcdefg
key31: abcdefg
key32: abcdefg
key33: abcdefg
key34: abcdefg
key35: abcdefg
key36: abcdefg
key37: abcdefg
key38: abcdefg
key39: abcdefg
key40: abcdefg
key41: abcdefg
key42: abcdefg
key43: abcdefg
key44: abcdefg
key45: abcdefg
key46: abcdefg
key47: abcdefg
key48: abcdefg
key49: abcdefg
key50: abcdefg
key51: abcdefg
key52: abcdefg
key53: abcdefg
key54: abcdefg
key55: abcdefg
key56: abcdefg
key57: abcdefg
key58: abcdefg
key59: abcdefg
key60: abcdefg
key61: abcdefg
key62: abcdefg
key63: abcdefg
key64: abcdefg
key65: abcdefg
key66: abcdefg
key67: abcdefg
key68: abcdefg
key69: abcdefg
key70: abcdefg
key71: abcdefg
key72: abcdefg
key73: abcdefg
key74: abcdefg
key75: abcdefg
key76: abcdefg
key77: abcdefg
key78: abcdefg
key79: abcdefg
key80: abcdefg
key81: abcdefg
key82: abcdefg
key83: abcdefg
key84: abcdefg
key85: abcdefg
key86: abcdefg
key87: abcdefg
key88: abcdefg
key89: abcdefg
key90: abcdefg
key91: abcdefg
key92: abcdefg
key93: abcdefg
key94: abcdefg
key95: abcdefg
key96: abcdefg
key97: abcdefg
key98: abcdefg
key99: abcdefg
key100: abcdefg
key101: abcdefg
key102: abcdefg
key103: abcdefg
key104: abcdefg
key105: abcdefg
key106: abcdefg
key107: abcdefg
key108: abcdefg
key109: abcdefg
key110: abcdefg
key111: abcdefg
key112: abcdefg
key113: abcdefg
key114: abcdefg
key115: abcdefg
key116: abcdefg
key117: abcdefg
key118: abcdefg
key119: abcdefg
key120: abcdefg
key121: abcdefg
key122: abcdefg
key123: abcdefg
key124: abcdefg
key125: abcdefg
key126: abcdefg
key127: abcdefg
key128: abcdefg
key129: abcdefg
key130: abcdefg
key131: abcdefg
key132: abcdefg
key133: abcdefg
key134: abcdefg
key135: abcdefg
key136: abcdefg
key137: abcdefg
key138: abcdefg
key139: abcdefg
key140: abcdefg
key141: abcdefg
key142: abcdefg
key143: abcdefg
key144: abcdefg
key145: abcdefg
key146: abcdefg
key147: abcdefg
key148: abcdefg
key149: abcdefg
key150: abcdefg
key151: abcdefg
key152: abcdefg
key153: abcdefg
key154: abcdefg
key155: abcdefg
key156: abcdefg
key157: abcdefg
key158: abcdefg
key159: abcdefg
key160: abcdefg
key161: abcdefg
key162: abcdefg
key163: abcdefg
key164: abcdefg
key165: abcdefg
key166: abcdefg
key167: abcdefg
key168: abcdefg
key169: abcdefg
key170: abcdefg
key171: abcdefg
key172: abcdefg
key173: abcdefg
key174: abcdefg
key175: abcdefg
key176: abcdefg
key177: abcdefg
key178: abcdefg
key179: abcdefg
key180: abcdefg
key181: abcdefg
key182: abcdefg
key183: abcdefg
key184: abcdefg
key185: abcdefg
key186: abcdefg
key187: abcdefg
key188: abcdefg
key189: abcdefg
key190: abcdefg
key191: abcdefg
key192: abcdefg
key193: abcdefg
key194: abcdefg
key195: abcdefg
key196: abcdefg
key197: abcdefg
key198: abcdefg
key199: abcdefg
key200: abcdefg
key201: abcdefg
key202: abcdefg
key203: abcdefg
key204: abcdefg
key205: abcdefg
key206: abcdefg
key207: abcdefg
key208: abcdefg
key209: abcdefg
key210: abcdefg
key211: abcdefg
key212: abcdefg
key213: abcdefg
key214: abcdefg
key215: abcdefg
key216: abcdefg
key217: abcdefg
key218: abcdefg
key219: abcdefg
key220: abcdefg
key221: abcdefg
key222: abcdefg
key223: abcdefg
key224: abcdefg
key225: abcdefg
key226: abcdefg
key227: abcdefg
key228: abcdefg
key229: abcdefg
key230: abcdefg
key231: abcdefg
key232: abcdefg
key233: abcdefg
key234: abcdefg
key235: abcdefg
key236: abcdefg
key237: abcdefg
key238: abcdefg
key239: abcdefg
key240: abcdefg
key241: abcdefg
key242: abcdefg
key243: abcdefg
key244: abcdefg
key245: abcdefg
key246: abcdefg
key247: abcdefg
key248: abcdefg
key249: abcdefg
key250: abcdefg
key251: abcdefg
key252: abcdefg
key253: abcdefg
key254: abcdefg
key255: abcdefg
key256: abcdefg
key257: abcdefg
key258: abcdefg
key259: abcdefg
key260: abcdefg
key261: abcdefg
key262: abcdefg
key263: abcdefg
key264: abcdefg
key265: abcdefg
key266: abcdefg
key267: abcdefg
key268: abcdefg
key269: abcdefg
key270: abcdefg
key271: abcdefg
key272: abcdefg
key273: abcdefg
key274: abcdefg
key275: abcdefg
key276: abcdefg
key277: abcdefg
key278: abcdefg
key279: abcdefg
key280: abcdefg
key281: abcdefg
key282: abcdefg
key283: abcdefg
key284: abcdefg
key285: abcdefg
key286: abcdefg
key287: abcdefg
key288: abcdefg
key289: abcdefg
key290: abcdefg
key291: abcdefg
key292: abcdefg
key293: abcdefg
key294: abcdefg
key295: abcdefg
key296: abcdefg
key297: abcdefg
key298: abcdefg
key299: abcdefg
key300: abcdefg
key301: abcdefg
key302: abcdefg
key303: abcdefg
key304: abcdefg
key305: abcdefg
key306: abcdefg
key307: abcdefg
key308: abcdefg
key309: abcdefg
key310: abcdefg
key311: abcdefg
key312: abcdefg
key313: abcdefg
key314: abcdefg
key315: abcdefg
key316: abcdefg
key317: abcdefg
key318: abcdefg
key319: abcdefg
key320: abcdefg
key321: abcdefg
key322: abcdefg
key323: abcdefg
key324: abcdefg
key325: abcdefg
key326: abcdefg
key327: abcdefg
key328: abcdefg
key329: abcdefg
key330: abcdefg
key331: abcdefg
key332: abcdefg
key333: abcdefg
key334: abcdefg
key335: abcdefg
key336: abcdefg
key337: abcdefg
key338: abcdefg
key339: abcdefg
key340: abcdefg
key341: abcdefg
key342: abcdefg
key343: abcdefg
key344: abcdefg
key345: abcdefg
key346: abcdefg
key347: abcdefg
key348: abcdefg
key349: abcdefg
key350: abcdefg
key351: abcdefg
key352: abcdefg
key353: abcdefg
key354: abcdefg
key355: abcdefg
key356: abcdefg
key357: abcdefg
key358: abcdefg
key359: abcdefg
key360: abcdefg
key361: abcdefg
key362: abcdefg
key363: abcdefg
key364: abcdefg
key365: abcdefg
key366: abcdefg
key367: abcdefg
key368: abcdefg
key369: abcdefg
key370: abcdefg
key371: abcdefg
key372: abcdefg
key373: abcdefg
key374: abcdefg
key375: abcdefg
key376: abcdefg
key377: abcdefg
key378: abcdefg
key379: abcdefg
key380: abcdefg
key381: abcdefg
key382: abcdefg
key383: abcdefg
key384: abcdefg
key385: abcdefg
key386: abcdefg
key387: abcdefg
key388: abcdefg
key389: abcdefg
key390: abcdefg
key391: abcdefg
key392: abcdefg
key393: abcdefg
key394: abcdefg
key395: abcdefg
key396: abcdefg
key397: abcdefg
key398: abcdefg
key399: abcdefg
key400: abcdefg
key401: abcdefg
key402: abcdefg
key403: abcdefg
key404: abcdefg
key405: abcdefg
key406: abcdefg
key407: abcdefg
key408: abcdefg
key409: abcdefg
key410: abcdefg
key411: abcdefg
key412: abcdefg
key413: abcdefg
key414: abcdefg
key415: abcdefg
key416: abcdefg
key417: abcdefg
key418: abcdefg
key419: abcdefg
key420: abcdefg
key421: abcdefg
key422: abcdefg
key423: abcdefg
key424: abcdefg
key425: abcdefg
key426: abcdefg
key427: abcdefg
key428: abcdefg
key429: abcdefg
key430: abcdefg
key431: abcdefg
key432: abcdefg
key433: abcdefg
key434: abcdefg
key435: abcdefg
key436: abcdefg
key437: abcdefg
key438: abcdefg
key439: abcdefg
key440: abcdefg
key441: abcdefg
key442: abcdefg
key443: abcdefg
key444: abcdefg
key445: abcdefg
key446: abcdefg
key447: abcdefg
key448: abcdefg
key449: abcdefg
key450: abcdefg
key451: abcdefg
key452: abcdefg
key453: abcdefg
key454: abcdefg
key455: abcdefg
key456: abcdefg
key457: abcdefg
key458: abcdefg
key459: abcdefg
key460: abcdefg
key461: abcdefg
key462: abcdefg
key463: abcdefg
key464: abcdefg
key465: abcdefg
key466: abcdefg
key467: abcdefg
key468: abcdefg
key469: abcdefg
key470: abcdefg
key471: abcdefg
key472: abcdefg
key473: abcdefg
key474: abcdefg
key475: abcdefg
key476: abcdefg
key477: abcdefg
key478: abcdefg
key479: abcdefg
key480: abcdefg
key481: abcdefg
key482: abcdefg
key483: abcdefg
key484: abcdefg
key485: abcdefg
key486: abcdefg
key487: abcdefg
key488: abcdefg
key489: abcdefg
key490: abcdefg
key491: abcdefg
key492: abcdefg
key493: abcdefg
key494: abcdefg
key495: abcdefg
key496: abcdefg
key497: abcdefg
key498: abcdefg
key499: abcdefg
key500: abcdefg
key501: abcdefg
key502: abcdefg
key503: abcdefg
key504: abcdefg
key505: abcdefg
key506: abcdefg
key507: abcdefg
key508: abcdefg
key509: abcdefg
key510: abcdefg
key511: abcdefg
key512: abcdefg
key513: abcdefg
key514: abcdefg
key515: abcdefg
key516: abcdefg
key517: abcdefg
key518: abcdefg
key519: abcdefg
key520: abcdefg
key521: abcdefg
key522: abcdefg
key523: abcdefg
key524: abcdefg
key525: abcdefg
key526: abcdefg
key527: abcdefg
key528: abcdefg
key529: abcdefg
key530: abcdefg
key531: abcdefg
key532: abcdefg
key533: abcdefg
key534: abcdefg
key535: abcdefg
key536: abcdefg
key537: abcdefg
key538: abcdefg
key539: abcdefg
key540: abcdefg
key541: abcdefg
key542: abcdefg
key543: abcdefg
key544: abcdefg
key545: abcdefg
key546: abcdefg
key547: abcdefg
key548: abcdefg
key549: abcdefg
key550: abcdefg
key551: abcdefg
key552: abcdefg
key553: abcdefg
key554: abcdefg
key555: abcdefg
key556: abcdefg
key557: abcdefg
key558: abcdefg
key559: abcdefg
key560: abcdefg
key561: abcdefg
key562: abcdefg
key563: abcdefg
key564: abcdefg
key565: abcdefg
key566: abcdefg
key567: abcdefg
key568: abcdefg
key569: abcdefg
key570: abcdefg
key571: abcdefg
key572: abcdefg
key573: abcdefg
key574: abcdefg
key575: abcdefg
key576: abcdefg
key577: abcdefg
key578: abcdefg
key579: abcdefg
key580: abcdefg
key581: abcdefg
key582: abcdefg
key583: abcdefg
key584: abcdefg
key585: abcdefg
key586: abcdefg
key587: abcdefg
key588: abcdefg
key589: abcdefg
key590: abcdefg
key591: abcdefg
key592: abcdefg
key593: abcdefg
key594: abcdefg
key595: abcdefg
key596: abcdefg
key597: abcdefg
key598: abcdefg
key599: abcdefg
key600: abcdefg
key601: abcdefg
key602: abcdefg
key603: abcdefg
key604: abcdefg
key605: abcdefg
key606: abcdefg
key607: abcdefg
key608: abcdefg
key609: abcdefg
key610: abcdefg
key611: abcdefg
key612: abcdefg
key613: abcdefg
key614: abcdefg
key615: abcdefg
key616: abcdefg
key617: abcdefg
key618: abcdefg
key619: abcdefg
key620: abcdefg
key621: abcdefg
key622: abcdefg
key623: abcdefg
key624: abcdefg
key625: abcdefg
key626: abcdefg
key627: abcdefg
key628: abcdefg
key629: abcdefg
key630: abcdefg
key631: abcdefg
key632: abcdefg
key633: abcdefg
key634: abcdefg
key635: abcdefg
key636: abcdefg
key637: abcdefg
key638: abcdefg
key639: abcdefg
key640: abcdefg
key641: abcdefg
key642: abcdefg
key643: abcdefg
key644: abcdefg
key645: abcdefg
key646: abcdefg
key647: abcdefg
key648: abcdefg
key649: abcdefg
key650: abcdefg
key651: abcdefg
key652: abcdefg
key653: abcdefg
key654: abcdefg
key655: abcdefg
key656: abcdefg
key657: abcdefg
key658: abcdefg
key659: abcdefg
key660: abcdefg
key661: abcdefg
key662: abcdefg
key663: abcdefg
key664: abcdefg
key665: abcdefg
key666: abcdefg
key667: abcdefg
key668: abcdefg
key669: abcdefg
key670: abcdefg
key671: abcdefg
key672: abcdefg
key673: abcdefg
key674: abcdefg
key675: abcdefg
key676: abcdefg
key677: abcdefg
key678: abcdefg
key679: abcdefg
key680: abcdefg
key681: abcdefg
key682: abcdefg
key683: abcdefg
key684: abcdefg
key685: abcdefg
key686: abcdefg
key687: abcdefg
key688: abcdefg
key689: abcdefg
key690: abcdefg
key691: abcdefg
key692: abcdefg
key693: abcdefg
key694: abcdefg
key695: abcdefg
key696: abcdefg
key697: abcdefg
key698: abcdefg
key699: abcdefg
key700: abcdefg
key701: abcdefg
key702: abcdefg
key703: abcdefg
key704: abcdefg
key705: abcdefg
key706: abcdefg
key707: abcdefg
key708: abcdefg
key709: abcdefg
key710: abcdefg
key711: abcdefg
key712: abcdefg
key713: abcdefg
key714: abcdefg
key715: abcdefg
key716: abcdefg
key717: abcdefg
key718: abcdefg
key719: abcdefg
key720: abcdefg
key721: abcdefg
key722: abcdefg
key723: abcdefg
key724: abcdefg
key725: abcdefg
key726: abcdefg
key727: abcdefg
key728: abcdefg
key729: abcdefg
key730: abcdefg
key731: abcdefg
key732: abcdefg
key733: abcdefg
key734: abcdefg
key735: abcdefg
key736: abcdefg
key737: abcdefg
key738: abcdefg
key739: abcdefg
key740: abcdefg
key741: abcdefg
key742: abcdefg
key743: abcdefg
key744: abcdefg
key745: abcdefg
key746: abcdefg
key747: abcdefg
key748: abcdefg
key749: abcdefg
key750: abcdefg
key751: abcdefg
key752: abcdefg
key753: abcdefg
key754: abcdefg
key755: abcdefg
key756: abcdefg
key757: abcdefg
key758: abcdefg
key759: abcdefg
key760: abcdefg
key761: abcdefg
key762: abcdefg
key763: abcdefg
key764: abcdefg
key765: abcdefg
key766: abcdefg
key767: abcdefg
key768: abcdefg
key769: abcdefg
key770: abcdefg
key771: abcdefg
key772: abcdefg
key773: abcdefg
key774: abcdefg
key775: abcdefg
key776: abcdefg
key777: abcdefg
key778: abcdefg
key779: abcdefg
key780: abcdefg
key781: abcdefg
key782: abcdefg
key783: abcdefg
key784: abcdefg
key785: abcdefg
key786: abcdefg
key787: abcdefg
key788: abcdefg
key789: abcdefg
key790: abcdefg
key791: abcdefg
key792: abcdefg
key793: abcdefg
key794: abcdefg
key795: abcdefg
key796: abcdefg
key797: abcdefg
key798: abcdefg
key799: abcdefg
key800: abcdefg
key801: abcdefg
key802: abcdefg
key803: abcdefg
key804: abcdefg
key805: abcdefg
key806: abcdefg
key807: abcdefg
key808: abcdefg
key809: abcdefg
key810: abcdefg
key811: abcdefg
key812: abcdefg
key813: abcdefg
key814: abcdefg
key815: abcdefg
key816: abcdefg
key817: abcdefg
key818: abcdefg
key819: abcdefg
key820: abcdefg
key821: abcdefg
key822: abcdefg
key823: abcdefg
key824: abcdefg
key825: abcdefg
key826: abcdefg
key827: abcdefg
key828: abcdefg
key829: abcdefg
key830: abcdefg
key831: abcdefg
key832: abcdefg
key833: abcdefg
key834: abcdefg
key835: abcdefg
key836: abcdefg
key837: abcdefg
key838: abcdefg
key839: abcdefg
key840: abcdefg
key841: abcdefg
key842: abcdefg
key843: abcdefg
key844: abcdefg
key845: abcdefg
key846: abcdefg
key847: abcdefg
key848: abcdefg
key849: abcdefg
key850: abcdefg
key851: abcdefg
key852: abcdefg
key853: abcdefg
key854: abcdefg
key855: abcdefg
key856: abcdefg
key857: abcdefg
key858: abcdefg
key859: abcdefg
key860: abcdefg
key861: abcdefg
key862: abcdefg
key863: abcdefg
key864: abcdefg
key865: abcdefg
key866: abcdefg
key867: abcdefg
key868: abcdefg
key869: abcdefg
key870: abcdefg
key871: abcdefg
key872: abcdefg
key873: abcdefg
key874: abcdefg
key875: abcdefg
key876: abcdefg
key877: abcdefg
key878: abcdefg
key879: abcdefg
key880: abcdefg
key881: abcdefg
key882: abcdefg
key883: abcdefg
key884: abcdefg
key885: abcdefg
key886: abcdefg
key887: abcdefg
key888: abcdefg
key889: abcdefg
key890: abcdefg
key891: abcdefg
key892: abcdefg
key893: abcdefg
key894: abcdefg
key895: abcdefg
key896: abcdefg
key897: abcdefg
key898: abcdefg
key899: abcdefg
key900: abcdefg
key901: abcdefg
key902: abcdefg
key903: abcdefg
key904: abcdefg
key905: abcdefg
key906: abcdefg
key907: abcdefg
key908: abcdefg
key909: abcdefg
key910: abcdefg
key911: abcdefg
key912: abcdefg
key913: abcdefg
key914: abcdefg
key915: abcdefg
key916: abcdefg
key917: abcdefg
key918: abcdefg
key919: abcdefg
key920: abcdefg
key921: abcdefg
key922: abcdefg
key923: abcdefg
key924: abcdefg
key925: abcdefg
key926: abcdefg
key927: abcdefg
key928: abcdefg
key929: abcdefg
key930: abcdefg
key931: abcdefg
key932: abcdefg
key933: abcdefg
key934: abcdefg
key935: abcdefg
key936: abcdefg
key937: abcdefg
key938: abcdefg
key939: abcdefg
key940: abcdefg
key941: abcdefg
key942: abcdefg
key943: abcdefg
key944: abcdefg
key945: abcdefg
key946: abcdefg
key947: abcdefg
key948: abcdefg
key949: abcdefg
key950: abcdefg
key951: abcdefg
key952: abcdefg
key953: abcdefg
key954: abcdefg
key955: abcdefg
key956: abcdefg
key957: abcdefg
key958: abcdefg
key959: abcdefg
key960: abcdefg
key961: abcdefg
key962: abcdefg
key963: abcdefg
key964: abcdefg
key965: abcdefg
key966: abcdefg
key967: abcdefg
key968: abcdefg
key969: abcdefg
key970: abcdefg
key971: abcdefg
key972: abcdefg
key973: abcdefg
key974: abcdefg
key975: abcdefg
key976: abcdefg
key977: abcdefg
key978: abcdefg
key979: abcdefg
key980: abcdefg
key981: abcdefg
key982: abcdefg
key983: abcdefg
key984: abcdefg
key985: abcdefg
key986: abcdefg
key987: abcdefg
key988: abcdefg
key989: abcdefg
key990: abcdefg
key991: abcdefg
key992: abcdefg
key993: abcdefg
key994: abcdefg
key995: abcdefg
key996: abcdefg
key997: abcdefg
key998: abcdefg
key999: abcdefg
key1000: abcdefg
end: true
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0349247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-table-inline-nested-1000.toml 0000644 0000000 0000000 00000017512 14643451625 023425 0 ustar 00 key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/qa-table-inline-nested-1000.yaml 0000644 0000000 0000000 00003654671 14643451625 023434 0 ustar 00 key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key:
key: {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-1.toml 0000644 0000000 0000000 00000000027 14643451625 021022 0 ustar 00 integers = [ 1, 2, 3 ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-1.yaml 0000644 0000000 0000000 00000000026 14643451625 021010 0 ustar 00 integers: [ 1, 2, 3 ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-2.toml 0000644 0000000 0000000 00000000046 14643451625 021024 0 ustar 00 colors = [ "red", "yellow", "green" ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-2.yaml 0000644 0000000 0000000 00000000045 14643451625 021012 0 ustar 00 colors: [ "red", "yellow", "green" ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-3.toml 0000644 0000000 0000000 00000000056 14643451625 021026 0 ustar 00 nested_array_of_int = [ [ 1, 2 ], [3, 4, 5] ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-3.yaml 0000644 0000000 0000000 00000000055 14643451625 021014 0 ustar 00 nested_array_of_int: [ [ 1, 2 ], [3, 4, 5] ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-4.toml 0000644 0000000 0000000 00000000103 14643451625 021020 0 ustar 00 string_array = [ "all", 'strings', """are the same""", '''type''']
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-4.yaml 0000644 0000000 0000000 00000000073 14643451625 021015 0 ustar 00 string_array: [ "all", "strings", "are the same", "type" ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-5.toml 0000644 0000000 0000000 00000000063 14643451625 021026 0 ustar 00 nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-5.yaml 0000644 0000000 0000000 00000000062 14643451625 021014 0 ustar 00 nested_mixed_array: [ [ 1, 2 ], ["a", "b", "c"] ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-7.toml 0000644 0000000 0000000 00000000032 14643451625 021024 0 ustar 00 integers2 = [
1, 2, 3
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-7.yaml 0000644 0000000 0000000 00000000031 14643451625 021012 0 ustar 00 integers2: [
1, 2, 3
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-8.toml 0000644 0000000 0000000 00000000047 14643451625 021033 0 ustar 00 integers3 = [
1,
2, # this is ok
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-8.yaml 0000644 0000000 0000000 00000000046 14643451625 021021 0 ustar 00 integers3: [
1,
2, # this is ok
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-mixed-number-types.toml 0000644 0000000 0000000 00000000045 14643451625 024420 0 ustar 00 numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-mixed-number-types.yaml 0000644 0000000 0000000 00000000044 14643451625 024406 0 ustar 00 numbers: [ 0.1, 0.2, 0.5, 1, 2, 5 ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-more-mixed-types.toml 0000644 0000000 0000000 00000000212 14643451625 024066 0 ustar 00 contributors = [
"Foo Bar ",
{ name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" }
] ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-more-mixed-types.yaml 0000644 0000000 0000000 00000000207 14643451625 024061 0 ustar 00 contributors: [
"Foo Bar ",
{ name: "Baz Qux", email: "bazqux@example.com", url: "https://example.com/bazqux" }
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-of-tables-1.toml 0000644 0000000 0000000 00000000166 14643451625 022700 0 ustar 00 [[products]]
name = "Hammer"
sku = 738594937
[[products]]
[[products]]
name = "Nail"
sku = 284758393
color = "gray"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-of-tables-1.yaml 0000644 0000000 0000000 00000000151 14643451625 022661 0 ustar 00 products: [
{name: "Hammer", sku: 738594937},
{},
{name: "Nail", sku: 284758393, color: "gray" }
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-of-tables-2.toml 0000644 0000000 0000000 00000000374 14643451625 022702 0 ustar 00 [[fruit]]
name = "apple"
[fruit.physical]
color = "red"
shape = "round"
[[fruit.variety]]
name = "red delicious"
[[fruit.variety]]
name = "granny smith"
[[fruit]]
name = "banana"
[[fruit.variety]]
name = "plantain"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-of-tables-2.yaml 0000644 0000000 0000000 00000000410 14643451625 022660 0 ustar 00 fruit: [
{
name: "apple",
physical: {
color: "red",
shape: "round"
},
variety: [
{ name: "red delicious" },
{ name: "granny smith" }
]
},
{
name: "banana",
variety: [
{ name: "plantain" }
]
}
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-of-tables-3.toml 0000644 0000000 0000000 00000000155 14643451625 022700 0 ustar 00 points = [ { x = 1, y = 2, z = 3 },
{ x = 7, y = 8, z = 9 },
{ x = 2, y = 4, z = 8 } ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-array-of-tables-3.yaml 0000644 0000000 0000000 00000000141 14643451625 022662 0 ustar 00 points: [ { x: 1, y: 2, z: 3 },
{ x: 7, y: 8, z: 9 },
{ x: 2, y: 4, z: 8 } ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-boolean-1.toml 0000644 0000000 0000000 00000000015 14643451625 021320 0 ustar 00 bool1 = true
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-boolean-1.yaml 0000644 0000000 0000000 00000000014 14643451625 021306 0 ustar 00 bool1: true
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-boolean-2.toml 0000644 0000000 0000000 00000000016 14643451625 021322 0 ustar 00 bool1 = false
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-boolean-2.yaml 0000644 0000000 0000000 00000000015 14643451625 021310 0 ustar 00 bool1: false
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-case-sensitive.toml 0000644 0000000 0000000 00000000056 14643451625 022472 0 ustar 00 # TOML is case sensitive.
abc = 123
ABC = 456
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-case-sensitive.yaml 0000644 0000000 0000000 00000000022 14643451625 022452 0 ustar 00 abc: 123
ABC: 456
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment-mid-array.toml 0000644 0000000 0000000 00000000170 14643451625 023072 0 ustar 00 # eol commetns can go anywhere
abc = [ # this is valid
123,#as is this
456 #so is this
]# and this
# here too
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment-mid-array.yaml 0000644 0000000 0000000 00000000167 14643451625 023067 0 ustar 00 # eol commetns can go anywhere
abc: [ # this is valid
123,#as is this
456 #so is this
]# and this
# here too
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment-mid-string.toml 0000644 0000000 0000000 00000000044 14643451625 023262 0 ustar 00 another = "# This is not a comment"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment-mid-string.yaml 0000644 0000000 0000000 00000000043 14643451625 023250 0 ustar 00 another: "# This is not a comment"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment-tab.toml 0000644 0000000 0000000 00000000206 14643451625 021753 0 ustar 00 # This is a full-line comment with a tab in the middle
key = "value" # This is a commen with a tab in the middle at the end of a line
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment-tab.yaml 0000644 0000000 0000000 00000000015 14643451625 021740 0 ustar 00 key: "value"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment.toml 0000644 0000000 0000000 00000000125 14643451625 021207 0 ustar 00 # This is a full-line comment
key = "value" # This is a comment at the end of a line
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-comment.yaml 0000644 0000000 0000000 00000000124 14643451625 021175 0 ustar 00 # This is a full-line comment
key: "value" # This is a comment at the end of a line
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-local-1.json 0000644 0000000 0000000 00000000101 14643451625 021700 0 ustar 00 {
"ld1": {
"type": "date",
"value": "1979-05-27"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-local-1.toml 0000644 0000000 0000000 00000000021 14643451625 021703 0 ustar 00 ld1 = 1979-05-27
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-1.toml 0000644 0000000 0000000 00000000034 14643451625 021553 0 ustar 00 odt1 = 1979-05-27T07:32:00Z
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0389247
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-1.yaml 0000644 0000000 0000000 00000000033 14643451625 021541 0 ustar 00 odt1: 1979-05-27T07:32:00Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-2.toml 0000644 0000000 0000000 00000000041 14643451625 021552 0 ustar 00 odt2 = 1979-05-27T00:32:00-07:00
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-2.yaml 0000644 0000000 0000000 00000000040 14643451625 021540 0 ustar 00 odt2: 1979-05-27T00:32:00-07:00
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-3.toml 0000644 0000000 0000000 00000000050 14643451625 021553 0 ustar 00 odt3 = 1979-05-27T00:32:00.999999-07:00
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-3.yaml 0000644 0000000 0000000 00000000047 14643451625 021550 0 ustar 00 odt3: 1979-05-27T00:32:00.999999-07:00
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-4.toml 0000644 0000000 0000000 00000000034 14643451625 021556 0 ustar 00 odt4 = 1979-05-27 07:32:00Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-4.yaml 0000644 0000000 0000000 00000000033 14643451625 021544 0 ustar 00 odt4: 1979-05-27 07:32:00Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-5.toml 0000644 0000000 0000000 00000000040 14643451625 021554 0 ustar 00 odt5 = 1979-05-27T07:32:00.123Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-5.yaml 0000644 0000000 0000000 00000000037 14643451625 021551 0 ustar 00 odt5: 1979-05-27T07:32:00.123Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-6.toml 0000644 0000000 0000000 00000000041 14643451625 021556 0 ustar 00 odt6 = 1979-05-27T07:32:00.1239Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-6.yaml 0000644 0000000 0000000 00000000037 14643451625 021552 0 ustar 00 odt6: 1979-05-27T07:32:00.123Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-local-1.json 0000644 0000000 0000000 00000000131 14643451625 022637 0 ustar 00 {
"ldt1": {
"type": "datetime-local",
"value": "1979-05-27T07:32:00.000"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-local-1.toml 0000644 0000000 0000000 00000000033 14643451625 022642 0 ustar 00 ldt1 = 1979-05-27T07:32:00
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-local-2.json 0000644 0000000 0000000 00000000131 14643451625 022640 0 ustar 00 {
"ldt2": {
"type": "datetime-local",
"value": "1979-05-27T00:32:00.999"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-date-time-local-2.toml 0000644 0000000 0000000 00000000042 14643451625 022643 0 ustar 00 ldt2 = 1979-05-27T00:32:00.999999
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-dotted-keys-1.toml 0000644 0000000 0000000 00000000134 14643451625 022137 0 ustar 00 name = "Orange"
physical.color = "orange"
physical.shape = "round"
site."google.com" = true
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-dotted-keys-1.yaml 0000644 0000000 0000000 00000000127 14643451625 022130 0 ustar 00 name: "Orange"
physical:
color: "orange"
shape: "round"
site:
"google.com": true
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-dotted-keys-2.toml 0000644 0000000 0000000 00000000015 14643451625 022136 0 ustar 00 a . b = 23
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-dotted-keys-2.yaml 0000644 0000000 0000000 00000000013 14643451625 022123 0 ustar 00 a:
b: 23
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-dotted-keys-3.toml 0000644 0000000 0000000 00000000016 14643451625 022140 0 ustar 00 a . b = 23
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-dotted-keys-3.yaml 0000644 0000000 0000000 00000000013 14643451625 022124 0 ustar 00 a:
b: 23
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-empty-key-name-1.toml 0000644 0000000 0000000 00000000051 14643451625 022543 0 ustar 00 "" = "blank" # VALID but discouraged
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-empty-key-name-1.yaml 0000644 0000000 0000000 00000000014 14643451625 022531 0 ustar 00 "": "blank"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-empty-key-name-2.toml 0000644 0000000 0000000 00000000051 14643451625 022544 0 ustar 00 '' = "blank" # VALID but discouraged
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-empty-key-name-2.yaml 0000644 0000000 0000000 00000000014 14643451625 022532 0 ustar 00 "": "blank"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-extend-dotted-object-1.toml 0000644 0000000 0000000 00000000213 14643451625 023715 0 ustar 00 # This makes the key "fruit" into a table.
fruit.apple.smooth = true
# So then you can add to the table "fruit" like so:
fruit.orange = 2
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-extend-dotted-object-1.yaml 0000644 0000000 0000000 00000000055 14643451625 023710 0 ustar 00 fruit:
apple:
smooth: true
orange: 2
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-extend-dotted-object-2.toml 0000644 0000000 0000000 00000000234 14643451625 023721 0 ustar 00 # VALID BUT DISCOURAGED
apple.type = "fruit"
orange.type = "fruit"
apple.skin = "thin"
orange.skin = "thick"
apple.color = "red"
orange.color = "orange"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-extend-dotted-object-2.yaml 0000644 0000000 0000000 00000000160 14643451625 023706 0 ustar 00 apple:
type: "fruit"
skin: "thin"
color: "red"
orange:
type: "fruit"
skin: "thick"
color: "orange"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-extend-dotted-object-3.toml 0000644 0000000 0000000 00000000221 14643451625 023716 0 ustar 00 # RECOMMENDED
apple.type = "fruit"
apple.skin = "thin"
apple.color = "red"
orange.type = "fruit"
orange.skin = "thick"
orange.color = "orange"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-extend-dotted-object-3.yaml 0000644 0000000 0000000 00000000160 14643451625 023707 0 ustar 00 apple:
type: "fruit"
skin: "thin"
color: "red"
orange:
type: "fruit"
skin: "thick"
color: "orange"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-1.toml 0000644 0000000 0000000 00000000014 14643451625 021005 0 ustar 00 flt1 = +1.0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-1.yaml 0000644 0000000 0000000 00000000012 14643451625 020772 0 ustar 00 flt1: 1.0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-10.toml 0000644 0000000 0000000 00000000037 14643451625 021072 0 ustar 00 sf1 = inf # positive infinity
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-10.yaml 0000644 0000000 0000000 00000000037 14643451625 021061 0 ustar 00 sf1: .inf # positive infinity
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-11.toml 0000644 0000000 0000000 00000000037 14643451625 021073 0 ustar 00 sf2 = +inf # positive infinity
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-11.yaml 0000644 0000000 0000000 00000000037 14643451625 021062 0 ustar 00 sf2: .inf # positive infinity
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-12.toml 0000644 0000000 0000000 00000000037 14643451625 021074 0 ustar 00 sf2 = -inf # negative infinity
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-12.yaml 0000644 0000000 0000000 00000000040 14643451625 021055 0 ustar 00 sf2: -.inf # negative infinity
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-13.toml 0000644 0000000 0000000 00000000102 14643451625 021066 0 ustar 00 sf4 = nan # actual sNaN/qNaN encoding is implementation specific
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-13.yaml 0000644 0000000 0000000 00000000102 14643451625 021055 0 ustar 00 sf4: .NAN # actual sNaN/qNaN encoding is implementation specific
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-14.toml 0000644 0000000 0000000 00000000033 14643451625 021072 0 ustar 00 sf5 = +nan # same as `nan`
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-14.yaml 0000644 0000000 0000000 00000000012 14643451625 021056 0 ustar 00 sf5: .nan
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-15.toml 0000644 0000000 0000000 00000000077 14643451625 021103 0 ustar 00 sf6 = -nan # valid, actual encoding is implementation specific
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-15.yaml 0000644 0000000 0000000 00000000012 14643451625 021057 0 ustar 00 sf6: .NAN
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-2.toml 0000644 0000000 0000000 00000000016 14643451625 021010 0 ustar 00 flt2 = 3.1415
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-2.yaml 0000644 0000000 0000000 00000000015 14643451625 020776 0 ustar 00 flt2: 3.1415
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-3.toml 0000644 0000000 0000000 00000000015 14643451625 021010 0 ustar 00 flt3 = -0.01
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-3.yaml 0000644 0000000 0000000 00000000014 14643451625 020776 0 ustar 00 flt3: -0.01
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-4.toml 0000644 0000000 0000000 00000000015 14643451625 021011 0 ustar 00 flt4 = 5e+22
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-4.yaml 0000644 0000000 0000000 00000000014 14643451625 020777 0 ustar 00 flt4: 5e+22
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-5.toml 0000644 0000000 0000000 00000000014 14643451625 021011 0 ustar 00 flt5 = 1e06
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-5.yaml 0000644 0000000 0000000 00000000012 14643451625 020776 0 ustar 00 flt5: 1e6
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-6.toml 0000644 0000000 0000000 00000000015 14643451625 021013 0 ustar 00 flt6 = -2E-2
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-6.yaml 0000644 0000000 0000000 00000000014 14643451625 021001 0 ustar 00 flt6: -2E-2
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-7.toml 0000644 0000000 0000000 00000000021 14643451625 021011 0 ustar 00 flt7 = 6.626e-34
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-7.yaml 0000644 0000000 0000000 00000000020 14643451625 020777 0 ustar 00 flt7: 6.626e-34
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-8.toml 0000644 0000000 0000000 00000000033 14643451625 021015 0 ustar 00 flt8 = 224_617.445_991_228
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-8.yaml 0000644 0000000 0000000 00000000031 14643451625 021002 0 ustar 00 flt8: 224_617.445_991_228 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-9.toml 0000644 0000000 0000000 00000000014 14643451625 021015 0 ustar 00 flt9 = -0e0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-float-9.yaml 0000644 0000000 0000000 00000000013 14643451625 021003 0 ustar 00 flt9: -0e0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-1.toml 0000644 0000000 0000000 00000000013 14643451625 020471 0 ustar 00 int1 = +99
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-1.yaml 0000644 0000000 0000000 00000000011 14643451625 020456 0 ustar 00 int1: 99
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-2.toml 0000644 0000000 0000000 00000000012 14643451625 020471 0 ustar 00 int2 = 42
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-2.yaml 0000644 0000000 0000000 00000000011 14643451625 020457 0 ustar 00 int2: 42
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-3.toml 0000644 0000000 0000000 00000000011 14643451625 020471 0 ustar 00 int3 = 0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-3.yaml 0000644 0000000 0000000 00000000010 14643451625 020457 0 ustar 00 int3: 0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-3a.toml 0000644 0000000 0000000 00000000012 14643451625 020633 0 ustar 00 int3 = +0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-3a.yaml 0000644 0000000 0000000 00000000010 14643451625 020620 0 ustar 00 int3: 0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-3b.toml 0000644 0000000 0000000 00000000012 14643451625 020634 0 ustar 00 int3 = -0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-3b.yaml 0000644 0000000 0000000 00000000010 14643451625 020621 0 ustar 00 int3: 0
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-4.toml 0000644 0000000 0000000 00000000013 14643451625 020474 0 ustar 00 int4 = -17
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-4.yaml 0000644 0000000 0000000 00000000012 14643451625 020462 0 ustar 00 int4: -17
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-5.toml 0000644 0000000 0000000 00000000015 14643451625 020477 0 ustar 00 int5 = 1_000
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-5.yaml 0000644 0000000 0000000 00000000014 14643451625 020465 0 ustar 00 int5: 1_000
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-6.toml 0000644 0000000 0000000 00000000021 14643451625 020475 0 ustar 00 int6 = 5_349_221
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-6.yaml 0000644 0000000 0000000 00000000020 14643451625 020463 0 ustar 00 int6: 5_349_221
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-7.toml 0000644 0000000 0000000 00000000055 14643451625 020505 0 ustar 00 int7 = 1_2_3_4_5 # VALID but discouraged
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-7.yaml 0000644 0000000 0000000 00000000054 14643451625 020473 0 ustar 00 int7: 1_2_3_4_5 # VALID but discouraged
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-bin1.toml 0000644 0000000 0000000 00000000022 14643451625 021162 0 ustar 00 bin1 = 0b11010110
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-bin1.yaml 0000644 0000000 0000000 00000000012 14643451625 021150 0 ustar 00 bin1: 214
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-hex1.toml 0000644 0000000 0000000 00000000022 14643451625 021176 0 ustar 00 hex1 = 0xDEADBEEF
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-hex1.yaml 0000644 0000000 0000000 00000000021 14643451625 021164 0 ustar 00 hex1: 3735928559
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-hex2.toml 0000644 0000000 0000000 00000000022 14643451625 021177 0 ustar 00 hex2 = 0xdeadbeef
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-hex2.yaml 0000644 0000000 0000000 00000000021 14643451625 021165 0 ustar 00 hex2: 3735928559
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-hex3.toml 0000644 0000000 0000000 00000000023 14643451625 021201 0 ustar 00 hex3 = 0xdead_beef
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-hex3.yaml 0000644 0000000 0000000 00000000021 14643451625 021166 0 ustar 00 hex3: 3735928559
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-max.json 0000644 0000000 0000000 00000000103 14643451625 021114 0 ustar 00 {
"max": {"type": "integer", "value": "9223372036854775807"}
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-max.toml 0000644 0000000 0000000 00000000036 14643451625 021123 0 ustar 00 max=9_223_372_036_854_775_807
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-min.json 0000644 0000000 0000000 00000000104 14643451625 021113 0 ustar 00 {
"min": {"type": "integer", "value": "-9223372036854775808"}
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-min.toml 0000644 0000000 0000000 00000000037 14643451625 021122 0 ustar 00 min=-9_223_372_036_854_775_808
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-oct1.toml 0000644 0000000 0000000 00000000022 14643451625 021177 0 ustar 00 oct1 = 0o01234567
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-oct1.yaml 0000644 0000000 0000000 00000000015 14643451625 021170 0 ustar 00 oct1: 342391
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-oct2.toml 0000644 0000000 0000000 00000000060 14643451625 021202 0 ustar 00 oct2 = 0o755 # useful for Unix file permissions
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-int-oct2.yaml 0000644 0000000 0000000 00000000012 14643451625 021166 0 ustar 00 oct2: 493
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-1.toml 0000644 0000000 0000000 00000000016 14643451625 022535 0 ustar 00 key = "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-1.yaml 0000644 0000000 0000000 00000000015 14643451625 022523 0 ustar 00 key: "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-2.toml 0000644 0000000 0000000 00000000023 14643451625 022534 0 ustar 00 bare_key = "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-2.yaml 0000644 0000000 0000000 00000000022 14643451625 022522 0 ustar 00 bare_key: "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-3.toml 0000644 0000000 0000000 00000000023 14643451625 022535 0 ustar 00 bare-key = "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-3.yaml 0000644 0000000 0000000 00000000022 14643451625 022523 0 ustar 00 bare-key: "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-4.toml 0000644 0000000 0000000 00000000017 14643451625 022541 0 ustar 00 1234 = "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-4.yaml 0000644 0000000 0000000 00000000020 14643451625 022522 0 ustar 00 "1234": "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-5.toml 0000644 0000000 0000000 00000000015 14643451625 022540 0 ustar 00 1234="value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-5.yaml 0000644 0000000 0000000 00000000020 14643451625 022523 0 ustar 00 "1234": "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-6.toml 0000644 0000000 0000000 00000000004 14643451625 022537 0 ustar 00 -=1
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-6.yaml 0000644 0000000 0000000 00000000006 14643451625 022530 0 ustar 00 "-": 1 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-7.toml 0000644 0000000 0000000 00000000004 14643451625 022540 0 ustar 00 _=1
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-7.yaml 0000644 0000000 0000000 00000000006 14643451625 022531 0 ustar 00 "_": 1 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-8.toml 0000644 0000000 0000000 00000000014 14643451625 022542 0 ustar 00 -_-_-_-_-=1
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-8.yaml 0000644 0000000 0000000 00000000016 14643451625 022533 0 ustar 00 "-_-_-_-_-": 1 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-9.toml 0000644 0000000 0000000 00000000017 14643451625 022546 0 ustar 00 3.14159 = "pi"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-key-value-pair-9.yaml 0000644 0000000 0000000 00000000021 14643451625 022530 0 ustar 00 3:
14159: "pi"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-newline-1.toml 0000644 0000000 0000000 00000000024 14643451625 021342 0 ustar 00 abc = 123
def = 456
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-newline-1.yaml 0000644 0000000 0000000 00000000022 14643451625 021327 0 ustar 00 abc: 123
def: 456
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-newline-2.toml 0000644 0000000 0000000 00000000026 14643451625 021345 0 ustar 00 abc = 123
def = 456
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-newline-2.yaml 0000644 0000000 0000000 00000000022 14643451625 021330 0 ustar 00 abc: 123
def: 456
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-newline-3.toml 0000644 0000000 0000000 00000000036 14643451625 021347 0 ustar 00 abc = 123
def = 456
ghi = 789 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-newline-3.yaml 0000644 0000000 0000000 00000000033 14643451625 021333 0 ustar 00 abc: 123
def: 456
ghi: 789
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.toml 0000644 0000000 0000000 00000000023 14643451625 023231 0 ustar 00 "ʎǝʞ" = "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.yaml 0000644 0000000 0000000 00000000022 14643451625 023217 0 ustar 00 "ʎǝʞ": "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.toml 0000644 0000000 0000000 00000000033 14643451625 023605 0 ustar 00 'quoted "value"' = "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.yaml 0000644 0000000 0000000 00000000032 14643451625 023573 0 ustar 00 'quoted "value"': "value"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-readme-example.toml 0000644 0000000 0000000 00000001041 14643451625 022431 0 ustar 00 # This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
# Indentation (tabs and/or spaces) is allowed but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-readme-example.yaml 0000644 0000000 0000000 00000000660 14643451625 022426 0 ustar 00 # This is a TOML document.
title: "TOML Example"
owner:
name: "Tom Preston-Werner"
dob: 1979-05-27T07:32:00-08:00 # First class dates
database:
server: "192.168.1.1"
ports: [ 8001, 8001, 8002 ]
connection_max: 5000
enabled: true
servers:
alpha:
ip: "10.0.0.1"
dc: "eqdc10"
beta:
ip: "10.0.0.2"
dc: "eqdc10"
clients:
data: [ ["gamma", "delta"], [1, 2] ]
hosts: [
"alpha",
"omega"
]
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-1.toml 0000644 0000000 0000000 00000000055 14643451625 024272 0 ustar 00 str1 = """
Roses are red
Violets are blue"""
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603541.042925
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-1.yaml 0000644 0000000 0000000 00000000050 14643451625 024254 0 ustar 00 str1: "Roses are red\nViolets are blue"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-2.toml 0000644 0000000 0000000 00000000106 14643451625 024270 0 ustar 00 str = """
The quick brown \
fox jumps over \
the lazy dog."""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-2.yaml 0000644 0000000 0000000 00000000064 14643451625 024262 0 ustar 00 str: "The quick brown fox jumps over the lazy dog."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-3.toml 0000644 0000000 0000000 00000000131 14643451625 024267 0 ustar 00 str = """\
The quick brown \
fox jumps over \
the lazy dog.\
"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-3.yaml 0000644 0000000 0000000 00000000064 14643451625 024263 0 ustar 00 str: "The quick brown fox jumps over the lazy dog."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-4.toml 0000644 0000000 0000000 00000000026 14643451625 024273 0 ustar 00 a = """abc\
def"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-4.yaml 0000644 0000000 0000000 00000000014 14643451625 024257 0 ustar 00 a: "abcdef"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-5.toml 0000644 0000000 0000000 00000000071 14643451625 024274 0 ustar 00 ml-escaped-nl = """
foo \
bar \\
baz \\\
quux"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-5.yaml 0000644 0000000 0000000 00000000054 14643451625 024264 0 ustar 00 ml-escaped-nl: " foo bar \\\n baz \\quux"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-6.toml 0000644 0000000 0000000 00000000076 14643451625 024302 0 ustar 00 str4 = """Here are two quotation marks: "". Simple enough."""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-6.yaml 0000644 0000000 0000000 00000000071 14643451625 024264 0 ustar 00 str4: 'Here are two quotation marks: "". Simple enough.'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-7.toml 0000644 0000000 0000000 00000000063 14643451625 024277 0 ustar 00 str5 = """Here are three quotation marks: ""\"."""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-7.yaml 0000644 0000000 0000000 00000000055 14643451625 024267 0 ustar 00 str5: 'Here are three quotation marks: """.'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-8.toml 0000644 0000000 0000000 00000000105 14643451625 024275 0 ustar 00 str6 = """Here are fifteen quotation marks: ""\"""\"""\"""\"""\"."""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-8.yaml 0000644 0000000 0000000 00000000073 14643451625 024270 0 ustar 00 str6: 'Here are fifteen quotation marks: """"""""""""""".'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-9.toml 0000644 0000000 0000000 00000000100 14643451625 024271 0 ustar 00 str7 = """"This," she said, "is just a pointless statement.""""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-multiline-9.yaml 0000644 0000000 0000000 00000000073 14643451625 024271 0 ustar 00 str7: '"This," she said, "is just a pointless statement."'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.toml 0000644 0000000 0000000 00000000032 14643451625 024673 0 ustar 00 str = """This is a tab"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.yaml 0000644 0000000 0000000 00000000026 14643451625 024665 0 ustar 00 str: "This is a\ttab"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-tab.toml 0000644 0000000 0000000 00000000026 14643451625 022676 0 ustar 00 str = "This is a tab"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic-tab.yaml 0000644 0000000 0000000 00000000026 14643451625 022665 0 ustar 00 str: "This is a\ttab"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic.toml 0000644 0000000 0000000 00000000113 14643451625 022127 0 ustar 00 str = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-basic.yaml 0000644 0000000 0000000 00000000112 14643451625 022115 0 ustar 00 str: "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-1.toml 0000644 0000000 0000000 00000000011 14643451625 022441 0 ustar 00 a = "\b"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-1.yaml 0000644 0000000 0000000 00000000010 14643451625 022427 0 ustar 00 a: "\b"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-2.toml 0000644 0000000 0000000 00000000011 14643451625 022442 0 ustar 00 a = "\t"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-2.yaml 0000644 0000000 0000000 00000000010 14643451625 022430 0 ustar 00 a: "\t"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-3.toml 0000644 0000000 0000000 00000000011 14643451625 022443 0 ustar 00 a = "\n"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-3.yaml 0000644 0000000 0000000 00000000010 14643451625 022431 0 ustar 00 a: "\n"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-4.toml 0000644 0000000 0000000 00000000011 14643451625 022444 0 ustar 00 a = "\f"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-4.yaml 0000644 0000000 0000000 00000000010 14643451625 022432 0 ustar 00 a: "\f"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-5.toml 0000644 0000000 0000000 00000000011 14643451625 022445 0 ustar 00 a = "\r"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-5.yaml 0000644 0000000 0000000 00000000010 14643451625 022433 0 ustar 00 a: "\r"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-6.toml 0000644 0000000 0000000 00000000011 14643451625 022446 0 ustar 00 a = "\""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-6.yaml 0000644 0000000 0000000 00000000010 14643451625 022434 0 ustar 00 a: "\""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-7.toml 0000644 0000000 0000000 00000000011 14643451625 022447 0 ustar 00 a = "\\"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-7.yaml 0000644 0000000 0000000 00000000010 14643451625 022435 0 ustar 00 a: "\\"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-8.toml 0000644 0000000 0000000 00000000015 14643451625 022454 0 ustar 00 a = "\u0000"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-8.yaml 0000644 0000000 0000000 00000000012 14643451625 022440 0 ustar 00 a: "\x00"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-9.toml 0000644 0000000 0000000 00000000021 14643451625 022452 0 ustar 00 a = "\U00000000"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-escape-9.yaml 0000644 0000000 0000000 00000000012 14643451625 022441 0 ustar 00 a: "\x00"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-1.toml 0000644 0000000 0000000 00000000047 14643451625 022646 0 ustar 00 winpath = 'C:\Users\nodejs\templates'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-1.yaml 0000644 0000000 0000000 00000000045 14643451625 022633 0 ustar 00 winpath: 'C:\Users\nodejs\templates'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-2.toml 0000644 0000000 0000000 00000000050 14643451625 022641 0 ustar 00 winpath2 = '\\ServerX\admin$\system32\'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-2.yaml 0000644 0000000 0000000 00000000047 14643451625 022636 0 ustar 00 winpath2: '\\ServerX\admin$\system32\'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-3.toml 0000644 0000000 0000000 00000000047 14643451625 022650 0 ustar 00 quoted = 'Tom "Dubs" Preston-Werner'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-3.yaml 0000644 0000000 0000000 00000000044 14643451625 022634 0 ustar 00 quoted: 'Tom "Dubs" Preston-Werner'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-4.toml 0000644 0000000 0000000 00000000030 14643451625 022641 0 ustar 00 regex = '<\i\c*\s*>'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-4.yaml 0000644 0000000 0000000 00000000024 14643451625 022633 0 ustar 00 regex: '<\i\c*\s*>'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-1.toml 0000644 0000000 0000000 00000000054 14643451625 024644 0 ustar 00 regex2 = '''I [dw]on't need \d{2} apples'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-1.yaml 0000644 0000000 0000000 00000000050 14643451625 024627 0 ustar 00 regex2: "I [dw]on't need \\d{2} apples"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-2.toml 0000644 0000000 0000000 00000000147 14643451625 024650 0 ustar 00 lines = '''
The first newline is
trimmed in raw strings.
All other whitespace
is preserved.
'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-2.yaml 0000644 0000000 0000000 00000000144 14643451625 024634 0 ustar 00 lines: "The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-3.toml 0000644 0000000 0000000 00000000101 14643451625 024637 0 ustar 00 quot15 = '''Here are fifteen quotation marks: """""""""""""""'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-3.yaml 0000644 0000000 0000000 00000000074 14643451625 024637 0 ustar 00 quot15: 'Here are fifteen quotation marks: """""""""""""""'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-4.toml 0000644 0000000 0000000 00000000064 14643451625 024650 0 ustar 00 str = ''''That,' she said, 'is still pointless.''''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-string-literal-multiline-4.yaml 0000644 0000000 0000000 00000000057 14643451625 024641 0 ustar 00 str: "'That,' she said, 'is still pointless.'"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-1.toml 0000644 0000000 0000000 00000000130 14643451625 020766 0 ustar 00 [table-1]
key1 = "some string"
key2 = 123
[table-2]
key1 = "another string"
key2 = 456
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-1.yaml 0000644 0000000 0000000 00000000131 14643451625 020756 0 ustar 00 table-1:
key1: "some string"
key2: 123
table-2:
key1: "another string"
key2: 456
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-2.toml 0000644 0000000 0000000 00000000044 14643451625 020773 0 ustar 00 [dog."tater.man"]
type.name = "pug"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-2.yaml 0000644 0000000 0000000 00000000060 14643451625 020760 0 ustar 00 dog:
"tater.man":
type:
name: "pug"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-3.toml 0000644 0000000 0000000 00000000010 14643451625 020765 0 ustar 00 [a.b.c]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-3.yaml 0000644 0000000 0000000 00000000022 14643451625 020757 0 ustar 00 a:
b:
c: {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-4.toml 0000644 0000000 0000000 00000000045 14643451625 020776 0 ustar 00 [ d.e.f ] # same as [d.e.f]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-4.yaml 0000644 0000000 0000000 00000000022 14643451625 020760 0 ustar 00 d:
e:
f: {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-5.toml 0000644 0000000 0000000 00000000045 14643451625 020777 0 ustar 00 [ g . h . i ] # same as [g.h.i]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-5.yaml 0000644 0000000 0000000 00000000022 14643451625 020761 0 ustar 00 g:
h:
i: {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-6.toml 0000644 0000000 0000000 00000000053 14643451625 020777 0 ustar 00 [ j . "ʞ" . 'l' ] # same as [j."ʞ".'l']
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-6.yaml 0000644 0000000 0000000 00000000025 14643451625 020765 0 ustar 00 j:
"ʞ":
l: {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-7.toml 0000644 0000000 0000000 00000000170 14643451625 021000 0 ustar 00 # [x] you
# [x.y] don't
# [x.y.z] need these
[x.y.z.w] # for this to work
[x] # defining a super-table afterwards is ok
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-7.yaml 0000644 0000000 0000000 00000000033 14643451625 020765 0 ustar 00 x:
y:
z:
w: {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-8.toml 0000644 0000000 0000000 00000000164 14643451625 021004 0 ustar 00 [fruit]
apple.color = "red"
apple.taste.sweet = true
[fruit.apple.texture] # you can add sub-tables
smooth = true
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-8.yaml 0000644 0000000 0000000 00000000136 14643451625 020772 0 ustar 00 fruit:
apple:
color: "red"
taste:
sweet: true
texture:
smooth: true
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-inline-1.toml 0000644 0000000 0000000 00000000062 14643451625 022246 0 ustar 00 name = { first = "Tom", last = "Preston-Werner" }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-inline-1.yaml 0000644 0000000 0000000 00000000057 14643451625 022241 0 ustar 00 name: { first: "Tom", last: "Preston-Werner" }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-inline-2.toml 0000644 0000000 0000000 00000000031 14643451625 022243 0 ustar 00 point = { x = 1, y = 2 }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-inline-2.yaml 0000644 0000000 0000000 00000000031 14643451625 022232 0 ustar 00 point: { x: 1, y: 2 }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-inline-3.toml 0000644 0000000 0000000 00000000040 14643451625 022244 0 ustar 00 animal = { type.name = "pug" }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table-inline-3.yaml 0000644 0000000 0000000 00000000045 14643451625 022240 0 ustar 00 animal: { type: { name: "pug" } }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table.toml 0000644 0000000 0000000 00000000010 14643451625 020625 0 ustar 00 [table]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-table.yaml 0000644 0000000 0000000 00000000012 14643451625 020616 0 ustar 00 table: {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-time-1.json 0000644 0000000 0000000 00000000103 14643451625 020633 0 ustar 00 {
"lt1": {
"type": "time",
"value": "07:32:00.000"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-time-1.toml 0000644 0000000 0000000 00000000017 14643451625 020641 0 ustar 00 lt1 = 07:32:00
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-time-2.json 0000644 0000000 0000000 00000000103 14643451625 020634 0 ustar 00 {
"lt2": {
"type": "time",
"value": "00:32:00.999"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/toml-spec-tests/values/spec-time-2.toml 0000644 0000000 0000000 00000000026 14643451625 020642 0 ustar 00 lt2 = 00:32:00.999999
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.4829323
tomlkit-0.13.0/tests/toml-test/.git 0000644 0000000 0000000 00000000053 14643451625 014072 0 ustar 00 gitdir: ../../.git/modules/tests/toml-test
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/.github/workflows/test.yml 0000644 0000000 0000000 00000001372 14643451626 020413 0 ustar 00 {
"name": "go test",
"on": ["push", "pull_request"],
"jobs": {
"test": {
"strategy": {
"matrix": {
"go-version": ["1.16.x"],
"os": ["ubuntu-latest", "macos-latest", "windows-latest"]
}
},
"runs-on": "${{ matrix.os }}",
"steps": [
{
"name": "Install Go",
"uses": "actions/setup-go@v2",
"with": {"go-version": "${{ matrix.go-version }}"}
},
{
"name": "Checkout code",
"uses": "actions/checkout@v2"
},
{
"name": "Test",
"run": "go test -v ./..."
},
{
"name": "Install",
"run": "go install -v ./cmd/toml-test"
}
]
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/.gitignore 0000644 0000000 0000000 00000000021 14643451626 015272 0 ustar 00 /dist
/toml-test
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/.gogo-release 0000644 0000000 0000000 00000000053 14643451626 015661 0 ustar 00 build_flags="$build_flags ./cmd/toml-test"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/COPYING 0000644 0000000 0000000 00000002067 14643451626 014351 0 ustar 00 The MIT License (MIT)
Copyright (c) 2018 TOML authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/README.md 0000644 0000000 0000000 00000021701 14643451626 014571 0 ustar 00 `toml-test` is a language-agnostic test suite to verify the correctness of
[TOML][t] parsers and writers.
Tests are divided into two groups: "invalid" and "valid". Decoders or encoders
that reject "invalid" tests pass the tests, and decoders that accept "valid"
tests and output precisely what is expected pass the tests. The output format is
JSON, described below.
Both encoders and decoders share valid tests, except an encoder accepts JSON and
outputs TOML rather than the reverse. The TOML representations are read with a
blessed decoder and is compared. Encoders have their own set of invalid tests in
the invalid-encoder directory. The JSON given to a TOML encoder is in the same
format as the JSON that a TOML decoder should output.
Compatible with TOML version [v1.0.0][v1].
[t]: https://toml.io
[v1]: https://toml.io/en/v1.0.0
Installation
------------
There are binaries on the [release page][r]; these are statically compiled and
should run in most environments. It's recommended you use a binary, or a tagged
release if you build from source especially in CI environments. This prevents
your tests from breaking on changes to tests in this tool.
To compile from source you will need Go 1.16 or newer (older versions will *not*
work):
$ git clone https://github.com/BurntSushi/toml-test.git
$ cd toml-test
$ go build ./cmd/toml-test
This will build a `./toml-test` binary.
[r]: https://github.com/BurntSushi/toml-test/releases
Usage
-----
`toml-test` accepts an encoder or decoder as the first positional argument, for
example:
$ toml-test my-toml-decoder
$ toml-test my-toml-encoder -encoder
The `-encoder` flag is used to signal that this is an encoder rather than a
decoder.
For example, to run the tests against the Go TOML library:
# Install my parser
$ go install github.com/BurntSushi/toml/cmd/toml-test-decoder@master
$ go install github.com/BurntSushi/toml/cmd/toml-test-encoder@master
$ toml-test toml-test-decoder
toml-test [toml-test-decoder]: using embeded tests: 278 passed
$ toml-test -encoder toml-test-encoder
toml-test [toml-test-encoder]: using embeded tests: 94 passed, 0 failed
The default is to use the tests compiled in the binary; you can use `-testdir`
to load tests from the filesystem. You can use `-run [name]` or `-skip [name]`
to run or skip specific tests. Both flags can be given more than once and accept
glob patterns: `-run 'valid/string/*'`.
See `toml-test -help` for detailed usage.
### Implementing a decoder
For your decoder to be compatible with `toml-test` it **must** satisfy the
expected interface:
- Your decoder **must** accept TOML data on `stdin` until EOF.
- If the TOML data is invalid, your decoder **must** return with a non-zero
exit, code indicating an error.
- If the TOML data is valid, your decoder **must** output a JSON encoding of
that data on `stdout` and return with a zero exit code indicating success.
An example in pseudocode:
toml_data = read_stdin()
parsed_toml = decode_toml(toml_data)
if error_parsing_toml():
print_error_to_stderr()
exit(1)
print_as_tagged_json(parsed_toml)
exit(0)
Details on the tagged JSON is explained below in "JSON encoding".
### Implementing an encoder
For your encoder to be compatible with `toml-test`, it **must** satisfy the
expected interface:
- Your encoder **must** accept JSON data on `stdin` until EOF.
- If the JSON data cannot be converted to a valid TOML representation, your
encoder **must** return with a non-zero exit code indicating an error.
- If the JSON data can be converted to a valid TOML representation, your encoder
**must** output a TOML encoding of that data on `stdout` and return with a
zero exit code indicating success.
An example in pseudocode:
json_data = read_stdin()
parsed_json_with_tags = decode_json(json_data)
if error_parsing_json():
print_error_to_stderr()
exit(1)
print_as_toml(parsed_json_with_tags)
exit(0)
JSON encoding
-------------
The following JSON encoding applies equally to both encoders and decoders:
- TOML tables correspond to JSON objects.
- TOML table arrays correspond to JSON arrays.
- TOML values correspond to a special JSON object of the form:
`{"type": "{TTYPE}", "value": {TVALUE}}`
In the above, `TTYPE` may be one of:
- string
- integer
- float
- bool
- datetime
- datetime-local
- date-local
- time-local
`TVALUE` is always a JSON string.
Empty hashes correspond to empty JSON objects (`{}`) and empty arrays correspond
to empty JSON arrays (`[]`).
Offset datetimes should be encoded in RFC 3339; Local datetimes should be
encoded following RFC 3339 without the offset part. Local dates should be
encoded as the date part of RFC 3339 and Local times as the time part.
Examples:
TOML JSON
a = 42 {"type": "integer": "value": "42}
---
[tbl] {"tbl": {
a = 42 "a": {"type": "integer": "value": "42}
}}
---
a = ["a", 2] {"a": [
{"type": "string", "value": "1"},
{"type: "integer": "value": "2"}
]}
Or a more complex example:
```toml
best-day-ever = 1987-07-05T17:45:00Z
[numtheory]
boring = false
perfection = [6, 28, 496]
```
And the JSON encoding expected by `toml-test` is:
```json
{
"best-day-ever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"},
"numtheory": {
"boring": {"type": "bool", "value": "false"},
"perfection": [
{"type": "integer", "value": "6"},
{"type": "integer", "value": "28"},
{"type": "integer", "value": "496"}
]
}
}
```
Note that the only JSON values ever used are objects, arrays and strings.
An example implementation can be found in the BurnSushi/toml:
- [Add tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/add.go)
- [Remove tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/rm.go)
Assumptions of Truth
--------------------
The following are taken as ground truths by `toml-test`:
- All tests classified as `invalid` **are** invalid.
- All tests classified as `valid` **are** valid.
- All expected outputs in `valid/test-name.json` are exactly correct.
- The Go standard library package `encoding/json` decodes JSON correctly.
- When testing encoders, the TOML decoder at
[BurntSushi/toml](https://github.com/BurntSushi/toml) is assumed to be
correct. (Note that this assumption is not made when testing decoders!)
Of particular note is that **no TOML decoder** is taken as ground truth when
testing decoders. This means that most changes to the spec will only require an
update of the tests in `toml-test`. (Bigger changes may require an adjustment of
how two things are considered equal. Particularly if a new type of data is
added.) Obviously, this advantage does not apply to testing TOML encoders since
there must exist a TOML decoder that conforms to the specification in order to
read the output of a TOML encoder.
Adding tests
------------
`toml-test` was designed so that tests can be easily added and removed. As
mentioned above, tests are split into two groups: invalid and valid tests.
Invalid tests **only check if a decoder rejects invalid TOML data**. Or, in the
case of testing encoders, invalid tests **only check if an encoder rejects an
invalid representation of TOML** (e.g., a hetergeneous array). Therefore, all
invalid tests should try to **test one thing and one thing only**. Invalid tests
should be named after the fault it is trying to expose. Invalid tests for
decoders are in the `tests/invalid` directory while invalid tests for encoders
are in the `tests/invalid-encoder` directory.
Valid tests check that a decoder accepts valid TOML data **and** that the parser
has the correct representation of the TOML data. Therefore, valid tests need a
JSON encoding in addition to the TOML data. The tests should be small enough
that writing the JSON encoding by hand will not give you brain damage. The exact
reverse is true when testing encoders.
A valid test without either a `.json` or `.toml` file will automatically fail.
If you have tests that you'd like to add, please submit a pull request.
Why JSON?
---------
In order for a language agnostic test suite to work, we need some kind of data
exchange format. TOML cannot be used, as it would imply that a particular parser
has a blessing of correctness.
My decision to use JSON was not a careful one. It was based on expediency. The
Go standard library has an excellent `encoding/json` package built in, which
made it easy to compare JSON data.
The problem with JSON is that the types in TOML are not in one-to-one
correspondence with JSON. This is why every TOML value represented in JSON is
tagged with a type annotation, as described above.
YAML may be closer in correspondence with TOML, but I don't believe we should
rely on that correspondence. Making things explicit with JSON means that writing
tests is a little more cumbersome, but it also reduces the number of assumptions
we need to make.
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/cmd/toml-test/main.go 0000644 0000000 0000000 00000010756 14643451626 017270 0 ustar 00 package main
import (
"fmt"
"io/fs"
"os"
"path/filepath"
"strings"
tomltest "github.com/BurntSushi/toml-test"
"zgo.at/zli"
)
var hlErr = zli.ColorHex("#f6d6d6").Bg() | zli.Black | zli.Bold
var version = "git"
func parseFlags() (tomltest.Runner, []string, int, string) {
f := zli.NewFlags(os.Args)
var (
help = f.Bool(false, "help", "h")
versionFlag = f.Bool(false, "version", "V")
encoder = f.Bool(false, "encoder")
testDir = f.String("", "testdir")
showAll = f.IntCounter(0, "v")
color = f.String("always", "color")
skip = f.StringList(nil, "skip")
run = f.StringList(nil, "run")
)
zli.F(f.Parse())
if help.Bool() {
fmt.Printf(usage, filepath.Base(os.Args[0]))
zli.Exit(0)
}
if versionFlag.Bool() {
fmt.Println(version)
zli.Exit(0)
}
r := tomltest.Runner{
Encoder: encoder.Bool(),
RunTests: run.StringsSplit(","),
SkipTests: skip.StringsSplit(","),
}
if len(f.Args) == 0 {
zli.Fatalf("no parser command")
}
for _, r := range r.RunTests {
_, err := filepath.Match(r, "")
if err != nil {
zli.Fatalf("invalid glob pattern %q in -run: %s", r, err)
}
}
for _, r := range r.SkipTests {
_, err := filepath.Match(r, "")
if err != nil {
zli.Fatalf("invalid glob pattern %q in -skip: %s", r, err)
}
}
r.Files = tomltest.EmbeddedTests()
if testDir.Set() {
r.Files = os.DirFS(testDir.String())
// So I used the path to toml-dir a few times, be forgiving by looking
// for a "tests" directory and sub-ing to that.
ls, err := fs.ReadDir(r.Files, ".")
zli.F(err)
var f, t int
for _, l := range ls {
if l.IsDir() && (l.Name() == "valid" || l.Name() == "invalid") {
f++
}
if l.IsDir() && l.Name() == "tests" {
t++
}
}
if f < 2 {
if t == 0 {
zli.Fatalf("%q does not seem to contain any tests (no valid and/or invalid directory)", testDir)
}
r.Files, err = fs.Sub(r.Files, "tests")
zli.F(err)
}
}
r.Parser = tomltest.NewCommandParser(r.Files, f.Args)
switch color.String() {
case "always", "yes":
zli.WantColor = true
case "never", "no":
zli.WantColor = false
case "bold", "monochrome":
zli.WantColor = true
hlErr = zli.Bold
default:
zli.Fatalf("invalid value for -color: %q", color)
}
return r, f.Args, showAll.Int(), testDir.String()
}
func main() {
runner, cmd, showAll, testDir := parseFlags()
tests, err := runner.Run()
zli.F(err)
for _, t := range tests.Tests {
if t.Failed() || showAll > 1 {
fmt.Print(detailed(runner, t))
} else if showAll == 1 {
fmt.Print(short(runner, t))
}
}
fmt.Printf("toml-test %s: ", cmd)
if testDir == "" {
fmt.Print("using embeded tests: ")
} else {
fmt.Printf("tests from %q: ", testDir)
}
fmt.Printf("%3d passed, %2d failed", tests.Passed, tests.Failed)
if tests.Skipped > 0 {
fmt.Printf(", %2d skipped", tests.Skipped)
}
fmt.Println()
if tests.Failed > 0 {
zli.Exit(1)
}
zli.Exit(0)
}
func short(r tomltest.Runner, t tomltest.Test) string {
b := new(strings.Builder)
switch {
case t.Failure != "":
b.WriteString(zli.Colorf("FAIL", hlErr))
b.WriteByte(' ')
b.WriteString(zli.Bold.String())
b.WriteString(t.Path)
b.WriteString(zli.Reset.String())
case t.Skipped:
b.WriteString(hlErr.String())
b.WriteString("SKIP")
b.WriteString(zli.Reset.String())
b.WriteByte(' ')
b.WriteString(t.Path)
default:
b.WriteString("PASS ")
b.WriteString(t.Path)
}
b.WriteByte('\n')
return b.String()
}
func detailed(r tomltest.Runner, t tomltest.Test) string {
b := new(strings.Builder)
b.WriteString(short(r, t))
if t.Failed() {
b.WriteString(indentWith(
indent(t.Failure, 4),
zli.Colorf(" ", hlErr)))
b.WriteByte('\n')
}
showStream(b, "input sent to parser-cmd", t.Input)
if t.OutputFromStderr {
showStream(b, "output from parser-cmd (stderr)", t.Output)
} else {
showStream(b, "output from parser-cmd (stdout)", t.Output)
}
if t.Type() == tomltest.TypeValid {
showStream(b, "want", t.Want)
} else {
showStream(b, "want", "Exit code 1")
}
b.WriteByte('\n')
return b.String()
}
func showStream(b *strings.Builder, name, s string) {
b.WriteByte('\n')
fmt.Fprintln(b, zli.Colorf(" "+name+":", zli.Bold))
if s == "" {
fmt.Fprintln(b, " ")
return
}
fmt.Fprintln(b, indent(s, 7))
}
func indentWith(s, with string) string {
return with + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+with)
}
func indent(s string, n int) string {
sp := strings.Repeat(" ", n)
return sp + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+sp)
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/cmd/toml-test/usage.go 0000644 0000000 0000000 00000006602 14643451626 017443 0 ustar 00 package main
const usage = `Usage: %[1]s parser-cmd [ parser-cmd-flags ]
toml-test is a tool to verify the correctness of TOML parsers and writers.
https://github.com/BurntSushi/toml-test
The parser-cmd positional argument should be a program that accepts TOML data
on stdin until EOF, and is expected to write the corresponding JSON encoding on
stdout. Please see 'README.md' for details on how to satisfy the interface
expected by 'toml-test' with your own parser.
Any positional arguments are use as the parser-cmd; to pass flags, remember to
stop toml-test's flag parsing with --
$ %[1]s -- my-parser -x -y
There are two tests:
decoder This is the default.
encoder When -encoder is given.
Tests are split in to two groups:
valid Valid TOML files
invalid Invalid TOML files that should be rejected with an error.
invalid-encoder Invalid input for the encoder
All tests are referred to relative to to the tests/ directory: valid/dir/name or
invalid/dir/name.
Flags:
-help Show this help and exit.
-version Show version and exit.
-encoder The given parser-cmd will be tested as a TOML encoder.
The parser-cmd will be sent JSON on stdin and is expected to
write TOML to stdout. The JSON will be in the same format as
specified in the toml-test README. Note that this depends on the
correctness of my TOML parser!
-v List all tests, even passing ones. Add twice to show detailed
output for passing tests.
-run Specify a list of tests to run; the default is to run all tests.
Test names include the directory, i.e. "valid/test-name" or
"invalid/test-name". You can use globbing patterns , for example
to run all string tests:
$ toml-test toml-test-decoder -run 'valid/string*'
You can specify this argument more than once, and/or specify
multiple tests by separating them with a comma:
$ toml-test toml-test-decoder \
-run valid/string-empty \
-run valid/string-nl,valid/string-simple
This will run three tests (string-empty, string-nl,
string-simple).
Globbing patterns: https://pkg.go.dev/path/filepath#Match
-skip Tests to skip, this uses the same syntax as the -run flag.
-color Output color; possible values:
always Show test failures in bold and red (default).
bold Show test failures in bold only.
never Never output any escape codes.
-testdir Location of the tests; the default is to use the tests compiled
in the binary; this is only useful if you want to add or modify
tests.
A test in the invalid directory is a toml file that is known to
be invalid and should be rejected by the parser.
A test in the valid directory is a toml and json file with the
same name, where the json file is the JSON representation of the
TOML file according to the syntax described in the README.
For encoders, the same directory scheme above is used, except
the invalid-encoder directory is used instead of the invalid
directory.
`
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/gen-multi.py 0000755 0000000 0000000 00000000606 14643451626 015571 0 ustar 00 #!/usr/bin/env python3
import glob
import os.path
for f in glob.glob('tests/invalid/*/*.multi'):
base = os.path.dirname(f[:-6])
for l in open(f, 'rb').readlines():
name = l.split(b'=')[0].strip().decode()
if name == '' or name[0] == '#':
continue
path = base + "/" + name + '.toml'
with open(path, 'wb+') as fp:
fp.write(l)
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/go.mod 0000644 0000000 0000000 00000000314 14643451626 014415 0 ustar 00 module github.com/BurntSushi/toml-test
go 1.16
require (
github.com/BurntSushi/toml v0.4.0
// no_term branch, which doesn't depend on x/term and x/sys
zgo.at/zli v0.0.0-20210619044753-e7020a328e59
)
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/go.sum 0000644 0000000 0000000 00000002472 14643451626 014451 0 ustar 00 github.com/BurntSushi/toml v0.3.2-0.20210614224209-34d990aa228d/go.mod h1:2QZjSXA5e+XyFeCAxxtL8Z4StYUsTquL8ODGPR3C3MA=
github.com/BurntSushi/toml v0.3.2-0.20210621044154-20a94d639b8e/go.mod h1:t4zg8TkHfP16Vb3x4WKIw7zVYMit5QFtPEO8lOWxzTg=
github.com/BurntSushi/toml v0.3.2-0.20210624061728-01bfc69d1057/go.mod h1:NMj2lD5LfMqcE0w8tnqOsH6944oaqpI1974lrIwerfE=
github.com/BurntSushi/toml v0.3.2-0.20210704081116-ccff24ee4463/go.mod h1:EkRrMiQQmfxK6kIldz3QbPlhmVkrjW1RDJUnbDqGYvc=
github.com/BurntSushi/toml v0.4.0 h1:qD/r9AL67srjW6O3fcSKZDsXqzBNX6ieSRywr2hRrdE=
github.com/BurntSushi/toml v0.4.0/go.mod h1:wtejDu7Q0FhCWAo2aXkywSJyYFg01EDTKozLNCz2JBA=
github.com/BurntSushi/toml-test v0.1.1-0.20210620192437-de01089bbf76/go.mod h1:P/PrhmZ37t5llHfDuiouWXtFgqOoQ12SAh9j6EjrBR4=
github.com/BurntSushi/toml-test v0.1.1-0.20210624055653-1f6389604dc6/go.mod h1:UAIt+Eo8itMZAAgImXkPGDMYsT1SsJkVdB5TuONl86A=
github.com/BurntSushi/toml-test v0.1.1-0.20210704062846-269931e74e3f/go.mod h1:fnFWrIwqgHsEjVsW3RYCJmDo86oq9eiJ9u6bnqhtm2g=
github.com/BurntSushi/toml-test v0.1.1-0.20210723065233-facb9eccd4da/go.mod h1:ve9Q/RRu2vHi42LocPLNvagxuUJh993/95b18bw/Nws=
zgo.at/zli v0.0.0-20210619044753-e7020a328e59 h1:NId7flXh2TTB7XD/0/WBTuZ8L5mpNMCdYyqJ/VQIlFM=
zgo.at/zli v0.0.0-20210619044753-e7020a328e59/go.mod h1:HLAc12TjNGT+VRXr76JnsNE3pbooQtwKWhX+RlDjQ2Y=
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/json.go 0000644 0000000 0000000 00000015051 14643451626 014613 0 ustar 00 package tomltest
import (
"strconv"
"strings"
"time"
)
// cmpJSON consumes the recursive structure of both want and have
// simultaneously. If anything is unequal, the result has failed and comparison
// stops.
//
// reflect.DeepEqual could work here, but it won't tell us how the two
// structures are different.
func (r Test) cmpJSON(want, have interface{}) Test {
switch w := want.(type) {
case map[string]interface{}:
return r.cmpJSONMaps(w, have)
case []interface{}:
return r.cmpJSONArrays(w, have)
default:
return r.fail(
"Key '%s' in expected output should be a map or a list of maps, but it's a %T",
r.Key, want)
}
}
func (r Test) cmpJSONMaps(want map[string]interface{}, have interface{}) Test {
haveMap, ok := have.(map[string]interface{})
if !ok {
return r.mismatch("table", want, haveMap)
}
// Check to make sure both or neither are values.
if isValue(want) && !isValue(haveMap) {
return r.fail(
"Key '%s' is supposed to be a value, but the parser reports it as a table",
r.Key)
}
if !isValue(want) && isValue(haveMap) {
return r.fail(
"Key '%s' is supposed to be a table, but the parser reports it as a value",
r.Key)
}
if isValue(want) && isValue(haveMap) {
return r.cmpJSONValues(want, haveMap)
}
// Check that the keys of each map are equivalent.
for k := range want {
if _, ok := haveMap[k]; !ok {
bunk := r.kjoin(k)
return bunk.fail("Could not find key '%s' in parser output.",
bunk.Key)
}
}
for k := range haveMap {
if _, ok := want[k]; !ok {
bunk := r.kjoin(k)
return bunk.fail("Could not find key '%s' in expected output.",
bunk.Key)
}
}
// Okay, now make sure that each value is equivalent.
for k := range want {
if sub := r.kjoin(k).cmpJSON(want[k], haveMap[k]); sub.Failed() {
return sub
}
}
return r
}
func (r Test) cmpJSONArrays(want, have interface{}) Test {
wantSlice, ok := want.([]interface{})
if !ok {
return r.bug("'value' should be a JSON array when 'type=array', but it is a %T", want)
}
haveSlice, ok := have.([]interface{})
if !ok {
return r.fail(
"Malformed output from your encoder: 'value' is not a JSON array: %T", have)
}
if len(wantSlice) != len(haveSlice) {
return r.fail("Array lengths differ for key '%s':\n"+
" Expected: %d\n"+
" Your encoder: %d",
r.Key, len(wantSlice), len(haveSlice))
}
for i := 0; i < len(wantSlice); i++ {
if sub := r.cmpJSON(wantSlice[i], haveSlice[i]); sub.Failed() {
return sub
}
}
return r
}
func (r Test) cmpJSONValues(want, have map[string]interface{}) Test {
wantType, ok := want["type"].(string)
if !ok {
return r.bug("'type' should be a string, but it is a %T", want["type"])
}
haveType, ok := have["type"].(string)
if !ok {
return r.fail("Malformed output from your encoder: 'type' is not a string: %T", have["type"])
}
if wantType != haveType {
return r.valMismatch(wantType, haveType, want, have)
}
// If this is an array, then we've got to do some work to check equality.
if wantType == "array" {
return r.cmpJSONArrays(want, have)
}
// Atomic values are always strings
wantVal, ok := want["value"].(string)
if !ok {
return r.bug("'value' %v should be a string, but it is a %[1]T", want["value"])
}
haveVal, ok := have["value"].(string)
if !ok {
return r.fail("Malformed output from your encoder: %T is not a string", have["value"])
}
// Excepting floats and datetimes, other values can be compared as strings.
switch wantType {
case "float":
return r.cmpFloats(wantVal, haveVal)
case "datetime", "datetime-local", "date-local", "time-local":
return r.cmpAsDatetimes(wantType, wantVal, haveVal)
default:
return r.cmpAsStrings(wantVal, haveVal)
}
}
func (r Test) cmpAsStrings(want, have string) Test {
if want != have {
return r.fail("Values for key '%s' don't match:\n"+
" Expected: %s\n"+
" Your encoder: %s",
r.Key, want, have)
}
return r
}
func (r Test) cmpFloats(want, have string) Test {
// Special case for NaN, since NaN != NaN.
if strings.HasSuffix(want, "nan") || strings.HasSuffix(have, "nan") {
if want != have {
return r.fail("Values for key '%s' don't match:\n"+
" Expected: %v\n"+
" Your encoder: %v",
r.Key, want, have)
}
return r
}
wantF, err := strconv.ParseFloat(want, 64)
if err != nil {
return r.bug("Could not read '%s' as a float value for key '%s'", want, r.Key)
}
haveF, err := strconv.ParseFloat(have, 64)
if err != nil {
return r.fail("Malformed output from your encoder: key '%s' is not a float: '%s'", r.Key, have)
}
if wantF != haveF {
return r.fail("Values for key '%s' don't match:\n"+
" Expected: %v\n"+
" Your encoder: %v",
r.Key, wantF, haveF)
}
return r
}
var datetimeRepl = strings.NewReplacer(
" ", "T",
"t", "T",
"z", "Z")
var layouts = map[string]string{
"datetime": time.RFC3339Nano,
"datetime-local": "2006-01-02T15:04:05.999999999",
"date-local": "2006-01-02",
"time-local": "15:04:05",
}
func (r Test) cmpAsDatetimes(kind, want, have string) Test {
layout, ok := layouts[kind]
if !ok {
panic("should never happen")
}
wantT, err := time.Parse(layout, datetimeRepl.Replace(want))
if err != nil {
return r.bug("Could not read '%s' as a datetime value for key '%s'", want, r.Key)
}
haveT, err := time.Parse(layout, datetimeRepl.Replace(want))
if err != nil {
return r.fail("Malformed output from your encoder: key '%s' is not a datetime: '%s'", r.Key, have)
}
if !wantT.Equal(haveT) {
return r.fail("Values for key '%s' don't match:\n"+
" Expected: %v\n"+
" Your encoder: %v",
r.Key, wantT, haveT)
}
return r
}
func (r Test) cmpAsDatetimesLocal(want, have string) Test {
if datetimeRepl.Replace(want) != datetimeRepl.Replace(have) {
return r.fail("Values for key '%s' don't match:\n"+
" Expected: %v\n"+
" Your encoder: %v",
r.Key, want, have)
}
return r
}
func (r Test) kjoin(key string) Test {
if len(r.Key) == 0 {
r.Key = key
} else {
r.Key += "." + key
}
return r
}
func isValue(m map[string]interface{}) bool {
if len(m) != 2 {
return false
}
if _, ok := m["type"]; !ok {
return false
}
if _, ok := m["value"]; !ok {
return false
}
return true
}
func (r Test) mismatch(wantType string, want, have interface{}) Test {
return r.fail("Key '%s' is not an %s but %[4]T:\n"+
" Expected: %#[3]v\n"+
" Your encoder: %#[4]v",
r.Key, wantType, want, have)
}
func (r Test) valMismatch(wantType, haveType string, want, have interface{}) Test {
return r.fail("Key '%s' is not an %s but %s:\n"+
" Expected: %#[3]v\n"+
" Your encoder: %#[4]v",
r.Key, wantType, want, have)
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/runner.go 0000644 0000000 0000000 00000022656 14643451626 015164 0 ustar 00 //go:generate ./gen-multi.py
package tomltest
import (
"bytes"
"embed"
"encoding/json"
"errors"
"fmt"
"io/fs"
"os"
"os/exec"
"path/filepath"
"strings"
"github.com/BurntSushi/toml"
)
type testType uint8
const (
TypeValid testType = iota
TypeInvalid
)
//go:embed tests/*
var embeddedTests embed.FS
// EmbeddedTests are the tests embedded in toml-test, rooted to the "test/"
// directory.
func EmbeddedTests() fs.FS {
f, err := fs.Sub(embeddedTests, "tests")
if err != nil {
panic(err)
}
return f
}
// Runner runs a set of tests.
//
// The validity of the parameters is not checked extensively; the caller should
// verify this if need be. See ./cmd/toml-test for an example.
type Runner struct {
Files fs.FS // Test files.
Encoder bool // Are we testing an encoder?
RunTests []string // Tests to run; run all if blank.
SkipTests []string // Tests to skip.
Parser Parser // Send data to a parser.
}
// A Parser instance is used to call the TOML parser we test.
//
// By default this is done through an external command.
type Parser interface {
// Encode a JSON string to TOML.
//
// The output is the TOML string; if outputIsError is true then it's assumed
// that an encoding error occurred.
//
// An error return should only be used in case an unrecoverable error
// occurred; failing to encode to TOML is not an error, but the encoder
// unexpectedly panicking is.
Encode(jsonInput string) (output string, outputIsError bool, err error)
// Decode a TOML string to JSON. The same semantics as Encode apply.
Decode(tomlInput string) (output string, outputIsError bool, err error)
}
// CommandParser calls an external command.
type CommandParser struct {
fsys fs.FS
cmd []string
}
// Tests are tests to run.
type Tests struct {
Tests []Test
// Set when test are run.
Skipped, Passed, Failed int
}
// Result is the result of a single test.
type Test struct {
Path string // Path of test, e.g. "valid/string-test"
// Set when a test is run.
Skipped bool // Skipped this test?
Failure string // Failure message.
Key string // TOML key the failure occured on; may be blank.
Encoder bool // Encoder test?
Input string // The test case that we sent to the external program.
Output string // Output from the external program.
Want string // The output we want.
OutputFromStderr bool // The Output came from stderr, not stdout.
}
// List all tests in Files.
func (r Runner) List() ([]string, error) {
ls := make([]string, 0, 256)
if err := r.findTOML("valid", &ls); err != nil {
return nil, fmt.Errorf("reading 'valid/' dir: %w", err)
}
d := "invalid" + map[bool]string{true: "-encoder", false: ""}[r.Encoder]
if err := r.findTOML(d, &ls); err != nil {
return nil, fmt.Errorf("reading %q dir: %w", d, err)
}
return ls, nil
}
// Run all tests listed in t.RunTests.
//
// TODO: give option to:
// - Run all tests with \n replaced with \r\n
// - Run all tests with '# comment' appended to every line.
func (r Runner) Run() (Tests, error) {
skipped, err := r.findTests()
if err != nil {
return Tests{}, fmt.Errorf("tomltest.Runner.Run: %w", err)
}
tests := Tests{Tests: make([]Test, 0, len(r.RunTests)), Skipped: skipped}
for _, p := range r.RunTests {
if r.hasSkip(p) {
tests.Skipped++
tests.Tests = append(tests.Tests, Test{Path: p, Skipped: true, Encoder: r.Encoder})
continue
}
t := Test{Path: p, Encoder: r.Encoder}.Run(r.Parser, r.Files)
tests.Tests = append(tests.Tests, t)
if t.Failed() {
tests.Failed++
} else {
tests.Passed++
}
}
return tests, nil
}
// find all TOML files in 'path' relative to the test directory.
func (r Runner) findTOML(path string, appendTo *[]string) error {
err := fs.WalkDir(r.Files, path, func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if d.IsDir() || !strings.HasSuffix(path, ".toml") {
return nil
}
*appendTo = append(*appendTo, strings.TrimSuffix(path, ".toml"))
return nil
})
// It's okay if the directory doesn't exist.
var pErr *os.PathError
if errors.As(err, &pErr) && pErr.Op == "open" && pErr.Path == path {
return nil
}
return err
}
// Expand RunTest glob patterns, or return all tests if RunTests if empty.
func (r *Runner) findTests() (int, error) {
ls, err := r.List()
if err != nil {
return 0, err
}
var skip int
if len(r.RunTests) == 0 {
r.RunTests = ls
} else {
run := make([]string, 0, len(r.RunTests))
for _, l := range ls {
for _, r := range r.RunTests {
if m, _ := filepath.Match(r, l); m {
run = append(run, l)
break
}
}
}
r.RunTests, skip = run, len(ls)-len(run)
}
// Expand invalid tests ending in ".multi.toml"
expanded := make([]string, 0, len(r.RunTests))
for _, path := range r.RunTests {
if !strings.HasSuffix(path, ".multi") {
expanded = append(expanded, path)
continue
}
d, err := fs.ReadFile(r.Files, path+".toml")
if err != nil {
return 0, err
}
fmt.Println(string(d))
}
r.RunTests = expanded
return skip, nil
}
func (r Runner) hasSkip(path string) bool {
for _, s := range r.SkipTests {
if m, _ := filepath.Match(s, path); m {
return true
}
}
return false
}
func (c CommandParser) Encode(input string) (output string, outputIsError bool, err error) {
stdout, stderr := new(bytes.Buffer), new(bytes.Buffer)
cmd := exec.Command(c.cmd[0])
cmd.Args = c.cmd
cmd.Stdin, cmd.Stdout, cmd.Stderr = strings.NewReader(input), stdout, stderr
err = cmd.Run()
if err != nil {
eErr := &exec.ExitError{}
if errors.As(err, &eErr) {
fmt.Fprintf(stderr, "\nExit %d\n", eErr.ProcessState.ExitCode())
err = nil
}
}
if stderr.Len() > 0 {
return strings.TrimSpace(stderr.String()) + "\n", true, err
}
return strings.TrimSpace(stdout.String()) + "\n", false, err
}
func NewCommandParser(fsys fs.FS, cmd []string) CommandParser { return CommandParser{fsys, cmd} }
func (c CommandParser) Decode(input string) (string, bool, error) { return c.Encode(input) }
// Run this test.
func (t Test) Run(p Parser, fsys fs.FS) Test {
if t.Type() == TypeInvalid {
return t.runInvalid(p, fsys)
}
return t.runValid(p, fsys)
}
func (t Test) runInvalid(p Parser, fsys fs.FS) Test {
var err error
_, t.Input, err = t.ReadInput(fsys)
if err != nil {
return t.bug(err.Error())
}
if t.Encoder {
t.Output, t.OutputFromStderr, err = p.Encode(t.Input)
} else {
t.Output, t.OutputFromStderr, err = p.Decode(t.Input)
}
if err != nil {
return t.fail(err.Error())
}
if !t.OutputFromStderr {
return t.fail("Expected an error, but no error was reported.")
}
return t
}
func (t Test) runValid(p Parser, fsys fs.FS) Test {
var err error
_, t.Input, err = t.ReadInput(fsys)
if err != nil {
return t.bug(err.Error())
}
if t.Encoder {
t.Output, t.OutputFromStderr, err = p.Encode(t.Input)
} else {
t.Output, t.OutputFromStderr, err = p.Decode(t.Input)
}
if err != nil {
return t.fail(err.Error())
}
if t.OutputFromStderr {
return t.fail(t.Output)
}
if t.Output == "" {
// Special case: we expect an empty output here.
if t.Path != "valid/empty-file" {
return t.fail("stdout is empty")
}
}
// Compare for encoder test
if t.Encoder {
want, err := t.ReadWantTOML(fsys)
if err != nil {
return t.bug(err.Error())
}
var have interface{}
if _, err := toml.Decode(t.Output, &have); err != nil {
//return t.fail("decode TOML from encoder %q:\n %s", cmd, err)
return t.fail("decode TOML from encoder:\n %s", err)
}
return t.cmpTOML(want, have)
}
// Compare for decoder test
want, err := t.ReadWantJSON(fsys)
if err != nil {
return t.fail(err.Error())
}
var have interface{}
if err := json.Unmarshal([]byte(t.Output), &have); err != nil {
return t.fail("decode JSON output from parser:\n %s", err)
}
return t.cmpJSON(want, have)
}
// ReadInput reads the file sent to the encoder.
func (t Test) ReadInput(fsys fs.FS) (path, data string, err error) {
path = t.Path + map[bool]string{true: ".json", false: ".toml"}[t.Encoder]
d, err := fs.ReadFile(fsys, path)
if err != nil {
return path, "", err
}
return path, string(d), nil
}
func (t Test) ReadWant(fsys fs.FS) (path, data string, err error) {
if t.Type() == TypeInvalid {
panic("testoml.Test.ReadWant: invalid tests do not have a 'correct' version")
}
path = t.Path + map[bool]string{true: ".toml", false: ".json"}[t.Encoder]
d, err := fs.ReadFile(fsys, path)
if err != nil {
return path, "", err
}
return path, string(d), nil
}
func (t *Test) ReadWantJSON(fsys fs.FS) (v interface{}, err error) {
var path string
path, t.Want, err = t.ReadWant(fsys)
if err != nil {
return nil, err
}
if err := json.Unmarshal([]byte(t.Want), &v); err != nil {
return nil, fmt.Errorf("decode JSON file %q:\n %s", path, err)
}
return v, nil
}
func (t *Test) ReadWantTOML(fsys fs.FS) (v interface{}, err error) {
var path string
path, t.Want, err = t.ReadWant(fsys)
if err != nil {
return nil, err
}
_, err = toml.Decode(t.Want, &v)
if err != nil {
return nil, fmt.Errorf("Could not decode TOML file %q:\n %s", path, err)
}
return v, nil
}
// Test type: "valid", "invalid"
func (t Test) Type() testType {
if strings.HasPrefix(t.Path, "invalid") {
return TypeInvalid
}
return TypeValid
}
func (t Test) fail(format string, v ...interface{}) Test {
t.Failure = fmt.Sprintf(format, v...)
return t
}
func (t Test) bug(format string, v ...interface{}) Test {
return t.fail("BUG IN TEST CASE: "+format, v...)
}
func (t Test) Failed() bool { return t.Failure != "" }
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/.gitattributes 0000644 0000000 0000000 00000000016 14643451626 017343 0 ustar 00 *.toml -text
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/missing-separator.toml 0000644 0000000 0000000 00000000022 14643451626 023555 0 ustar 00 wrong = [ 1 2 3 ]
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/no-close-2.toml 0000644 0000000 0000000 00000000012 14643451626 021763 0 ustar 00 x = [42 #
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/no-close-table-2.toml 0000644 0000000 0000000 00000000022 14643451626 023051 0 ustar 00 x = [{ key = 42 #
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/no-close-table.toml 0000644 0000000 0000000 00000000020 14643451626 022710 0 ustar 00 x = [{ key = 42
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/no-close.toml 0000644 0000000 0000000 00000000027 14643451626 021632 0 ustar 00 long_array = [ 1, 2, 3
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/tables-1.toml 0000644 0000000 0000000 00000000067 14643451626 021527 0 ustar 00 # INVALID TOML DOC
fruit = []
[[fruit]] # Not allowed
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/tables-2.toml 0000644 0000000 0000000 00000000274 14643451626 021530 0 ustar 00 # INVALID TOML DOC
[[fruit]]
name = "apple"
[[fruit.variety]]
name = "red delicious"
# This table conflicts with the previous table
[fruit.variety]
name = "granny smith"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/text-after-array-entries.toml 0000644 0000000 0000000 00000000106 14643451626 024757 0 ustar 00 array = [
"Is there life after an array separator?", No
"Entry"
]
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/text-before-array-separator.toml 0000644 0000000 0000000 00000000107 14643451626 025450 0 ustar 00 array = [
"Is there life before an array separator?" No,
"Entry"
]
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/array/text-in-array.toml 0000644 0000000 0000000 00000000070 14643451626 022615 0 ustar 00 array = [
"Entry 1",
I don't belong,
"Entry 2",
]
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/bool/mixed-case.toml 0000644 0000000 0000000 00000000016 14643451626 021745 0 ustar 00 valid = False
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/bool/wrong-case-false.toml 0000644 0000000 0000000 00000000012 14643451626 023057 0 ustar 00 b = FALSE
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/bool/wrong-case-true.toml 0000644 0000000 0000000 00000000011 14643451626 022743 0 ustar 00 a = TRUE
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/comment-del.toml 0000644 0000000 0000000 00000000031 14643451626 022654 0 ustar 00 comment-del = "0x7f" #
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/comment-lf.toml 0000644 0000000 0000000 00000000032 14643451626 022512 0 ustar 00 comment-lf = "ctrl-P" #
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/comment-null.toml 0000644 0000000 0000000 00000000032 14643451626 023063 0 ustar 00 comment-null = "null" #
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/comment-us.toml 0000644 0000000 0000000 00000000032 14643451626 022540 0 ustar 00 comment-us = "ctrl-_" #
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/control.multi 0000644 0000000 0000000 00000001070 14643451626 022313 0 ustar 00 # NOTE: this file contains literal control characters.
comment-null = "null" #
comment-lf = "ctrl-P" #
comment-us = "ctrl-_" #
comment-del = "0x7f" #
string-null = "null "
string-lf = "null"
string-us = "null"
string-del = "null"
rawstring-null = 'null '
rawstring-lf = 'null'
rawstring-us = 'null'
rawstring-del = 'null'
multi-null = """null """
multi-lf = """null"""
multi-us = """null"""
multi-del = """null"""
rawmulti-null = '''null '''
rawmulti-lf = '''null'''
rawmulti-us = '''null'''
rawmulti-del = '''null'''
string-bs = "backspace"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/multi-del.toml 0000644 0000000 0000000 00000000030 14643451626 022343 0 ustar 00 multi-del = """null"""
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/multi-lf.toml 0000644 0000000 0000000 00000000027 14643451626 022206 0 ustar 00 multi-lf = """null"""
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/multi-null.toml 0000644 0000000 0000000 00000000031 14643451626 022552 0 ustar 00 multi-null = """null """
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/multi-us.toml 0000644 0000000 0000000 00000000027 14643451626 022234 0 ustar 00 multi-us = """null"""
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawmulti-del.toml 0000644 0000000 0000000 00000000033 14643451626 023060 0 ustar 00 rawmulti-del = '''null'''
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawmulti-lf.toml 0000644 0000000 0000000 00000000032 14643451626 022714 0 ustar 00 rawmulti-lf = '''null'''
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawmulti-null.toml 0000644 0000000 0000000 00000000034 14643451626 023267 0 ustar 00 rawmulti-null = '''null '''
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawmulti-us.toml 0000644 0000000 0000000 00000000032 14643451626 022742 0 ustar 00 rawmulti-us = '''null'''
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawstring-del.toml 0000644 0000000 0000000 00000000030 14643451626 023231 0 ustar 00 rawstring-del = 'null'
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawstring-lf.toml 0000644 0000000 0000000 00000000027 14643451626 023074 0 ustar 00 rawstring-lf = 'null'
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawstring-null.toml 0000644 0000000 0000000 00000000031 14643451626 023440 0 ustar 00 rawstring-null = 'null '
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/rawstring-us.toml 0000644 0000000 0000000 00000000027 14643451626 023122 0 ustar 00 rawstring-us = 'null'
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/string-bs.toml 0000644 0000000 0000000 00000000031 14643451626 022360 0 ustar 00 string-bs = "backspace"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/string-del.toml 0000644 0000000 0000000 00000000025 14643451626 022523 0 ustar 00 string-del = "null"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/string-lf.toml 0000644 0000000 0000000 00000000024 14643451626 022357 0 ustar 00 string-lf = "null"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/string-null.toml 0000644 0000000 0000000 00000000026 14643451626 022732 0 ustar 00 string-null = "null "
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/control/string-us.toml 0000644 0000000 0000000 00000000024 14643451626 022405 0 ustar 00 string-us = "null"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/datetime/impossible-date.toml 0000644 0000000 0000000 00000000031 14643451626 023645 0 ustar 00 d = 2006-01-50T00:00:00Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/datetime/no-leads-with-milli.toml 0000644 0000000 0000000 00000000044 14643451626 024347 0 ustar 00 with-milli = 1987-07-5T17:45:00.12Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/datetime/no-leads.toml 0000644 0000000 0000000 00000000037 14643451626 022274 0 ustar 00 no-leads = 1987-7-05T17:45:00Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/datetime/no-secs.toml 0000644 0000000 0000000 00000000034 14643451626 022136 0 ustar 00 no-secs = 1987-07-05T17:45Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/datetime/no-t.toml 0000644 0000000 0000000 00000000033 14643451626 021443 0 ustar 00 no-t = 1987-07-0517:45:00Z
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1720603542.214945
tomlkit-0.13.0/tests/toml-test/tests/invalid/datetime/trailing-t.toml 0000644 0000000 0000000 00000000020 14643451626 022634 0 ustar 00 d = 2006-01-30T
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/encoding/bad-utf8-at-end.toml 0000644 0000000 0000000 00000000362 14643451626 023345 0 ustar 00 # There is a 0xda at after the quotes, and no EOL at the end of the file.
#
# This is a bit of an edge case: This indicates there should be two bytes
# (0b1101_1010) but there is no byte to follow because it's the end of the file.
x = """""" ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/encoding/bad-utf8-in-comment.toml 0000644 0000000 0000000 00000000004 14643451626 024234 0 ustar 00 #
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/encoding/bad-utf8-in-string.toml 0000644 0000000 0000000 00000000103 14643451626 024100 0 ustar 00 # The following line contains an invalid UTF-8 sequence.
bad = ""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/encoding/bom-not-at-start-1.toml 0000644 0000000 0000000 00000000024 14643451626 024026 0 ustar 00 bom-not-at-start
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/encoding/bom-not-at-start-2.toml 0000644 0000000 0000000 00000000025 14643451626 024030 0 ustar 00 bom-not-at-start=
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/encoding/utf16-bom.toml 0000644 0000000 0000000 00000000046 14643451626 022304 0 ustar 00 # U T F - 1 6 w i t h B O M
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/encoding/utf16.toml 0000644 0000000 0000000 00000000052 14643451626 021526 0 ustar 00 # U T F - 1 6 w i t h o u t B O M
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/double-point-1.toml 0000644 0000000 0000000 00000000026 14643451626 022640 0 ustar 00 double-point-1 = 0..1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/double-point-2.toml 0000644 0000000 0000000 00000000027 14643451626 022642 0 ustar 00 double-point-2 = 0.1.2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/exp-double-e-1.toml 0000644 0000000 0000000 00000000026 14643451626 022525 0 ustar 00 exp-double-e-1 = 1ee2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/exp-double-e-2.toml 0000644 0000000 0000000 00000000027 14643451626 022527 0 ustar 00 exp-double-e-2 = 1e2e3
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/exp-double-us.toml 0000644 0000000 0000000 00000000027 14643451626 022573 0 ustar 00 exp-double-us = 1e__23
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/exp-leading-us.toml 0000644 0000000 0000000 00000000027 14643451626 022724 0 ustar 00 exp-leading-us = 1e_23
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/exp-point-1.toml 0000644 0000000 0000000 00000000024 14643451626 022160 0 ustar 00 exp-point-1 = 1e2.3
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/exp-point-2.toml 0000644 0000000 0000000 00000000023 14643451626 022160 0 ustar 00 exp-point-2 = 1.e2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/exp-trailing-us.toml 0000644 0000000 0000000 00000000031 14643451626 023125 0 ustar 00 exp-trailing-us = 1e_23_
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/float.multi 0000644 0000000 0000000 00000001271 14643451626 021370 0 ustar 00 leading-zero = 03.14
leading-zero-neg = -03.14
leading-zero-plus = +03.14
leading-point = .12345
leading-point-neg = -.12345
leading-point-plus = +.12345
trailing-point = 1.
trailing-point-min = -1.
trailing-point-plus = +1.
trailing-us = 1.2_
leading-us = _1.2
us-before-point = 1_.2
us-after-point = 1._2
double-point-1 = 0..1
double-point-2 = 0.1.2
exp-point-1 = 1e2.3
exp-point-2 = 1.e2
exp-double-e-1 = 1ee2
exp-double-e-2 = 1e2e3
exp-leading-us = 1e_23
exp-trailing-us = 1e_23_
exp-double-us = 1e__23
inf-incomplete-1 = in
inf-incomplete-2 = +in
inf-incomplete-3 = -in
nan-incomplete-1 = na
nan-incomplete-2 = +na
nan-incomplete-3 = -na
nan_underscore = na_n
inf_underscore = in_f
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/inf-incomplete-1.toml 0000644 0000000 0000000 00000000026 14643451626 023150 0 ustar 00 inf-incomplete-1 = in
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/inf-incomplete-2.toml 0000644 0000000 0000000 00000000027 14643451626 023152 0 ustar 00 inf-incomplete-2 = +in
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/inf-incomplete-3.toml 0000644 0000000 0000000 00000000027 14643451626 023153 0 ustar 00 inf-incomplete-3 = -in
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/inf_underscore.toml 0000644 0000000 0000000 00000000026 14643451626 023106 0 ustar 00 inf_underscore = in_f
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/leading-point-neg.toml 0000644 0000000 0000000 00000000034 14643451626 023401 0 ustar 00 leading-point-neg = -.12345
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/leading-point-plus.toml 0000644 0000000 0000000 00000000035 14643451626 023614 0 ustar 00 leading-point-plus = +.12345
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/leading-point.toml 0000644 0000000 0000000 00000000027 14643451626 022634 0 ustar 00 leading-point = .12345
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/leading-us.toml 0000644 0000000 0000000 00000000022 14643451626 022125 0 ustar 00 leading-us = _1.2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/leading-zero-neg.toml 0000644 0000000 0000000 00000000032 14643451626 023225 0 ustar 00 leading-zero-neg = -03.14
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/leading-zero-plus.toml 0000644 0000000 0000000 00000000033 14643451626 023440 0 ustar 00 leading-zero-plus = +03.14
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/leading-zero.toml 0000644 0000000 0000000 00000000025 14643451626 022460 0 ustar 00 leading-zero = 03.14
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/nan-incomplete-1.toml 0000644 0000000 0000000 00000000026 14643451626 023150 0 ustar 00 nan-incomplete-1 = na
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/nan-incomplete-2.toml 0000644 0000000 0000000 00000000027 14643451626 023152 0 ustar 00 nan-incomplete-2 = +na
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/nan-incomplete-3.toml 0000644 0000000 0000000 00000000027 14643451626 023153 0 ustar 00 nan-incomplete-3 = -na
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/nan_underscore.toml 0000644 0000000 0000000 00000000026 14643451626 023106 0 ustar 00 nan_underscore = na_n
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/trailing-point-min.toml 0000644 0000000 0000000 00000000031 14643451626 023616 0 ustar 00 trailing-point-min = -1.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/trailing-point-plus.toml 0000644 0000000 0000000 00000000032 14643451626 024017 0 ustar 00 trailing-point-plus = +1.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/trailing-point.toml 0000644 0000000 0000000 00000000024 14643451626 023037 0 ustar 00 trailing-point = 1.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/trailing-us.toml 0000644 0000000 0000000 00000000023 14643451626 022334 0 ustar 00 trailing-us = 1.2_
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/us-after-point.toml 0000644 0000000 0000000 00000000026 14643451626 022756 0 ustar 00 us-after-point = 1._2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/float/us-before-point.toml 0000644 0000000 0000000 00000000027 14643451626 023120 0 ustar 00 us-before-point = 1_.2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/double-comma.toml 0000644 0000000 0000000 00000000017 14643451626 023703 0 ustar 00 t = {x=3,,y=4}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/empty.toml 0000644 0000000 0000000 00000000010 14643451626 022466 0 ustar 00 t = {,}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/linebreak-1.toml 0000644 0000000 0000000 00000000157 14643451626 023436 0 ustar 00 # No newlines are allowed between the curly braces unless they are valid within
# a value.
simple = { a = 1
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/linebreak-2.toml 0000644 0000000 0000000 00000000017 14643451626 023432 0 ustar 00 t = {a=1,
b=2}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/linebreak-3.toml 0000644 0000000 0000000 00000000017 14643451626 023433 0 ustar 00 t = {a=1
,b=2}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/linebreak-4.toml 0000644 0000000 0000000 00000000113 14643451626 023431 0 ustar 00 json_like = {
first = "Tom",
last = "Preston-Werner"
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/no-comma.toml 0000644 0000000 0000000 00000000022 14643451626 023041 0 ustar 00 t = {x = 3 y = 4}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/inline-table/trailing-comma.toml 0000644 0000000 0000000 00000000214 14643451626 024241 0 ustar 00 # A terminating comma (also called trailing comma) is not permitted after the
# last key/value pair in an inline table
abc = { abc = 123, }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/capital-bin.toml 0000644 0000000 0000000 00000000022 14643451626 022610 0 ustar 00 capital-bin = 0B0
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/capital-hex.toml 0000644 0000000 0000000 00000000022 14643451626 022624 0 ustar 00 capital-hex = 0X1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/capital-oct.toml 0000644 0000000 0000000 00000000022 14643451626 022625 0 ustar 00 capital-oct = 0O0
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/double-sign-nex.toml 0000644 0000000 0000000 00000000027 14643451626 023432 0 ustar 00 double-sign-nex = --99
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/double-sign-plus.toml 0000644 0000000 0000000 00000000030 14643451626 023615 0 ustar 00 double-sign-plus = ++99
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/double-us.toml 0000644 0000000 0000000 00000000022 14643451626 022324 0 ustar 00 double-us = 1__23
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/integer.multi 0000644 0000000 0000000 00000001214 14643451626 022245 0 ustar 00 leading-zero-1 = 01
leading-zero-2 = 00
leading-zero-sign-1 = -01
leading-zero-sign-2 = +01
double-sign-plus = ++99
double-sign-nex = --99
negative-hex = -0xff
negative-bin = -0b11010110
negative-oct = -0o99
positive-hex = +0xff
positive-bin = +0b11010110
positive-oct = +0o99
trailing-us = 123_
leading-us = _123
double-us = 1__23
us-after-hex = 0x_1
us-after-oct = 0o_1
us-after-bin = 0b_1
trailing-us-hex = 0x1_
trailing-us-oct = 0o1_
trailing-us-bin = 0b1_
leading-us-hex = _0o1
leading-us-oct = _0o1
leading-us-bin = _0o1
invalid-hex = 0xaafz
invalid-oct = 0o778
invalid-bin = 0b0012
capital-hex = 0X1
capital-oct = 0O0
capital-bin = 0B0
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/invalid-bin.toml 0000644 0000000 0000000 00000000025 14643451626 022624 0 ustar 00 invalid-bin = 0b0012
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/invalid-hex.toml 0000644 0000000 0000000 00000000025 14643451626 022640 0 ustar 00 invalid-hex = 0xaafz
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/invalid-oct.toml 0000644 0000000 0000000 00000000024 14643451626 022640 0 ustar 00 invalid-oct = 0o778
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-us-bin.toml 0000644 0000000 0000000 00000000026 14643451626 023227 0 ustar 00 leading-us-bin = _0o1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-us-hex.toml 0000644 0000000 0000000 00000000026 14643451626 023243 0 ustar 00 leading-us-hex = _0o1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-us-oct.toml 0000644 0000000 0000000 00000000026 14643451626 023244 0 ustar 00 leading-us-oct = _0o1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-us.toml 0000644 0000000 0000000 00000000022 14643451626 022455 0 ustar 00 leading-us = _123
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-zero-1.toml 0000644 0000000 0000000 00000000024 14643451626 023145 0 ustar 00 leading-zero-1 = 01
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-zero-2.toml 0000644 0000000 0000000 00000000024 14643451626 023146 0 ustar 00 leading-zero-2 = 00
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-zero-sign-1.toml 0000644 0000000 0000000 00000000032 14643451626 024102 0 ustar 00 leading-zero-sign-1 = -01
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/leading-zero-sign-2.toml 0000644 0000000 0000000 00000000032 14643451626 024103 0 ustar 00 leading-zero-sign-2 = +01
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/negative-bin.toml 0000644 0000000 0000000 00000000033 14643451626 022777 0 ustar 00 negative-bin = -0b11010110
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/negative-hex.toml 0000644 0000000 0000000 00000000025 14643451626 023014 0 ustar 00 negative-hex = -0xff
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/negative-oct.toml 0000644 0000000 0000000 00000000025 14643451626 023015 0 ustar 00 negative-oct = -0o99
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/positive-bin.toml 0000644 0000000 0000000 00000000033 14643451626 023037 0 ustar 00 positive-bin = +0b11010110
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/positive-hex.toml 0000644 0000000 0000000 00000000025 14643451626 023054 0 ustar 00 positive-hex = +0xff
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/positive-oct.toml 0000644 0000000 0000000 00000000025 14643451626 023055 0 ustar 00 positive-oct = +0o99
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/text-after-integer.toml 0000644 0000000 0000000 00000000041 14643451626 024144 0 ustar 00 answer = 42 the ultimate answer?
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/trailing-us-bin.toml 0000644 0000000 0000000 00000000027 14643451626 023436 0 ustar 00 trailing-us-bin = 0b1_
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/trailing-us-hex.toml 0000644 0000000 0000000 00000000027 14643451626 023452 0 ustar 00 trailing-us-hex = 0x1_
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/trailing-us-oct.toml 0000644 0000000 0000000 00000000027 14643451626 023453 0 ustar 00 trailing-us-oct = 0o1_
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/trailing-us.toml 0000644 0000000 0000000 00000000023 14643451626 022664 0 ustar 00 trailing-us = 123_
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/us-after-bin.toml 0000644 0000000 0000000 00000000024 14643451626 022723 0 ustar 00 us-after-bin = 0b_1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/us-after-hex.toml 0000644 0000000 0000000 00000000024 14643451626 022737 0 ustar 00 us-after-hex = 0x_1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/integer/us-after-oct.toml 0000644 0000000 0000000 00000000024 14643451626 022740 0 ustar 00 us-after-oct = 0o_1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/after-array.toml 0000644 0000000 0000000 00000000040 14643451626 021775 0 ustar 00 [[agencies]] owner = "S Cjelli"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/after-table.toml 0000644 0000000 0000000 00000000044 14643451626 021752 0 ustar 00 [error] this = "should not be here"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/after-value.toml 0000644 0000000 0000000 00000000060 14643451626 021775 0 ustar 00 first = "Tom" last = "Preston-Werner" # INVALID
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/bare-invalid-character.toml 0000644 0000000 0000000 00000000017 14643451626 024053 0 ustar 00 bare!key = 123
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/dotted-redefine-table.toml 0000644 0000000 0000000 00000000114 14643451626 023711 0 ustar 00 # Defined a.b as int
a.b = 1
# Tries to access it as table: error
a.b.c = 2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/duplicate-keys.toml 0000644 0000000 0000000 00000000031 14643451626 022503 0 ustar 00 dupe = false
dupe = true
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/duplicate.toml 0000644 0000000 0000000 00000000057 14643451626 021542 0 ustar 00 # DO NOT DO THIS
name = "Tom"
name = "Pradyun"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/empty.toml 0000644 0000000 0000000 00000000005 14643451626 020717 0 ustar 00 = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/escape.toml 0000644 0000000 0000000 00000000055 14643451626 021026 0 ustar 00 \u00c0 = "latin capital letter A with grave"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/hash.toml 0000644 0000000 0000000 00000000007 14643451626 020506 0 ustar 00 a# = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/multiline.toml 0000644 0000000 0000000 00000000023 14643451626 021563 0 ustar 00 """long
key""" = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/newline.toml 0000644 0000000 0000000 00000000021 14643451626 021220 0 ustar 00 barekey
= 123
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/no-eol.toml 0000644 0000000 0000000 00000000014 14643451626 020752 0 ustar 00 a = 1 b = 2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/open-bracket.toml 0000644 0000000 0000000 00000000011 14643451626 022130 0 ustar 00 [abc = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/partial-quoted.toml 0000644 0000000 0000000 00000000024 14643451626 022515 0 ustar 00 partial"quoted" = 5
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/single-open-bracket.toml 0000644 0000000 0000000 00000000002 14643451626 023407 0 ustar 00 [
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/space.toml 0000644 0000000 0000000 00000000010 14643451626 020650 0 ustar 00 a b = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/special-character.toml 0000644 0000000 0000000 00000000035 14643451626 023136 0 ustar 00 μ = "greek small letter mu"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/start-bracket.toml 0000644 0000000 0000000 00000000021 14643451626 022325 0 ustar 00 [a]
[xyz = 5
[b]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/two-equals.toml 0000644 0000000 0000000 00000000011 14643451626 021657 0 ustar 00 key= = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/two-equals2.toml 0000644 0000000 0000000 00000000005 14643451626 021744 0 ustar 00 a==1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/two-equals3.toml 0000644 0000000 0000000 00000000006 14643451626 021746 0 ustar 00 a=b=1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/without-value-1.toml 0000644 0000000 0000000 00000000004 14643451626 022533 0 ustar 00 key
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/key/without-value-2.toml 0000644 0000000 0000000 00000000007 14643451626 022537 0 ustar 00 key =
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/bad-byte-escape.toml 0000644 0000000 0000000 00000000021 14643451626 023222 0 ustar 00 naughty = "\xAg"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/bad-codepoint.toml 0000644 0000000 0000000 00000000121 14643451626 023006 0 ustar 00 invalid-codepoint = "This string contains a non scalar unicode codepoint \uD801"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/bad-concat.toml 0000644 0000000 0000000 00000000035 14643451626 022275 0 ustar 00 no_concat = "first" "second"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/bad-escape.toml 0000644 0000000 0000000 00000000076 14643451626 022273 0 ustar 00 invalid-escape = "This string has a bad \a escape character."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/bad-multiline.toml 0000644 0000000 0000000 00000000041 14643451626 023025 0 ustar 00 multi = "first line
second line"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/bad-slash-escape.toml 0000644 0000000 0000000 00000000076 14643451626 023403 0 ustar 00 invalid-escape = "This string has a bad \/ escape character."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/bad-uni-esc.toml 0000644 0000000 0000000 00000000017 14643451626 022371 0 ustar 00 str = "val\ue"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-byte-escapes.toml 0000644 0000000 0000000 00000000020 14643451626 023737 0 ustar 00 answer = "\x33"
././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.toml
28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.to0000644 0000000 0000000 00000000025 14643451626 030352 0 ustar 00 a = """\UFFFFFFFF"""
././@PaxHeader 0000000 0000000 0000000 00000000214 00000000000 010212 x ustar 00 112 path=tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.toml
28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.to0000644 0000000 0000000 00000000025 14643451626 030353 0 ustar 00 a = """\U00D80000"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-multiline-quotes.toml 0000644 0000000 0000000 00000000062 14643451626 024701 0 ustar 00 str5 = """Here are three quotation marks: """."""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-multiline-unknown-escape.toml 0000644 0000000 0000000 00000000015 14643451626 026314 0 ustar 00 a = """\@"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-1.toml 0000644 0000000 0000000 00000000021 14643451626 026677 0 ustar 00 a = "\UFFFFFFFF"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-2.toml 0000644 0000000 0000000 00000000021 14643451626 026700 0 ustar 00 a = "\U00D80000"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/basic-unknown-escape.toml 0000644 0000000 0000000 00000000011 14643451626 024310 0 ustar 00 a = "\@"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml 0000644 0000000 0000000 00000000036 14643451626 025413 0 ustar 00 a = '''6 apostrophes: ''''''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/literal-multiline-quotes-2.toml 0000644 0000000 0000000 00000000052 14643451626 025412 0 ustar 00 a = '''15 apostrophes: ''''''''''''''''''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/missing-quotes.toml 0000644 0000000 0000000 00000000015 14643451626 023267 0 ustar 00 name = value
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/multiline-escape-space.toml 0000644 0000000 0000000 00000000034 14643451626 024632 0 ustar 00 a = """
foo \ \n
bar"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/multiline-no-close-2.toml 0000644 0000000 0000000 00000000006 14643451626 024156 0 ustar 00 x="""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/multiline-no-close.toml 0000644 0000000 0000000 00000000041 14643451626 024016 0 ustar 00 invalid = """
this will fail
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/multiline-quotes-1.toml 0000644 0000000 0000000 00000000030 14643451626 023753 0 ustar 00 a = """6 quotes: """"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/multiline-quotes-2.toml 0000644 0000000 0000000 00000000030 14643451626 023754 0 ustar 00 a = """6 quotes: """"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/no-close.toml 0000644 0000000 0000000 00000000052 14643451626 022020 0 ustar 00 no-ending-quote = "One time, at band camp
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/text-after-string.toml 0000644 0000000 0000000 00000000054 14643451626 023672 0 ustar 00 string = "Is there life after strings?" No.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/string/wrong-close.toml 0000644 0000000 0000000 00000000047 14643451626 022544 0 ustar 00 bad-ending-quote = "double and single'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/array-empty.toml 0000644 0000000 0000000 00000000032 14643451626 022332 0 ustar 00 [[]]
name = "Born to Run"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/array-implicit.toml 0000644 0000000 0000000 00000001156 14643451626 023016 0 ustar 00 # This test is a bit tricky. It should fail because the first use of
# `[[albums.songs]]` without first declaring `albums` implies that `albums`
# must be a table. The alternative would be quite weird. Namely, it wouldn't
# comply with the TOML spec: "Each double-bracketed sub-table will belong to
# the most *recently* defined table element *above* it."
#
# This is in contrast to the *valid* test, table-array-implicit where
# `[[albums.songs]]` works by itself, so long as `[[albums]]` isn't declared
# later. (Although, `[albums]` could be.)
[[albums.songs]]
name = "Glory Days"
[[albums]]
name = "Born in the USA"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/array-missing-bracket.toml 0000644 0000000 0000000 00000000037 14643451626 024263 0 ustar 00 [[albums]
name = "Born to Run"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/duplicate-key-table.toml 0000644 0000000 0000000 00000000063 14643451626 023711 0 ustar 00 [fruit]
type = "apple"
[fruit.type]
apple = "yes"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/duplicate-table-array.toml 0000644 0000000 0000000 00000000016 14643451626 024235 0 ustar 00 [tbl]
[[tbl]]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/duplicate-table-array2.toml 0000644 0000000 0000000 00000000016 14643451626 024317 0 ustar 00 [[tbl]]
[tbl]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/duplicate.toml 0000644 0000000 0000000 00000000025 14643451626 022034 0 ustar 00 [a]
b = 1
[a]
c = 2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/empty-implicit-table.toml 0000644 0000000 0000000 00000000023 14643451626 024113 0 ustar 00 [naughty..naughty]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/empty.toml 0000644 0000000 0000000 00000000003 14643451626 021214 0 ustar 00 []
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/equals-sign.toml 0000644 0000000 0000000 00000000013 14643451626 022307 0 ustar 00 [name=bad]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/llbrace.toml 0000644 0000000 0000000 00000000013 14643451626 021463 0 ustar 00 [ [table]]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2189453
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/nested-brackets-close.toml 0000644 0000000 0000000 00000000017 14643451626 024244 0 ustar 00 [a]b]
zyx = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/nested-brackets-open.toml 0000644 0000000 0000000 00000000017 14643451626 024100 0 ustar 00 [a[b]
zyx = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/quoted-no-close.toml 0000644 0000000 0000000 00000000042 14643451626 023077 0 ustar 00 ["where will it end]
name = value
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/redefine.toml 0000644 0000000 0000000 00000000116 14643451626 021644 0 ustar 00 # Define b as int, and try to use it as a table: error
[a]
b = 1
[a.b]
c = 2
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/rrbrace.toml 0000644 0000000 0000000 00000000013 14643451626 021477 0 ustar 00 [[table] ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/text-after-table.toml 0000644 0000000 0000000 00000000037 14643451626 023235 0 ustar 00 [error] this shouldn't be here
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/whitespace.toml 0000644 0000000 0000000 00000000016 14643451626 022216 0 ustar 00 [invalid key]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/invalid/table/with-pound.toml 0000644 0000000 0000000 00000000030 14643451626 022154 0 ustar 00 [key#group]
answer = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/array.json 0000644 0000000 0000000 00000001664 14643451626 020710 0 ustar 00 {
"comments": [
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
}
],
"dates": [
{
"type": "datetime",
"value": "1987-07-05T17:45:00Z"
},
{
"type": "datetime",
"value": "1979-05-27T07:32:00Z"
},
{
"type": "datetime",
"value": "2006-06-01T11:00:00Z"
}
],
"floats": [
{
"type": "float",
"value": "1.1"
},
{
"type": "float",
"value": "2.1"
},
{
"type": "float",
"value": "3.1"
}
],
"ints": [
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
},
{
"type": "integer",
"value": "3"
}
],
"strings": [
{
"type": "string",
"value": "a"
},
{
"type": "string",
"value": "b"
},
{
"type": "string",
"value": "c"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/array.toml 0000644 0000000 0000000 00000000315 14643451626 020702 0 ustar 00 ints = [1, 2, 3, ]
floats = [1.1, 2.1, 3.1]
strings = ["a", "b", "c"]
dates = [
1987-07-05T17:45:00Z,
1979-05-27T07:32:00Z,
2006-06-01T11:00:00Z,
]
comments = [
1,
2, #this is ok
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/bool.json 0000644 0000000 0000000 00000000203 14643451626 020511 0 ustar 00 {
"a": [
{
"type": "bool",
"value": "true"
},
{
"type": "bool",
"value": "false"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/bool.toml 0000644 0000000 0000000 00000000022 14643451626 020512 0 ustar 00 a = [true, false]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/empty.json 0000644 0000000 0000000 00000000124 14643451626 020716 0 ustar 00 {
"thevoid": [
[
[
[
[]
]
]
]
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/empty.toml 0000644 0000000 0000000 00000000025 14643451626 020720 0 ustar 00 thevoid = [[[[[]]]]]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/hetergeneous.json 0000644 0000000 0000000 00000000674 14643451626 022267 0 ustar 00 {
"mixed": [
[
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
}
],
[
{
"type": "string",
"value": "a"
},
{
"type": "string",
"value": "b"
}
],
[
{
"type": "float",
"value": "1.1"
},
{
"type": "float",
"value": "2.1"
}
]
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/hetergeneous.toml 0000644 0000000 0000000 00000000051 14643451626 022256 0 ustar 00 mixed = [[1, 2], ["a", "b"], [1.1, 2.1]]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-int-array.json 0000644 0000000 0000000 00000000272 14643451626 022576 0 ustar 00 {
"arrays-and-ints": [
{
"type": "integer",
"value": "1"
},
[
{
"type": "string",
"value": "Arrays are not integers."
}
]
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-int-array.toml 0000644 0000000 0000000 00000000065 14643451626 022600 0 ustar 00 arrays-and-ints = [1, ["Arrays are not integers."]]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-int-float.json 0000644 0000000 0000000 00000000220 14643451626 022556 0 ustar 00 {
"ints-and-floats": [
{
"type": "integer",
"value": "1"
},
{
"type": "float",
"value": "1.1"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-int-float.toml 0000644 0000000 0000000 00000000033 14643451626 022562 0 ustar 00 ints-and-floats = [1, 1.1]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-int-string.json 0000644 0000000 0000000 00000000222 14643451626 022761 0 ustar 00 {
"strings-and-ints": [
{
"type": "string",
"value": "hi"
},
{
"type": "integer",
"value": "42"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-int-string.toml 0000644 0000000 0000000 00000000036 14643451626 022766 0 ustar 00 strings-and-ints = ["hi", 42]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-string-table.json 0000644 0000000 0000000 00000000611 14643451626 023260 0 ustar 00 {
"contributors": [
{
"type": "string",
"value": "Foo Bar \u003cfoo@example.com\u003e"
},
{
"email": {
"type": "string",
"value": "bazqux@example.com"
},
"name": {
"type": "string",
"value": "Baz Qux"
},
"url": {
"type": "string",
"value": "https://example.com/bazqux"
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/mixed-string-table.toml 0000644 0000000 0000000 00000000213 14643451626 023260 0 ustar 00 contributors = [
"Foo Bar ",
{ name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" }
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nested-double.json 0000644 0000000 0000000 00000000576 14643451626 022325 0 ustar 00 {
"nest": [
[
[
{
"type": "string",
"value": "a"
}
],
[
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
},
[
{
"type": "integer",
"value": "3"
}
]
]
]
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nested-double.toml 0000644 0000000 0000000 00000000050 14643451626 022312 0 ustar 00 nest = [
[
["a"],
[1, 2, [3]]
]
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nested-inline-table.json 0000644 0000000 0000000 00000000053 14643451626 023404 0 ustar 00 {
"a": [
{
"b": {}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nested-inline-table.toml 0000644 0000000 0000000 00000000023 14643451626 023403 0 ustar 00 a = [ { b = {} } ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nested.json 0000644 0000000 0000000 00000000253 14643451626 021045 0 ustar 00 {
"nest": [
[
{
"type": "string",
"value": "a"
}
],
[
{
"type": "string",
"value": "b"
}
]
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nested.toml 0000644 0000000 0000000 00000000026 14643451626 021045 0 ustar 00 nest = [["a"], ["b"]]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nospaces.json 0000644 0000000 0000000 00000000276 14643451626 021403 0 ustar 00 {
"ints": [
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
},
{
"type": "integer",
"value": "3"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/nospaces.toml 0000644 0000000 0000000 00000000017 14643451626 021376 0 ustar 00 ints = [1,2,3]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/string-quote-comma-2.json 0000644 0000000 0000000 00000000120 14643451626 023446 0 ustar 00 {
"title": [
{
"type": "string",
"value": " \", "
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/string-quote-comma-2.toml 0000644 0000000 0000000 00000000024 14643451626 023453 0 ustar 00 title = [ " \", ",]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/string-quote-comma.json 0000644 0000000 0000000 00000000247 14643451626 023321 0 ustar 00 {
"title": [
{
"type": "string",
"value": "Client: \"XXXX\", Job: XXXX"
},
{
"type": "string",
"value": "Code: XXXX"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/string-quote-comma.toml 0000644 0000000 0000000 00000000070 14643451626 023315 0 ustar 00 title = [
"Client: \"XXXX\", Job: XXXX",
"Code: XXXX"
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/string-with-comma.json 0000644 0000000 0000000 00000000243 14643451626 023133 0 ustar 00 {
"title": [
{
"type": "string",
"value": "Client: XXXX, Job: XXXX"
},
{
"type": "string",
"value": "Code: XXXX"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/string-with-comma.toml 0000644 0000000 0000000 00000000064 14643451626 023136 0 ustar 00 title = [
"Client: XXXX, Job: XXXX",
"Code: XXXX"
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/strings.json 0000644 0000000 0000000 00000000421 14643451626 021251 0 ustar 00 {
"string_array": [
{
"type": "string",
"value": "all"
},
{
"type": "string",
"value": "strings"
},
{
"type": "string",
"value": "are the same"
},
{
"type": "string",
"value": "type"
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/strings.toml 0000644 0000000 0000000 00000000103 14643451626 021250 0 ustar 00 string_array = [ "all", 'strings', """are the same""", '''type''']
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/table-array-string-backslash.json 0000644 0000000 0000000 00000000157 14643451626 025226 0 ustar 00 {
"foo": [
{
"bar": {
"type": "string",
"value": "\"{{baz}}\""
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/array/table-array-string-backslash.toml 0000644 0000000 0000000 00000000037 14643451626 025225 0 ustar 00 foo = [ { bar="\"{{baz}}\""} ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/bool/bool.json 0000644 0000000 0000000 00000000160 14643451626 020330 0 ustar 00 {
"f": {
"type": "bool",
"value": "false"
},
"t": {
"type": "bool",
"value": "true"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/bool/bool.toml 0000644 0000000 0000000 00000000023 14643451626 020330 0 ustar 00 t = true
f = false
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/at-eof.json 0000644 0000000 0000000 00000000076 14643451626 021265 0 ustar 00 {
"key": {
"type": "string",
"value": "value"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/at-eof.toml 0000644 0000000 0000000 00000000125 14643451626 021262 0 ustar 00 # This is a full-line comment
key = "value" # This is a comment at the end of a line
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/at-eof2.json 0000644 0000000 0000000 00000000076 14643451626 021347 0 ustar 00 {
"key": {
"type": "string",
"value": "value"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/at-eof2.toml 0000644 0000000 0000000 00000000125 14643451626 021344 0 ustar 00 # This is a full-line comment
key = "value" # This is a comment at the end of a line
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/everywhere.json 0000644 0000000 0000000 00000000507 14643451626 022276 0 ustar 00 {
"group": {
"answer": {
"type": "integer",
"value": "42"
},
"d": {
"type": "datetime",
"value": "1979-05-27T07:32:12-07:00"
},
"more": [
{
"type": "integer",
"value": "42"
},
{
"type": "integer",
"value": "42"
}
]
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/everywhere.toml 0000644 0000000 0000000 00000001054 14643451626 022276 0 ustar 00 # Top comment.
# Top comment.
# Top comment.
# [no-extraneous-groups-please]
[group] # Comment
answer = 42 # Comment
# no-extraneous-keys-please = 999
# Inbetween comment.
more = [ # Comment
# What about multiple # comments?
# Can you handle it?
#
# Evil.
# Evil.
42, 42, # Comments within arrays are fun.
# What about multiple # comments?
# Can you handle it?
#
# Evil.
# Evil.
# ] Did I fool you?
] # Hopefully not.
# Make sure the space between the datetime and "#" isn't lexed.
d = 1979-05-27T07:32:12-07:00 # c
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/tricky.json 0000644 0000000 0000000 00000002771 14643451626 021423 0 ustar 00 {
"hash#tag": {
"#!": {
"type": "string",
"value": "hash bang"
},
"arr3": [
{
"type": "string",
"value": "#"
},
{
"type": "string",
"value": "#"
},
{
"type": "string",
"value": "###"
}
],
"arr4": [
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
},
{
"type": "integer",
"value": "3"
},
{
"type": "integer",
"value": "4"
}
],
"arr5": [
[
[
[
[
{
"type": "string",
"value": "#"
}
]
]
]
]
],
"tbl1": {
"#": {
"type": "string",
"value": "}#"
}
}
},
"section": {
"8": {
"type": "string",
"value": "eight"
},
"eleven": {
"type": "float",
"value": "11.1"
},
"five": {
"type": "float",
"value": "5.5"
},
"four": {
"type": "string",
"value": "# no comment\n# nor this\n#also not comment"
},
"one": {
"type": "string",
"value": "11"
},
"six": {
"type": "integer",
"value": "6"
},
"ten": {
"type": "float",
"value": "1000.0"
},
"three": {
"type": "string",
"value": "#"
},
"two": {
"type": "string",
"value": "22#"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/comment/tricky.toml 0000644 0000000 0000000 00000000601 14643451626 021413 0 ustar 00 [section]#attached comment
#[notsection]
one = "11"#cmt
two = "22#"
three = '#'
four = """# no comment
# nor this
#also not comment"""#is_comment
five = 5.5#66
six = 6#7
8 = "eight"
#nine = 99
ten = 10e2#1
eleven = 1.11e1#23
["hash#tag"]
"#!" = "hash bang"
arr3 = [ "#", '#', """###""" ]
arr4 = [ 1,# 9, 9,
2#,9
,#9
3#]
,4]
arr5 = [[[[#["#"],
["#"]]]]#]
]
tbl1 = { "#" = '}#'}#}}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/datetime.json 0000644 0000000 0000000 00000000237 14643451626 022037 0 ustar 00 {
"lower": {
"type": "datetime",
"value": "1987-07-05T17:45:00Z"
},
"space": {
"type": "datetime",
"value": "1987-07-05T17:45:00Z"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/datetime.toml 0000644 0000000 0000000 00000000072 14643451626 022036 0 ustar 00 space = 1987-07-05 17:45:00Z
lower = 1987-07-05t17:45:00z
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/local-date.json 0000644 0000000 0000000 00000000117 14643451626 022245 0 ustar 00 {
"bestdayever": {
"type": "date-local",
"value": "1987-07-05"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/local-date.toml 0000644 0000000 0000000 00000000031 14643451626 022242 0 ustar 00 bestdayever = 1987-07-05
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/local-time.json 0000644 0000000 0000000 00000000235 14643451626 022267 0 ustar 00 {
"besttimeever": {
"type": "time-local",
"value": "17:45:00"
},
"milliseconds": {
"type": "time-local",
"value": "10:32:00.555"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/local-time.toml 0000644 0000000 0000000 00000000064 14643451626 022271 0 ustar 00 besttimeever = 17:45:00
milliseconds = 10:32:00.555
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/local.json 0000644 0000000 0000000 00000000400 14643451626 021325 0 ustar 00 {
"local": {
"type": "datetime-local",
"value": "1987-07-05T17:45:00"
},
"milli": {
"type": "datetime-local",
"value": "1977-12-21T10:32:00.555"
},
"space": {
"type": "datetime-local",
"value": "1987-07-05T17:45:00"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/local.toml 0000644 0000000 0000000 00000000130 14643451626 021327 0 ustar 00 local = 1987-07-05T17:45:00
milli = 1977-12-21T10:32:00.555
space = 1987-07-05 17:45:00
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/milliseconds.json 0000644 0000000 0000000 00000000537 14643451626 022733 0 ustar 00 {
"utc1": {
"type": "datetime",
"value": "1987-07-05T17:45:56.123456Z"
},
"utc2": {
"type": "datetime",
"value": "1987-07-05T17:45:56.600000Z"
},
"wita1": {
"type": "datetime",
"value": "1987-07-05T17:45:56.123456+08:00"
},
"wita2": {
"type": "datetime",
"value": "1987-07-05T17:45:56.600000+08:00"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/milliseconds.toml 0000644 0000000 0000000 00000000220 14643451626 022722 0 ustar 00 utc1 = 1987-07-05T17:45:56.123456Z
utc2 = 1987-07-05T17:45:56.6Z
wita1 = 1987-07-05T17:45:56.123456+08:00
wita2 = 1987-07-05T17:45:56.6+08:00
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/timezone.json 0000644 0000000 0000000 00000000504 14643451626 022072 0 ustar 00 {
"nzdt": {
"type": "datetime",
"value": "1987-07-05T17:45:56+13:00"
},
"nzst": {
"type": "datetime",
"value": "1987-07-05T17:45:56+12:00"
},
"pdt": {
"type": "datetime",
"value": "1987-07-05T17:45:56-05:00"
},
"utc": {
"type": "datetime",
"value": "1987-07-05T17:45:56Z"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/datetime/timezone.toml 0000644 0000000 0000000 00000000206 14643451626 022073 0 ustar 00 utc = 1987-07-05T17:45:56Z
pdt = 1987-07-05T17:45:56-05:00
nzst = 1987-07-05T17:45:56+12:00
nzdt = 1987-07-05T17:45:56+13:00 # DST
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/empty-file.json 0000644 0000000 0000000 00000000003 14643451626 020511 0 ustar 00 {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/empty-file.toml 0000644 0000000 0000000 00000000000 14643451626 020510 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/example.json 0000644 0000000 0000000 00000000622 14643451626 020100 0 ustar 00 {
"best-day-ever": {
"type": "datetime",
"value": "1987-07-05T17:45:00Z"
},
"numtheory": {
"boring": {
"type": "bool",
"value": "false"
},
"perfection": [
{
"type": "integer",
"value": "6"
},
{
"type": "integer",
"value": "28"
},
{
"type": "integer",
"value": "496"
}
]
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/example.toml 0000644 0000000 0000000 00000000133 14643451626 020077 0 ustar 00 best-day-ever = 1987-07-05T17:45:00Z
[numtheory]
boring = false
perfection = [6, 28, 496]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/exponent.json 0000644 0000000 0000000 00000000751 14643451626 021415 0 ustar 00 {
"lower": {
"type": "float",
"value": "300.0"
},
"minustenth": {
"type": "float",
"value": "-0.1"
},
"neg": {
"type": "float",
"value": "0.03"
},
"pointlower": {
"type": "float",
"value": "310.0"
},
"pointupper": {
"type": "float",
"value": "310.0"
},
"pos": {
"type": "float",
"value": "300.0"
},
"upper": {
"type": "float",
"value": "300.0"
},
"zero": {
"type": "float",
"value": "3.0"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/exponent.toml 0000644 0000000 0000000 00000000162 14643451626 021413 0 ustar 00 lower = 3e2
upper = 3E2
neg = 3e-2
pos = 3E+2
zero = 3e0
pointlower = 3.1e2
pointupper = 3.1E2
minustenth = -1E-1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/float.json 0000644 0000000 0000000 00000000365 14643451626 020663 0 ustar 00 {
"negpi": {
"type": "float",
"value": "-3.14"
},
"pi": {
"type": "float",
"value": "3.14"
},
"pospi": {
"type": "float",
"value": "3.14"
},
"zero-intpart": {
"type": "float",
"value": "0.123"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/float.toml 0000644 0000000 0000000 00000000073 14643451626 020661 0 ustar 00 pi = 3.14
pospi = +3.14
negpi = -3.14
zero-intpart = 0.123
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/inf-and-nan.json 0000644 0000000 0000000 00000000566 14643451626 021647 0 ustar 00 {
"infinity": {
"type": "float",
"value": "inf"
},
"infinity_neg": {
"type": "float",
"value": "-inf"
},
"infinity_plus": {
"type": "float",
"value": "+inf"
},
"nan": {
"type": "float",
"value": "nan"
},
"nan_neg": {
"type": "float",
"value": "nan"
},
"nan_plus": {
"type": "float",
"value": "nan"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/inf-and-nan.toml 0000644 0000000 0000000 00000000350 14643451626 021640 0 ustar 00 # We don't encode +nan and -nan back with the signs; many languages don't
# support a sign on NaN (it doesn't really make much sense).
nan = nan
nan_neg = -nan
nan_plus = +nan
infinity = inf
infinity_neg = -inf
infinity_plus = +inf
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/long.json 0000644 0000000 0000000 00000000231 14643451626 020505 0 ustar 00 {
"longpi": {
"type": "float",
"value": "3.141592653589793"
},
"neglongpi": {
"type": "float",
"value": "-3.141592653589793"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/long.toml 0000644 0000000 0000000 00000000072 14643451626 020512 0 ustar 00 longpi = 3.141592653589793
neglongpi = -3.141592653589793
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/underscore.json 0000644 0000000 0000000 00000000304 14643451626 021720 0 ustar 00 {
"after": {
"type": "float",
"value": "3141.5927"
},
"before": {
"type": "float",
"value": "3141.5927"
},
"exponent": {
"type": "float",
"value": "3.0e14"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/underscore.toml 0000644 0000000 0000000 00000000070 14643451626 021722 0 ustar 00 before = 3_141.5927
after = 3141.592_7
exponent = 3e1_4
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/zero.json 0000644 0000000 0000000 00000000566 14643451626 020540 0 ustar 00 {
"f1": {
"type": "float",
"value": "0"
},
"f2": {
"type": "float",
"value": "0"
},
"f3": {
"type": "float",
"value": "0"
},
"f4": {
"type": "float",
"value": "0"
},
"f5": {
"type": "float",
"value": "0"
},
"f6": {
"type": "float",
"value": "0"
},
"f7": {
"type": "float",
"value": "0"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/float/zero.toml 0000644 0000000 0000000 00000000104 14643451626 020526 0 ustar 00 f1 = 0.0
f2 = +0.0
f3 = -0.0
f4 = 0e0
f5 = 0e00
f6 = +0e0
f7 = -0e0
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/implicit-and-explicit-after.json 0000644 0000000 0000000 00000000316 14643451626 023735 0 ustar 00 {
"a": {
"b": {
"c": {
"answer": {
"type": "integer",
"value": "42"
}
}
},
"better": {
"type": "integer",
"value": "43"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/implicit-and-explicit-after.toml 0000644 0000000 0000000 00000000045 14643451626 023736 0 ustar 00 [a.b.c]
answer = 42
[a]
better = 43
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/implicit-and-explicit-before.json 0000644 0000000 0000000 00000000316 14643451626 024076 0 ustar 00 {
"a": {
"b": {
"c": {
"answer": {
"type": "integer",
"value": "42"
}
}
},
"better": {
"type": "integer",
"value": "43"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/implicit-and-explicit-before.toml 0000644 0000000 0000000 00000000045 14643451626 024077 0 ustar 00 [a]
better = 43
[a.b.c]
answer = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/implicit-groups.json 0000644 0000000 0000000 00000000212 14643451626 021567 0 ustar 00 {
"a": {
"b": {
"c": {
"answer": {
"type": "integer",
"value": "42"
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/implicit-groups.toml 0000644 0000000 0000000 00000000024 14643451626 021572 0 ustar 00 [a.b.c]
answer = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/array.json 0000644 0000000 0000000 00000001047 14643451626 022130 0 ustar 00 {
"people": [
{
"first_name": {
"type": "string",
"value": "Bruce"
},
"last_name": {
"type": "string",
"value": "Springsteen"
}
},
{
"first_name": {
"type": "string",
"value": "Eric"
},
"last_name": {
"type": "string",
"value": "Clapton"
}
},
{
"first_name": {
"type": "string",
"value": "Bob"
},
"last_name": {
"type": "string",
"value": "Seger"
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/array.toml 0000644 0000000 0000000 00000000252 14643451626 022127 0 ustar 00 people = [{first_name = "Bruce", last_name = "Springsteen"},
{first_name = "Eric", last_name = "Clapton"},
{first_name = "Bob", last_name = "Seger"}]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/bool.json 0000644 0000000 0000000 00000000215 14643451626 021741 0 ustar 00 {
"a": {
"a": {
"type": "bool",
"value": "true"
},
"b": {
"type": "bool",
"value": "false"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/bool.toml 0000644 0000000 0000000 00000000032 14643451626 021740 0 ustar 00 a = {a = true, b = false}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/empty.json 0000644 0000000 0000000 00000000563 14643451626 022152 0 ustar 00 {
"empty1": {},
"empty2": {},
"empty_in_array": [
{
"not_empty": {
"type": "integer",
"value": "1"
}
},
{}
],
"empty_in_array2": [
{},
{
"not_empty": {
"type": "integer",
"value": "1"
}
}
],
"many_empty": [
{},
{},
{}
],
"nested_empty": {
"empty": {}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/empty.toml 0000644 0000000 0000000 00000000235 14643451626 022150 0 ustar 00 empty1 = {}
empty2 = { }
empty_in_array = [ { not_empty = 1 }, {} ]
empty_in_array2 = [{},{not_empty=1}]
many_empty = [{},{},{}]
nested_empty = {"empty"={}}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/end-in-bool.json 0000644 0000000 0000000 00000000373 14643451626 023116 0 ustar 00 {
"black": {
"allow_prereleases": {
"type": "bool",
"value": "true"
},
"python": {
"type": "string",
"value": "\u003e3.6"
},
"version": {
"type": "string",
"value": "\u003e=18.9b0"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/end-in-bool.toml 0000644 0000000 0000000 00000000106 14643451626 023112 0 ustar 00 black = { python=">3.6", version=">=18.9b0", allow_prereleases=true }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/inline-table.json 0000644 0000000 0000000 00000001214 14643451626 023351 0 ustar 00 {
"name": {
"first": {
"type": "string",
"value": "Tom"
},
"last": {
"type": "string",
"value": "Preston-Werner"
}
},
"point": {
"x": {
"type": "integer",
"value": "1"
},
"y": {
"type": "integer",
"value": "2"
}
},
"simple": {
"a": {
"type": "integer",
"value": "1"
}
},
"str-key": {
"a": {
"type": "integer",
"value": "1"
}
},
"table-array": [
{
"a": {
"type": "integer",
"value": "1"
}
},
{
"b": {
"type": "integer",
"value": "2"
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/inline-table.toml 0000644 0000000 0000000 00000000235 14643451626 023355 0 ustar 00 name = { first = "Tom", last = "Preston-Werner" }
point = { x = 1, y = 2 }
simple = { a = 1 }
str-key = { "a" = 1 }
table-array = [{ "a" = 1 }, { "b" = 2 }]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/key-dotted.json 0000644 0000000 0000000 00000004027 14643451626 023064 0 ustar 00 {
"a": {
"a": {
"b": {
"type": "integer",
"value": "1"
}
}
},
"arr": [
{
"T": {
"a": {
"b": {
"type": "integer",
"value": "1"
}
}
},
"t": {
"a": {
"b": {
"type": "integer",
"value": "1"
}
}
}
},
{
"T": {
"a": {
"b": {
"type": "integer",
"value": "2"
}
}
},
"t": {
"a": {
"b": {
"type": "integer",
"value": "2"
}
}
}
}
],
"b": {
"a": {
"b": {
"type": "integer",
"value": "1"
}
}
},
"c": {
"a": {
"b": {
"type": "integer",
"value": "1"
}
}
},
"d": {
"a": {
"b": {
"type": "integer",
"value": "1"
}
}
},
"e": {
"a": {
"b": {
"type": "integer",
"value": "1"
}
}
},
"inline": {
"a": {
"b": {
"type": "integer",
"value": "42"
}
}
},
"many": {
"dots": {
"here": {
"dot": {
"dot": {
"dot": {
"a": {
"b": {
"c": {
"type": "integer",
"value": "1"
},
"d": {
"type": "integer",
"value": "2"
}
}
}
}
}
}
}
}
},
"tbl": {
"a": {
"b": {
"c": {
"d": {
"e": {
"type": "integer",
"value": "1"
}
}
}
}
},
"x": {
"a": {
"b": {
"c": {
"d": {
"e": {
"type": "integer",
"value": "1"
}
}
}
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/key-dotted.toml 0000644 0000000 0000000 00000000464 14643451626 023067 0 ustar 00 inline = {a.b = 42}
many.dots.here.dot.dot.dot = {a.b.c = 1, a.b.d = 2}
a = { a.b = 1 }
b = { "a"."b" = 1 }
c = { a . b = 1 }
d = { 'a' . "b" = 1 }
e = {a.b=1}
[tbl]
a.b.c = {d.e=1}
[tbl.x]
a.b.c = {d.e=1}
[[arr]]
t = {a.b=1}
T = {a.b=1}
[[arr]]
t = {a.b=2}
T = {a.b=2}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/multiline.json 0000644 0000000 0000000 00000000460 14643451626 023012 0 ustar 00 {
"tbl_multiline": {
"a": {
"type": "integer",
"value": "1"
},
"b": {
"type": "string",
"value": "multiline\n"
},
"c": {
"type": "string",
"value": "and yet\nanother line"
},
"d": {
"type": "integer",
"value": "4"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/multiline.toml 0000644 0000000 0000000 00000000130 14643451626 023006 0 ustar 00 tbl_multiline = { a = 1, b = """
multiline
""", c = """and yet
another line""", d = 4 }
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/nest.json 0000644 0000000 0000000 00000001527 14643451626 021766 0 ustar 00 {
"arr_arr_tbl_empty": [
[
{}
]
],
"arr_arr_tbl_val": [
[
{
"one": {
"type": "integer",
"value": "1"
}
}
]
],
"arr_arr_tbls": [
[
{
"one": {
"type": "integer",
"value": "1"
}
},
{
"two": {
"type": "integer",
"value": "2"
}
}
]
],
"arr_tbl_tbl": [
{
"tbl": {
"one": {
"type": "integer",
"value": "1"
}
}
}
],
"tbl_arr_tbl": {
"arr_tbl": [
{
"one": {
"type": "integer",
"value": "1"
}
}
]
},
"tbl_tbl_empty": {
"tbl_0": {}
},
"tbl_tbl_val": {
"tbl_1": {
"one": {
"type": "integer",
"value": "1"
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/inline-table/nest.toml 0000644 0000000 0000000 00000000564 14643451626 021770 0 ustar 00 tbl_tbl_empty = { tbl_0 = {} }
tbl_tbl_val = { tbl_1 = { one = 1 } }
tbl_arr_tbl = { arr_tbl = [ { one = 1 } ] }
arr_tbl_tbl = [ { tbl = { one = 1 } } ]
# Array-of-array-of-table is interesting because it can only
# be represented in inline form.
arr_arr_tbl_empty = [ [ {} ] ]
arr_arr_tbl_val = [ [ { one = 1 } ] ]
arr_arr_tbls = [ [ { one = 1 }, { two = 2 } ] ]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/integer.json 0000644 0000000 0000000 00000000367 14643451626 021545 0 ustar 00 {
"answer": {
"type": "integer",
"value": "42"
},
"neganswer": {
"type": "integer",
"value": "-42"
},
"posanswer": {
"type": "integer",
"value": "42"
},
"zero": {
"type": "integer",
"value": "0"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/integer.toml 0000644 0000000 0000000 00000000065 14643451626 021542 0 ustar 00 answer = 42
posanswer = +42
neganswer = -42
zero = 0
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/literals.json 0000644 0000000 0000000 00000001055 14643451626 021722 0 ustar 00 {
"bin1": {
"type": "integer",
"value": "214"
},
"bin2": {
"type": "integer",
"value": "5"
},
"hex1": {
"type": "integer",
"value": "3735928559"
},
"hex2": {
"type": "integer",
"value": "3735928559"
},
"hex3": {
"type": "integer",
"value": "3735928559"
},
"hex4": {
"type": "integer",
"value": "2439"
},
"oct1": {
"type": "integer",
"value": "342391"
},
"oct2": {
"type": "integer",
"value": "493"
},
"oct3": {
"type": "integer",
"value": "501"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/literals.toml 0000644 0000000 0000000 00000000227 14643451626 021724 0 ustar 00 bin1 = 0b11010110
bin2 = 0b1_0_1
oct1 = 0o01234567
oct2 = 0o755
oct3 = 0o7_6_5
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
hex3 = 0xdead_beef
hex4 = 0x00987
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/long.json 0000644 0000000 0000000 00000000250 14643451626 021036 0 ustar 00 {
"int64-max": {
"type": "integer",
"value": "9223372036854775807"
},
"int64-max-neg": {
"type": "integer",
"value": "-9223372036854775808"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/long.toml 0000644 0000000 0000000 00000000105 14643451626 021037 0 ustar 00 int64-max = 9223372036854775807
int64-max-neg = -9223372036854775808
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/underscore.json 0000644 0000000 0000000 00000000170 14643451626 022251 0 ustar 00 {
"kilo": {
"type": "integer",
"value": "1000"
},
"x": {
"type": "integer",
"value": "1111"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/underscore.toml 0000644 0000000 0000000 00000000031 14643451626 022247 0 ustar 00 kilo = 1_000
x = 1_1_1_1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/zero.json 0000644 0000000 0000000 00000001227 14643451626 021063 0 ustar 00 {
"a2": {
"type": "integer",
"value": "0"
},
"a3": {
"type": "integer",
"value": "0"
},
"b1": {
"type": "integer",
"value": "0"
},
"b2": {
"type": "integer",
"value": "0"
},
"b3": {
"type": "integer",
"value": "0"
},
"d1": {
"type": "integer",
"value": "0"
},
"d2": {
"type": "integer",
"value": "0"
},
"d3": {
"type": "integer",
"value": "0"
},
"h1": {
"type": "integer",
"value": "0"
},
"h2": {
"type": "integer",
"value": "0"
},
"h3": {
"type": "integer",
"value": "0"
},
"o1": {
"type": "integer",
"value": "0"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/integer/zero.toml 0000644 0000000 0000000 00000000172 14643451626 021063 0 ustar 00 d1 = 0
d2 = +0
d3 = -0
h1 = 0x0
h2 = 0x00
h3 = 0x00000
o1 = 0o0
a2 = 0o00
a3 = 0o00000
b1 = 0b0
b2 = 0b00
b3 = 0b00000
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/alphanum.json 0000644 0000000 0000000 00000001230 14643451626 021036 0 ustar 00 {
"000111": {
"type": "string",
"value": "leading"
},
"10e3": {
"type": "string",
"value": "false float"
},
"123": {
"type": "string",
"value": "num"
},
"2018_10": {
"001": {
"type": "integer",
"value": "1"
}
},
"34-11": {
"type": "integer",
"value": "23"
},
"a-a-a": {
"_": {
"type": "bool",
"value": "false"
}
},
"alpha": {
"type": "string",
"value": "a"
},
"one1two2": {
"type": "string",
"value": "mixed"
},
"under_score": {
"type": "string",
"value": "___"
},
"with-dash": {
"type": "string",
"value": "dashed"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/alphanum.toml 0000644 0000000 0000000 00000000255 14643451626 021046 0 ustar 00 alpha = "a"
123 = "num"
000111 = "leading"
10e3 = "false float"
one1two2 = "mixed"
with-dash = "dashed"
under_score = "___"
34-11 = 23
[2018_10]
001 = 1
[a-a-a]
_ = false
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/case-sensitive.json 0000644 0000000 0000000 00000001171 14643451626 022157 0 ustar 00 {
"Section": {
"M": {
"type": "string",
"value": "latin letter M"
},
"name": {
"type": "string",
"value": "different section!!"
},
"Μ": {
"type": "string",
"value": "greek capital letter MU"
},
"μ": {
"type": "string",
"value": "greek small letter mu"
}
},
"sectioN": {
"type": "string",
"value": "NN"
},
"section": {
"NAME": {
"type": "string",
"value": "upper"
},
"Name": {
"type": "string",
"value": "capitalized"
},
"name": {
"type": "string",
"value": "lower"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/case-sensitive.toml 0000644 0000000 0000000 00000000313 14643451626 022156 0 ustar 00 sectioN = "NN"
[section]
name = "lower"
NAME = "upper"
Name = "capitalized"
[Section]
name = "different section!!"
"μ" = "greek small letter mu"
"Μ" = "greek capital letter MU"
M = "latin letter M"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/dotted.json 0000644 0000000 0000000 00000003741 14643451626 020525 0 ustar 00 {
"a": {
"few": {
"dots": {
"polka": {
"dance-with": {
"type": "string",
"value": "Dot"
},
"dot": {
"type": "string",
"value": "again?"
}
}
}
}
},
"arr": [
{
"a": {
"b": {
"c": {
"type": "integer",
"value": "1"
},
"d": {
"type": "integer",
"value": "2"
}
}
}
},
{
"a": {
"b": {
"c": {
"type": "integer",
"value": "3"
},
"d": {
"type": "integer",
"value": "4"
}
}
}
}
],
"count": {
"a": {
"type": "integer",
"value": "1"
},
"b": {
"type": "integer",
"value": "2"
},
"c": {
"type": "integer",
"value": "3"
},
"d": {
"type": "integer",
"value": "4"
},
"e": {
"type": "integer",
"value": "5"
},
"f": {
"type": "integer",
"value": "6"
},
"g": {
"type": "integer",
"value": "7"
},
"h": {
"type": "integer",
"value": "8"
},
"i": {
"type": "integer",
"value": "9"
},
"j": {
"type": "integer",
"value": "10"
},
"k": {
"type": "integer",
"value": "11"
},
"l": {
"type": "integer",
"value": "12"
}
},
"many": {
"dots": {
"here": {
"dot": {
"dot": {
"dot": {
"type": "integer",
"value": "42"
}
}
}
}
}
},
"name": {
"first": {
"type": "string",
"value": "Arthur"
},
"last": {
"type": "string",
"value": "Dent"
}
},
"tbl": {
"a": {
"b": {
"c": {
"type": "float",
"value": "42.666"
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/dotted.toml 0000644 0000000 0000000 00000001027 14643451626 020522 0 ustar 00 # Note: this file contains literal tab characters.
name.first = "Arthur"
"name".'last' = "Dent"
many.dots.here.dot.dot.dot = 42
# Space are ignored, and key parts can be quoted.
count.a = 1
count . b = 2
"count"."c" = 3
"count" . "d" = 4
'count'.'e' = 5
'count' . 'f' = 6
"count".'g' = 7
"count" . 'h' = 8
count.'i' = 9
count . 'j' = 10
"count".k = 11
"count" . l = 12
[tbl]
a.b.c = 42.666
[a.few.dots]
polka.dot = "again?"
polka.dance-with = "Dot"
[[arr]]
a.b.c=1
a.b.d=2
[[arr]]
a.b.c=3
a.b.d=4
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/empty.json 0000644 0000000 0000000 00000000073 14643451626 020373 0 ustar 00 {
"": {
"type": "string",
"value": "blank"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/empty.toml 0000644 0000000 0000000 00000000015 14643451626 020371 0 ustar 00 "" = "blank"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/equals-nospace.json 0000644 0000000 0000000 00000000077 14643451626 022161 0 ustar 00 {
"answer": {
"type": "integer",
"value": "42"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/equals-nospace.toml 0000644 0000000 0000000 00000000012 14643451626 022150 0 ustar 00 answer=42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/escapes.json 0000644 0000000 0000000 00000000547 14643451626 020666 0 ustar 00 {
"\n": {
"type": "string",
"value": "newline"
},
"\"": {
"type": "string",
"value": "just a quote"
},
"\"quoted\"": {
"quote": {
"type": "bool",
"value": "true"
}
},
"a.b": {
"À": {}
},
"backsp\u0008\u0008": {},
"À": {
"type": "string",
"value": "latin capital letter A with grave"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/escapes.toml 0000644 0000000 0000000 00000000225 14643451626 020661 0 ustar 00 "\n" = "newline"
"\u00c0" = "latin capital letter A with grave"
"\"" = "just a quote"
["backsp\b\b"]
["\"quoted\""]
quote = true
["a.b"."\u00c0"]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/numeric-dotted.json 0000644 0000000 0000000 00000000116 14643451626 022156 0 ustar 00 {
"1": {
"2": {
"type": "integer",
"value": "3"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/numeric-dotted.toml 0000644 0000000 0000000 00000000010 14643451626 022151 0 ustar 00 1.2 = 3
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/numeric.json 0000644 0000000 0000000 00000000071 14643451626 020675 0 ustar 00 {
"1": {
"type": "integer",
"value": "1"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/numeric.toml 0000644 0000000 0000000 00000000006 14643451626 020675 0 ustar 00 1 = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/quoted-dots.json 0000644 0000000 0000000 00000000734 14643451626 021511 0 ustar 00 {
"plain": {
"type": "integer",
"value": "1"
},
"plain_table": {
"plain": {
"type": "integer",
"value": "3"
},
"with.dot": {
"type": "integer",
"value": "4"
}
},
"table": {
"withdot": {
"key.with.dots": {
"type": "integer",
"value": "6"
},
"plain": {
"type": "integer",
"value": "5"
}
}
},
"with.dot": {
"type": "integer",
"value": "2"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/quoted-dots.toml 0000644 0000000 0000000 00000000160 14643451626 021504 0 ustar 00 plain = 1
"with.dot" = 2
[plain_table]
plain = 3
"with.dot" = 4
[table.withdot]
plain = 5
"key.with.dots" = 6
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2229452
tomlkit-0.13.0/tests/toml-test/tests/valid/key/space.json 0000644 0000000 0000000 00000000073 14643451626 020330 0 ustar 00 {
"a b": {
"type": "integer",
"value": "1"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/key/space.toml 0000644 0000000 0000000 00000000012 14643451626 020323 0 ustar 00 "a b" = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/key/special-chars.json 0000644 0000000 0000000 00000000152 14643451626 021751 0 ustar 00 {
"~!@$^\u0026*()_+-`1234567890[]|/?\u003e\u003c.,;:'": {
"type": "integer",
"value": "1"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/key/special-chars.toml 0000644 0000000 0000000 00000000052 14643451626 021752 0 ustar 00 "~!@$^&*()_+-`1234567890[]|/?><.,;:'" = 1
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/key/special-word.json 0000644 0000000 0000000 00000000405 14643451626 021625 0 ustar 00 {
"false": {
"type": "bool",
"value": "false"
},
"inf": {
"type": "integer",
"value": "100000000"
},
"nan": {
"type": "string",
"value": "ceci n'est pas un nombre"
},
"true": {
"type": "integer",
"value": "1"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/key/special-word.toml 0000644 0000000 0000000 00000000111 14643451626 021621 0 ustar 00 false = false
true = 1
inf = 100000000
nan = "ceci n'est pas un nombre"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/newline-crlf.json 0000644 0000000 0000000 00000000171 14643451626 021031 0 ustar 00 {
"newline": {
"type": "string",
"value": "crlf"
},
"os": {
"type": "string",
"value": "DOS"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/newline-crlf.toml 0000644 0000000 0000000 00000000036 14643451626 021033 0 ustar 00 os = "DOS"
newline = "crlf"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/newline-lf.json 0000644 0000000 0000000 00000000170 14643451626 020503 0 ustar 00 {
"newline": {
"type": "string",
"value": "lf"
},
"os": {
"type": "string",
"value": "unix"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/newline-lf.toml 0000644 0000000 0000000 00000000033 14643451626 020503 0 ustar 00 os = "unix"
newline = "lf"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/spec-example-1-compact.json 0000644 0000000 0000000 00000003113 14643451626 022610 0 ustar 00 {
"clients": {
"data": [
[
{
"type": "string",
"value": "gamma"
},
{
"type": "string",
"value": "delta"
}
],
[
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
}
]
],
"hosts": [
{
"type": "string",
"value": "alpha"
},
{
"type": "string",
"value": "omega"
}
]
},
"database": {
"connection_max": {
"type": "integer",
"value": "5000"
},
"enabled": {
"type": "bool",
"value": "true"
},
"ports": [
{
"type": "integer",
"value": "8001"
},
{
"type": "integer",
"value": "8001"
},
{
"type": "integer",
"value": "8002"
}
],
"server": {
"type": "string",
"value": "192.168.1.1"
}
},
"owner": {
"dob": {
"type": "datetime",
"value": "1979-05-27T07:32:00-08:00"
},
"name": {
"type": "string",
"value": "Lance Uppercut"
}
},
"servers": {
"alpha": {
"dc": {
"type": "string",
"value": "eqdc10"
},
"ip": {
"type": "string",
"value": "10.0.0.1"
}
},
"beta": {
"dc": {
"type": "string",
"value": "eqdc10"
},
"ip": {
"type": "string",
"value": "10.0.0.2"
}
}
},
"title": {
"type": "string",
"value": "TOML Example"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/spec-example-1-compact.toml 0000644 0000000 0000000 00000000570 14643451626 022616 0 ustar 00 #Useless spaces eliminated.
title="TOML Example"
[owner]
name="Lance Uppercut"
dob=1979-05-27T07:32:00-08:00#First class dates
[database]
server="192.168.1.1"
ports=[8001,8001,8002]
connection_max=5000
enabled=true
[servers]
[servers.alpha]
ip="10.0.0.1"
dc="eqdc10"
[servers.beta]
ip="10.0.0.2"
dc="eqdc10"
[clients]
data=[["gamma","delta"],[1,2]]
hosts=[
"alpha",
"omega"
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/spec-example-1.json 0000644 0000000 0000000 00000003113 14643451626 021164 0 ustar 00 {
"clients": {
"data": [
[
{
"type": "string",
"value": "gamma"
},
{
"type": "string",
"value": "delta"
}
],
[
{
"type": "integer",
"value": "1"
},
{
"type": "integer",
"value": "2"
}
]
],
"hosts": [
{
"type": "string",
"value": "alpha"
},
{
"type": "string",
"value": "omega"
}
]
},
"database": {
"connection_max": {
"type": "integer",
"value": "5000"
},
"enabled": {
"type": "bool",
"value": "true"
},
"ports": [
{
"type": "integer",
"value": "8001"
},
{
"type": "integer",
"value": "8001"
},
{
"type": "integer",
"value": "8002"
}
],
"server": {
"type": "string",
"value": "192.168.1.1"
}
},
"owner": {
"dob": {
"type": "datetime",
"value": "1979-05-27T07:32:00-08:00"
},
"name": {
"type": "string",
"value": "Lance Uppercut"
}
},
"servers": {
"alpha": {
"dc": {
"type": "string",
"value": "eqdc10"
},
"ip": {
"type": "string",
"value": "10.0.0.1"
}
},
"beta": {
"dc": {
"type": "string",
"value": "eqdc10"
},
"ip": {
"type": "string",
"value": "10.0.0.2"
}
}
},
"title": {
"type": "string",
"value": "TOML Example"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/spec-example-1.toml 0000644 0000000 0000000 00000001057 14643451626 021173 0 ustar 00 # This is a TOML document. Boom.
title = "TOML Example"
[owner]
name = "Lance Uppercut"
dob = 1979-05-27T07:32:00-08:00 # First class dates? Why not?
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
# You can indent as you please. Tabs or spaces. TOML don't care.
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/double-quote-escape.json 0000644 0000000 0000000 00000000101 14643451626 023606 0 ustar 00 {
"test": {
"type": "string",
"value": "\"one\""
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/double-quote-escape.toml 0000644 0000000 0000000 00000000021 14643451626 023611 0 ustar 00 test = "\"one\""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/empty.json 0000644 0000000 0000000 00000000074 14643451626 021112 0 ustar 00 {
"answer": {
"type": "string",
"value": ""
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/empty.toml 0000644 0000000 0000000 00000000014 14643451626 021106 0 ustar 00 answer = ""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/escape-tricky.json 0000644 0000000 0000000 00000001155 14643451626 022520 0 ustar 00 {
"end_esc": {
"type": "string",
"value": "String does not end here\" but ends here\\"
},
"lit_end_esc": {
"type": "string",
"value": "String ends here\\"
},
"lit_multiline_end": {
"type": "string",
"value": "There is no escape\\"
},
"lit_multiline_not_unicode": {
"type": "string",
"value": "\\u007f"
},
"multiline_end_esc": {
"type": "string",
"value": "When will it end? \"\"\"...\"\"\" should be here\""
},
"multiline_not_unicode": {
"type": "string",
"value": "\\u0041"
},
"multiline_unicode": {
"type": "string",
"value": " "
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/escape-tricky.toml 0000644 0000000 0000000 00000000510 14643451626 022514 0 ustar 00 end_esc = "String does not end here\" but ends here\\"
lit_end_esc = 'String ends here\'
multiline_unicode = """
\u00a0"""
multiline_not_unicode = """
\\u0041"""
multiline_end_esc = """When will it end? \"""...""\" should be here\""""
lit_multiline_not_unicode = '''
\u007f'''
lit_multiline_end = '''There is no escape\'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/escaped-escape.json 0000644 0000000 0000000 00000000101 14643451626 022605 0 ustar 00 {
"answer": {
"type": "string",
"value": "\\x64"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/escaped-escape.toml 0000644 0000000 0000000 00000000021 14643451626 022610 0 ustar 00 answer = "\\x64"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/escapes.json 0000644 0000000 0000000 00000002511 14643451626 021375 0 ustar 00 {
"backslash": {
"type": "string",
"value": "This string has a \\ backslash character."
},
"backspace": {
"type": "string",
"value": "This string has a \u0008 backspace character."
},
"carriage": {
"type": "string",
"value": "This string has a \r carriage return character."
},
"delete": {
"type": "string",
"value": "This string has a delete control code."
},
"formfeed": {
"type": "string",
"value": "This string has a \u000c form feed character."
},
"newline": {
"type": "string",
"value": "This string has a \n new line character."
},
"notunicode1": {
"type": "string",
"value": "This string does not have a unicode \\u escape."
},
"notunicode2": {
"type": "string",
"value": "This string does not have a unicode \\u escape."
},
"notunicode3": {
"type": "string",
"value": "This string does not have a unicode \\u0075 escape."
},
"notunicode4": {
"type": "string",
"value": "This string does not have a unicode \\u escape."
},
"quote": {
"type": "string",
"value": "This string has a \" quote character."
},
"tab": {
"type": "string",
"value": "This string has a \t tab character."
},
"unitseparator": {
"type": "string",
"value": "This string has a \u001f unit separator control code."
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/escapes.toml 0000644 0000000 0000000 00000001403 14643451626 021376 0 ustar 00 backspace = "This string has a \b backspace character."
tab = "This string has a \t tab character."
newline = "This string has a \n new line character."
formfeed = "This string has a \f form feed character."
carriage = "This string has a \r carriage return character."
quote = "This string has a \" quote character."
backslash = "This string has a \\ backslash character."
notunicode1 = "This string does not have a unicode \\u escape."
notunicode2 = "This string does not have a unicode \u005Cu escape."
notunicode3 = "This string does not have a unicode \\u0075 escape."
notunicode4 = "This string does not have a unicode \\\u0075 escape."
delete = "This string has a \u007F delete control code."
unitseparator = "This string has a \u001F unit separator control code."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/multiline-json 0000644 0000000 0000000 00000002057 14643451626 021760 0 ustar 00 {
"equivalent_one": {
"type": "string",
"value": "The quick brown fox jumps over the lazy dog."
},
"equivalent_three": {
"type": "string",
"value": "The quick brown fox jumps over the lazy dog."
},
"equivalent_two": {
"type": "string",
"value": "The quick brown fox jumps over the lazy dog."
},
"escape-bs-1": {
"type": "string",
"value": "a \\\nb"
},
"escape-bs-2": {
"type": "string",
"value": "a \\b"
},
"escape-bs-3": {
"type": "string",
"value": "a \\\\\n b"
},
"keep-ws-before": {
"type": "string",
"value": "a \tb"
},
"multiline_empty_four": {
"type": "string",
"value": ""
},
"multiline_empty_one": {
"type": "string",
"value": ""
},
"multiline_empty_three": {
"type": "string",
"value": ""
},
"multiline_empty_two": {
"type": "string",
"value": ""
},
"no-space": {
"type": "string",
"value": "ab"
},
"whitespace-after-bs": {
"type": "string",
"value": "The quick brown fox jumps over the lazy dog."
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/multiline-quotes.json 0000644 0000000 0000000 00000001340 14643451626 023271 0 ustar 00 {
"lit_one": {
"type": "string",
"value": "'one quote'"
},
"lit_one_space": {
"type": "string",
"value": " 'one quote' "
},
"lit_two": {
"type": "string",
"value": "''two quotes''"
},
"lit_two_space": {
"type": "string",
"value": " ''two quotes'' "
},
"mismatch1": {
"type": "string",
"value": "aaa'''bbb"
},
"mismatch2": {
"type": "string",
"value": "aaa\"\"\"bbb"
},
"one": {
"type": "string",
"value": "\"one quote\""
},
"one_space": {
"type": "string",
"value": " \"one quote\" "
},
"two": {
"type": "string",
"value": "\"\"two quotes\"\""
},
"two_space": {
"type": "string",
"value": " \"\"two quotes\"\" "
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/multiline-quotes.toml 0000644 0000000 0000000 00000000700 14643451626 023272 0 ustar 00 # Make sure that quotes inside multiline strings are allowed, including right
# after the opening '''/""" and before the closing '''/"""
lit_one = ''''one quote''''
lit_two = '''''two quotes'''''
lit_one_space = ''' 'one quote' '''
lit_two_space = ''' ''two quotes'' '''
one = """"one quote""""
two = """""two quotes"""""
one_space = """ "one quote" """
two_space = """ ""two quotes"" """
mismatch1 = """aaa'''bbb"""
mismatch2 = '''aaa"""bbb'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/multiline-toml 0000644 0000000 0000000 00000001317 14643451626 021760 0 ustar 00 # NOTE: this file includes some literal tab characters.
multiline_empty_one = """"""
multiline_empty_two = """
"""
multiline_empty_three = """\
"""
multiline_empty_four = """\
\
\
"""
equivalent_one = "The quick brown fox jumps over the lazy dog."
equivalent_two = """
The quick brown \
fox jumps over \
the lazy dog."""
equivalent_three = """\
The quick brown \
fox jumps over \
the lazy dog.\
"""
whitespace-after-bs = """\
The quick brown \
fox jumps over \
the lazy dog.\
"""
no-space = """a\
b"""
keep-ws-before = """a \
b"""
escape-bs-1 = """a \\
b"""
escape-bs-2 = """a \\\
b"""
escape-bs-3 = """a \\\\
b"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/nl.json 0000644 0000000 0000000 00000000521 14643451626 020362 0 ustar 00 {
"lit_nl_end": {
"type": "string",
"value": "value\\n"
},
"lit_nl_mid": {
"type": "string",
"value": "val\\nue"
},
"lit_nl_uni": {
"type": "string",
"value": "val\\ue"
},
"nl_end": {
"type": "string",
"value": "value\n"
},
"nl_mid": {
"type": "string",
"value": "val\nue"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/nl.toml 0000644 0000000 0000000 00000000163 14643451626 020366 0 ustar 00 nl_mid = "val\nue"
nl_end = """value\n"""
lit_nl_end = '''value\n'''
lit_nl_mid = 'val\nue'
lit_nl_uni = 'val\ue'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/raw-multiline.json 0000644 0000000 0000000 00000000503 14643451626 022542 0 ustar 00 {
"firstnl": {
"type": "string",
"value": "This string has a ' quote character."
},
"multiline": {
"type": "string",
"value": "This string\nhas ' a quote character\nand more than\none newline\nin it."
},
"oneline": {
"type": "string",
"value": "This string has a ' quote character."
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/raw-multiline.toml 0000644 0000000 0000000 00000000303 14643451626 022542 0 ustar 00 oneline = '''This string has a ' quote character.'''
firstnl = '''
This string has a ' quote character.'''
multiline = '''
This string
has ' a quote character
and more than
one newline
in it.'''
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/raw.json 0000644 0000000 0000000 00000001273 14643451626 020547 0 ustar 00 {
"backslash": {
"type": "string",
"value": "This string has a \\\\ backslash character."
},
"backspace": {
"type": "string",
"value": "This string has a \\b backspace character."
},
"carriage": {
"type": "string",
"value": "This string has a \\r carriage return character."
},
"formfeed": {
"type": "string",
"value": "This string has a \\f form feed character."
},
"newline": {
"type": "string",
"value": "This string has a \\n new line character."
},
"slash": {
"type": "string",
"value": "This string has a \\/ slash character."
},
"tab": {
"type": "string",
"value": "This string has a \\t tab character."
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/raw.toml 0000644 0000000 0000000 00000000565 14643451626 020554 0 ustar 00 backspace = 'This string has a \b backspace character.'
tab = 'This string has a \t tab character.'
newline = 'This string has a \n new line character.'
formfeed = 'This string has a \f form feed character.'
carriage = 'This string has a \r carriage return character.'
slash = 'This string has a \/ slash character.'
backslash = 'This string has a \\ backslash character.'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/simple.json 0000644 0000000 0000000 00000000137 14643451626 021245 0 ustar 00 {
"answer": {
"type": "string",
"value": "You are not drinking enough whisky."
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/simple.toml 0000644 0000000 0000000 00000000057 14643451626 021250 0 ustar 00 answer = "You are not drinking enough whisky."
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/unicode-escape.json 0000644 0000000 0000000 00000000173 14643451626 022640 0 ustar 00 {
"answer4": {
"type": "string",
"value": "δ"
},
"answer8": {
"type": "string",
"value": "δ"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/unicode-escape.toml 0000644 0000000 0000000 00000000052 14643451626 022636 0 ustar 00 answer4 = "\u03B4"
answer8 = "\U000003B4"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/unicode-literal.json 0000644 0000000 0000000 00000000076 14643451626 023036 0 ustar 00 {
"answer": {
"type": "string",
"value": "δ"
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/unicode-literal.toml 0000644 0000000 0000000 00000000016 14643451626 023032 0 ustar 00 answer = "δ"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/with-pound.json 0000644 0000000 0000000 00000000267 14643451626 022056 0 ustar 00 {
"pound": {
"type": "string",
"value": "We see no # comments here."
},
"poundcomment": {
"type": "string",
"value": "But there are # some comments here."
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/string/with-pound.toml 0000644 0000000 0000000 00000000161 14643451626 022051 0 ustar 00 pound = "We see no # comments here."
poundcomment = "But there are # some comments here." # Did I # mess you up?
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-implicit.json 0000644 0000000 0000000 00000000223 14643451626 022457 0 ustar 00 {
"albums": {
"songs": [
{
"name": {
"type": "string",
"value": "Glory Days"
}
}
]
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-implicit.toml 0000644 0000000 0000000 00000000045 14643451626 022463 0 ustar 00 [[albums.songs]]
name = "Glory Days"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-many.json 0000644 0000000 0000000 00000001047 14643451626 021616 0 ustar 00 {
"people": [
{
"first_name": {
"type": "string",
"value": "Bruce"
},
"last_name": {
"type": "string",
"value": "Springsteen"
}
},
{
"first_name": {
"type": "string",
"value": "Eric"
},
"last_name": {
"type": "string",
"value": "Clapton"
}
},
{
"first_name": {
"type": "string",
"value": "Bob"
},
"last_name": {
"type": "string",
"value": "Seger"
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-many.toml 0000644 0000000 0000000 00000000243 14643451626 021615 0 ustar 00 [[people]]
first_name = "Bruce"
last_name = "Springsteen"
[[people]]
first_name = "Eric"
last_name = "Clapton"
[[people]]
first_name = "Bob"
last_name = "Seger"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-nest.json 0000644 0000000 0000000 00000001362 14643451626 021623 0 ustar 00 {
"albums": [
{
"name": {
"type": "string",
"value": "Born to Run"
},
"songs": [
{
"name": {
"type": "string",
"value": "Jungleland"
}
},
{
"name": {
"type": "string",
"value": "Meeting Across the River"
}
}
]
},
{
"name": {
"type": "string",
"value": "Born in the USA"
},
"songs": [
{
"name": {
"type": "string",
"value": "Glory Days"
}
},
{
"name": {
"type": "string",
"value": "Dancing in the Dark"
}
}
]
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-nest.toml 0000644 0000000 0000000 00000000406 14643451626 021623 0 ustar 00 [[albums]]
name = "Born to Run"
[[albums.songs]]
name = "Jungleland"
[[albums.songs]]
name = "Meeting Across the River"
[[albums]]
name = "Born in the USA"
[[albums.songs]]
name = "Glory Days"
[[albums.songs]]
name = "Dancing in the Dark"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-one.json 0000644 0000000 0000000 00000000312 14643451626 021425 0 ustar 00 {
"people": [
{
"first_name": {
"type": "string",
"value": "Bruce"
},
"last_name": {
"type": "string",
"value": "Springsteen"
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-one.toml 0000644 0000000 0000000 00000000072 14643451626 021432 0 ustar 00 [[people]]
first_name = "Bruce"
last_name = "Springsteen"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-table-array.json 0000644 0000000 0000000 00000000523 14643451626 023053 0 ustar 00 {
"a": [
{
"b": [
{
"c": {
"d": {
"type": "string",
"value": "val0"
}
}
},
{
"c": {
"d": {
"type": "string",
"value": "val1"
}
}
}
]
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/array-table-array.toml 0000644 0000000 0000000 00000000154 14643451626 023055 0 ustar 00 [[a]]
[[a.b]]
[a.b.c]
d = "val0"
[[a.b]]
[a.b.c]
d = "val1"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/empty.json 0000644 0000000 0000000 00000000016 14643451626 020667 0 ustar 00 {
"a": {}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/empty.toml 0000644 0000000 0000000 00000000004 14643451626 020666 0 ustar 00 [a]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/keyword.json 0000644 0000000 0000000 00000000072 14643451626 021217 0 ustar 00 {
"true": {},
"false": {},
"inf": {},
"nan": {}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/keyword.toml 0000644 0000000 0000000 00000000040 14643451626 021214 0 ustar 00 [true]
[false]
[inf]
[nan]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/names.json 0000644 0000000 0000000 00000000422 14643451626 020635 0 ustar 00 {
"a": {
" x ": {},
"b": {
"c": {}
},
"b.c": {},
"d.e": {}
},
"d": {
"e": {
"f": {}
}
},
"g": {
"h": {
"i": {}
}
},
"j": {
"ʞ": {
"l": {}
}
},
"x": {
"1": {
"2": {}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/names.toml 0000644 0000000 0000000 00000000132 14643451626 020635 0 ustar 00 [a.b.c]
[a."b.c"]
[a.'d.e']
[a.' x ']
[ d.e.f ]
[ g . h . i ]
[ j . "ʞ" . 'l' ]
[x.1.2]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/no-eol.json 0000644 0000000 0000000 00000000022 14643451626 020717 0 ustar 00 {
"table": {}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/no-eol.toml 0000644 0000000 0000000 00000000010 14643451626 020716 0 ustar 00 [table]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/sub-empty.json 0000644 0000000 0000000 00000000035 14643451626 021457 0 ustar 00 {
"a": {
"b": {}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/sub-empty.toml 0000644 0000000 0000000 00000000012 14643451626 021454 0 ustar 00 [a]
[a.b]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/whitespace.json 0000644 0000000 0000000 00000000026 14643451626 021666 0 ustar 00 {
"valid key": {}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/whitespace.toml 0000644 0000000 0000000 00000000016 14643451626 021667 0 ustar 00 ["valid key"]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/with-literal-string.json 0000644 0000000 0000000 00000000216 14643451626 023444 0 ustar 00 {
"a": {
"\"b\"": {
"c": {
"answer": {
"type": "integer",
"value": "42"
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/with-literal-string.toml 0000644 0000000 0000000 00000000051 14643451626 023443 0 ustar 00 ['a']
[a.'"b"']
[a.'"b"'.c]
answer = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/with-pound.json 0000644 0000000 0000000 00000000134 14643451626 021630 0 ustar 00 {
"key#group": {
"answer": {
"type": "integer",
"value": "42"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/with-pound.toml 0000644 0000000 0000000 00000000032 14643451626 021627 0 ustar 00 ["key#group"]
answer = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/with-single-quotes.json 0000644 0000000 0000000 00000000212 14643451626 023277 0 ustar 00 {
"a": {
"b": {
"c": {
"answer": {
"type": "integer",
"value": "42"
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/with-single-quotes.toml 0000644 0000000 0000000 00000000045 14643451626 023305 0 ustar 00 ['a']
[a.'b']
[a.'b'.c]
answer = 42
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/without-super.json 0000644 0000000 0000000 00000000107 14643451626 022371 0 ustar 00 {
"x": {
"y": {
"z": {
"w": {}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/tests/valid/table/without-super.toml 0000644 0000000 0000000 00000000170 14643451626 022373 0 ustar 00 # [x] you
# [x.y] don't
# [x.y.z] need these
[x.y.z.w] # for this to work
[x] # defining a super-table afterwards is ok
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603542.2269454
tomlkit-0.13.0/tests/toml-test/toml.go 0000644 0000000 0000000 00000006132 14643451626 014615 0 ustar 00 package tomltest
import (
"math"
"reflect"
)
// cmpTOML consumes the recursive structure of both want and have
// simultaneously. If anything is unequal the result has failed and comparison
// stops.
//
// reflect.DeepEqual could work here, but it won't tell us how the two
// structures are different.
func (r Test) cmpTOML(want, have interface{}) Test {
if isTomlValue(want) {
if !isTomlValue(have) {
return r.fail("Type for key '%s' differs:\n"+
" Expected: %[2]v (%[2]T)\n"+
" Your encoder: %[3]v (%[3]T)",
r.Key, want, have)
}
if !deepEqual(want, have) {
return r.fail("Values for key '%s' differ:\n"+
" Expected: %[2]v (%[2]T)\n"+
" Your encoder: %[3]v (%[3]T)",
r.Key, want, have)
}
return r
}
switch w := want.(type) {
case map[string]interface{}:
return r.cmpTOMLMap(w, have)
case []interface{}:
return r.cmpTOMLArrays(w, have)
default:
return r.fail("Unrecognized TOML structure: %T", want)
}
}
func (r Test) cmpTOMLMap(want map[string]interface{}, have interface{}) Test {
haveMap, ok := have.(map[string]interface{})
if !ok {
return r.mismatch("table", want, haveMap)
}
// Check that the keys of each map are equivalent.
for k := range want {
if _, ok := haveMap[k]; !ok {
bunk := r.kjoin(k)
return bunk.fail("Could not find key '%s' in encoder output", bunk.Key)
}
}
for k := range haveMap {
if _, ok := want[k]; !ok {
bunk := r.kjoin(k)
return bunk.fail("Could not find key '%s' in expected output", bunk.Key)
}
}
// Okay, now make sure that each value is equivalent.
for k := range want {
if sub := r.kjoin(k).cmpTOML(want[k], haveMap[k]); sub.Failed() {
return sub
}
}
return r
}
func (r Test) cmpTOMLArrays(want []interface{}, have interface{}) Test {
// Slice can be decoded to []interface{} for an array of primitives, or
// []map[string]interface{} for an array of tables.
//
// TODO: it would be nicer if it could always decode to []interface{}?
haveSlice, ok := have.([]interface{})
if !ok {
tblArray, ok := have.([]map[string]interface{})
if !ok {
return r.mismatch("array", want, have)
}
haveSlice = make([]interface{}, len(tblArray))
for i := range tblArray {
haveSlice[i] = tblArray[i]
}
}
if len(want) != len(haveSlice) {
return r.fail("Array lengths differ for key '%s'"+
" Expected: %[2]v (len=%[4]d)\n"+
" Your encoder: %[3]v (len=%[5]d)",
r.Key, want, haveSlice, len(want), len(haveSlice))
}
for i := 0; i < len(want); i++ {
if sub := r.cmpTOML(want[i], haveSlice[i]); sub.Failed() {
return sub
}
}
return r
}
// reflect.DeepEqual() that deals with NaN != NaN
func deepEqual(want, have interface{}) bool {
var wantF, haveF float64
switch f := want.(type) {
case float32:
wantF = float64(f)
case float64:
wantF = f
}
switch f := have.(type) {
case float32:
haveF = float64(f)
case float64:
haveF = f
}
if math.IsNaN(wantF) && math.IsNaN(haveF) {
return true
}
return reflect.DeepEqual(want, have)
}
func isTomlValue(v interface{}) bool {
switch v.(type) {
case map[string]interface{}, []interface{}:
return false
}
return true
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tests/util.py 0000644 0000000 0000000 00000002416 14643451625 012712 0 ustar 00 from tomlkit.items import AoT
from tomlkit.items import Array
from tomlkit.items import Bool
from tomlkit.items import Comment
from tomlkit.items import Date
from tomlkit.items import DateTime
from tomlkit.items import Float
from tomlkit.items import InlineTable
from tomlkit.items import Integer
from tomlkit.items import Item
from tomlkit.items import KeyType
from tomlkit.items import Null
from tomlkit.items import SingleKey as Key
from tomlkit.items import String
from tomlkit.items import StringType
from tomlkit.items import Table
from tomlkit.items import Time
from tomlkit.items import Trivia
from tomlkit.toml_document import TOMLDocument
TOMLKIT_TYPES = [
Bool,
Comment,
InlineTable,
Integer,
Float,
DateTime,
Date,
Time,
Array,
KeyType,
Key,
String,
StringType,
Table,
Trivia,
Item,
AoT,
Null,
TOMLDocument,
]
def assert_not_tomlkit_type(v):
for _, tomlkit_type in enumerate(TOMLKIT_TYPES):
assert not isinstance(v, tomlkit_type)
def assert_is_ppo(v_unwrapped, unwrapped_type):
assert_not_tomlkit_type(v_unwrapped)
assert isinstance(v_unwrapped, unwrapped_type)
def elementary_test(v, unwrapped_type):
v_unwrapped = v.unwrap()
assert_is_ppo(v_unwrapped, unwrapped_type)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/__init__.py 0000644 0000000 0000000 00000002402 14643451625 014010 0 ustar 00 from tomlkit.api import TOMLDocument
from tomlkit.api import aot
from tomlkit.api import array
from tomlkit.api import boolean
from tomlkit.api import comment
from tomlkit.api import date
from tomlkit.api import datetime
from tomlkit.api import document
from tomlkit.api import dump
from tomlkit.api import dumps
from tomlkit.api import float_
from tomlkit.api import inline_table
from tomlkit.api import integer
from tomlkit.api import item
from tomlkit.api import key
from tomlkit.api import key_value
from tomlkit.api import load
from tomlkit.api import loads
from tomlkit.api import nl
from tomlkit.api import parse
from tomlkit.api import register_encoder
from tomlkit.api import string
from tomlkit.api import table
from tomlkit.api import time
from tomlkit.api import unregister_encoder
from tomlkit.api import value
from tomlkit.api import ws
__version__ = "0.13.0"
__all__ = [
"aot",
"array",
"boolean",
"comment",
"date",
"datetime",
"document",
"dump",
"dumps",
"float_",
"inline_table",
"integer",
"item",
"key",
"key_value",
"load",
"loads",
"nl",
"parse",
"string",
"table",
"time",
"TOMLDocument",
"value",
"ws",
"register_encoder",
"unregister_encoder",
]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/_compat.py 0000644 0000000 0000000 00000001001 14643451625 013665 0 ustar 00 from __future__ import annotations
import contextlib
import sys
from typing import Any
PY38 = sys.version_info >= (3, 8)
def decode(string: Any, encodings: list[str] | None = None):
if not isinstance(string, bytes):
return string
encodings = encodings or ["utf-8", "latin1", "ascii"]
for encoding in encodings:
with contextlib.suppress(UnicodeEncodeError, UnicodeDecodeError):
return string.decode(encoding)
return string.decode(encodings[0], errors="ignore")
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/_types.py 0000644 0000000 0000000 00000005073 14643451625 013563 0 ustar 00 from __future__ import annotations
from typing import TYPE_CHECKING
from typing import Any
from typing import TypeVar
WT = TypeVar("WT", bound="WrapperType")
if TYPE_CHECKING: # pragma: no cover
# Define _CustomList and _CustomDict as a workaround for:
# https://github.com/python/mypy/issues/11427
#
# According to this issue, the typeshed contains a "lie"
# (it adds MutableSequence to the ancestry of list and MutableMapping to
# the ancestry of dict) which completely messes with the type inference for
# Table, InlineTable, Array and Container.
#
# Importing from builtins is preferred over simple assignment, see issues:
# https://github.com/python/mypy/issues/8715
# https://github.com/python/mypy/issues/10068
from builtins import dict as _CustomDict
from builtins import float as _CustomFloat
from builtins import int as _CustomInt
from builtins import list as _CustomList
from typing import Callable
from typing import Concatenate
from typing import ParamSpec
from typing import Protocol
P = ParamSpec("P")
class WrapperType(Protocol):
def _new(self: WT, value: Any) -> WT: ...
else:
from collections.abc import MutableMapping
from collections.abc import MutableSequence
from numbers import Integral
from numbers import Real
class _CustomList(MutableSequence, list):
"""Adds MutableSequence mixin while pretending to be a builtin list"""
def __add__(self, other):
new_list = self.copy()
new_list.extend(other)
return new_list
def __iadd__(self, other):
self.extend(other)
return self
class _CustomDict(MutableMapping, dict):
"""Adds MutableMapping mixin while pretending to be a builtin dict"""
def __or__(self, other):
new_dict = self.copy()
new_dict.update(other)
return new_dict
def __ior__(self, other):
self.update(other)
return self
class _CustomInt(Integral, int):
"""Adds Integral mixin while pretending to be a builtin int"""
class _CustomFloat(Real, float):
"""Adds Real mixin while pretending to be a builtin float"""
def wrap_method(
original_method: Callable[Concatenate[WT, P], Any],
) -> Callable[Concatenate[WT, P], Any]:
def wrapper(self: WT, *args: P.args, **kwargs: P.kwargs) -> Any:
result = original_method(self, *args, **kwargs)
if result is NotImplemented:
return result
return self._new(result)
return wrapper
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/_utils.py 0000644 0000000 0000000 00000007771 14643451625 013566 0 ustar 00 from __future__ import annotations
import re
from collections.abc import Mapping
from datetime import date
from datetime import datetime
from datetime import time
from datetime import timedelta
from datetime import timezone
from typing import Collection
from tomlkit._compat import decode
RFC_3339_LOOSE = re.compile(
"^"
r"(([0-9]+)-(\d{2})-(\d{2}))?" # Date
"("
"([Tt ])?" # Separator
r"(\d{2}):(\d{2}):(\d{2})(\.([0-9]+))?" # Time
r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone
")?"
"$"
)
RFC_3339_DATETIME = re.compile(
"^"
"([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])" # Date
"[Tt ]" # Separator
r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?" # Time
r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone
"$"
)
RFC_3339_DATE = re.compile("^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$")
RFC_3339_TIME = re.compile(
r"^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?$"
)
_utc = timezone(timedelta(), "UTC")
def parse_rfc3339(string: str) -> datetime | date | time:
m = RFC_3339_DATETIME.match(string)
if m:
year = int(m.group(1))
month = int(m.group(2))
day = int(m.group(3))
hour = int(m.group(4))
minute = int(m.group(5))
second = int(m.group(6))
microsecond = 0
if m.group(7):
microsecond = int((f"{m.group(8):<06s}")[:6])
if m.group(9):
# Timezone
tz = m.group(9)
if tz.upper() == "Z":
tzinfo = _utc
else:
sign = m.group(11)[0]
hour_offset, minute_offset = int(m.group(12)), int(m.group(13))
offset = timedelta(seconds=hour_offset * 3600 + minute_offset * 60)
if sign == "-":
offset = -offset
tzinfo = timezone(offset, f"{sign}{m.group(12)}:{m.group(13)}")
return datetime(
year, month, day, hour, minute, second, microsecond, tzinfo=tzinfo
)
else:
return datetime(year, month, day, hour, minute, second, microsecond)
m = RFC_3339_DATE.match(string)
if m:
year = int(m.group(1))
month = int(m.group(2))
day = int(m.group(3))
return date(year, month, day)
m = RFC_3339_TIME.match(string)
if m:
hour = int(m.group(1))
minute = int(m.group(2))
second = int(m.group(3))
microsecond = 0
if m.group(4):
microsecond = int((f"{m.group(5):<06s}")[:6])
return time(hour, minute, second, microsecond)
raise ValueError("Invalid RFC 339 string")
# https://toml.io/en/v1.0.0#string
CONTROL_CHARS = frozenset(chr(c) for c in range(0x20)) | {chr(0x7F)}
_escaped = {
"b": "\b",
"t": "\t",
"n": "\n",
"f": "\f",
"r": "\r",
'"': '"',
"\\": "\\",
}
_compact_escapes = {
**{v: f"\\{k}" for k, v in _escaped.items()},
'"""': '""\\"',
}
_basic_escapes = CONTROL_CHARS | {'"', "\\"}
def _unicode_escape(seq: str) -> str:
return "".join(f"\\u{ord(c):04x}" for c in seq)
def escape_string(s: str, escape_sequences: Collection[str] = _basic_escapes) -> str:
s = decode(s)
res = []
start = 0
def flush(inc=1):
if start != i:
res.append(s[start:i])
return i + inc
found_sequences = {seq for seq in escape_sequences if seq in s}
i = 0
while i < len(s):
for seq in found_sequences:
seq_len = len(seq)
if s[i:].startswith(seq):
start = flush(seq_len)
res.append(_compact_escapes.get(seq) or _unicode_escape(seq))
i += seq_len - 1 # fast-forward escape sequence
i += 1
flush()
return "".join(res)
def merge_dicts(d1: dict, d2: dict) -> dict:
for k, v in d2.items():
if k in d1 and isinstance(d1[k], dict) and isinstance(v, Mapping):
merge_dicts(d1[k], v)
else:
d1[k] = d2[k]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/api.py 0000644 0000000 0000000 00000016763 14643451625 013041 0 ustar 00 from __future__ import annotations
import contextlib
import datetime as _datetime
from collections.abc import Mapping
from typing import IO
from typing import Iterable
from typing import TypeVar
from tomlkit._utils import parse_rfc3339
from tomlkit.container import Container
from tomlkit.exceptions import UnexpectedCharError
from tomlkit.items import CUSTOM_ENCODERS
from tomlkit.items import AoT
from tomlkit.items import Array
from tomlkit.items import Bool
from tomlkit.items import Comment
from tomlkit.items import Date
from tomlkit.items import DateTime
from tomlkit.items import DottedKey
from tomlkit.items import Encoder
from tomlkit.items import Float
from tomlkit.items import InlineTable
from tomlkit.items import Integer
from tomlkit.items import Item as _Item
from tomlkit.items import Key
from tomlkit.items import SingleKey
from tomlkit.items import String
from tomlkit.items import StringType as _StringType
from tomlkit.items import Table
from tomlkit.items import Time
from tomlkit.items import Trivia
from tomlkit.items import Whitespace
from tomlkit.items import item
from tomlkit.parser import Parser
from tomlkit.toml_document import TOMLDocument
def loads(string: str | bytes) -> TOMLDocument:
"""
Parses a string into a TOMLDocument.
Alias for parse().
"""
return parse(string)
def dumps(data: Mapping, sort_keys: bool = False) -> str:
"""
Dumps a TOMLDocument into a string.
"""
if not isinstance(data, Container) and isinstance(data, Mapping):
data = item(dict(data), _sort_keys=sort_keys)
try:
# data should be a `Container` (and therefore implement `as_string`)
# for all type safe invocations of this function
return data.as_string() # type: ignore[attr-defined]
except AttributeError as ex:
msg = f"Expecting Mapping or TOML Container, {type(data)} given"
raise TypeError(msg) from ex
def load(fp: IO[str] | IO[bytes]) -> TOMLDocument:
"""
Load toml document from a file-like object.
"""
return parse(fp.read())
def dump(data: Mapping, fp: IO[str], *, sort_keys: bool = False) -> None:
"""
Dump a TOMLDocument into a writable file stream.
:param data: a dict-like object to dump
:param sort_keys: if true, sort the keys in alphabetic order
"""
fp.write(dumps(data, sort_keys=sort_keys))
def parse(string: str | bytes) -> TOMLDocument:
"""
Parses a string or bytes into a TOMLDocument.
"""
return Parser(string).parse()
def document() -> TOMLDocument:
"""
Returns a new TOMLDocument instance.
"""
return TOMLDocument()
# Items
def integer(raw: str | int) -> Integer:
"""Create an integer item from a number or string."""
return item(int(raw))
def float_(raw: str | float) -> Float:
"""Create an float item from a number or string."""
return item(float(raw))
def boolean(raw: str) -> Bool:
"""Turn `true` or `false` into a boolean item."""
return item(raw == "true")
def string(
raw: str,
*,
literal: bool = False,
multiline: bool = False,
escape: bool = True,
) -> String:
"""Create a string item.
By default, this function will create *single line basic* strings, but
boolean flags (e.g. ``literal=True`` and/or ``multiline=True``)
can be used for personalization.
For more information, please check the spec: ``__.
Common escaping rules will be applied for basic strings.
This can be controlled by explicitly setting ``escape=False``.
Please note that, if you disable escaping, you will have to make sure that
the given strings don't contain any forbidden character or sequence.
"""
type_ = _StringType.select(literal, multiline)
return String.from_raw(raw, type_, escape)
def date(raw: str) -> Date:
"""Create a TOML date."""
value = parse_rfc3339(raw)
if not isinstance(value, _datetime.date):
raise ValueError("date() only accepts date strings.")
return item(value)
def time(raw: str) -> Time:
"""Create a TOML time."""
value = parse_rfc3339(raw)
if not isinstance(value, _datetime.time):
raise ValueError("time() only accepts time strings.")
return item(value)
def datetime(raw: str) -> DateTime:
"""Create a TOML datetime."""
value = parse_rfc3339(raw)
if not isinstance(value, _datetime.datetime):
raise ValueError("datetime() only accepts datetime strings.")
return item(value)
def array(raw: str = "[]") -> Array:
"""Create an array item for its string representation.
:Example:
>>> array("[1, 2, 3]") # Create from a string
[1, 2, 3]
>>> a = array()
>>> a.extend([1, 2, 3]) # Create from a list
>>> a
[1, 2, 3]
"""
return value(raw)
def table(is_super_table: bool | None = None) -> Table:
"""Create an empty table.
:param is_super_table: if true, the table is a super table
:Example:
>>> doc = document()
>>> foo = table(True)
>>> bar = table()
>>> bar.update({'x': 1})
>>> foo.append('bar', bar)
>>> doc.append('foo', foo)
>>> print(doc.as_string())
[foo.bar]
x = 1
"""
return Table(Container(), Trivia(), False, is_super_table)
def inline_table() -> InlineTable:
"""Create an inline table.
:Example:
>>> table = inline_table()
>>> table.update({'x': 1, 'y': 2})
>>> print(table.as_string())
{x = 1, y = 2}
"""
return InlineTable(Container(), Trivia(), new=True)
def aot() -> AoT:
"""Create an array of table.
:Example:
>>> doc = document()
>>> aot = aot()
>>> aot.append(item({'x': 1}))
>>> doc.append('foo', aot)
>>> print(doc.as_string())
[[foo]]
x = 1
"""
return AoT([])
def key(k: str | Iterable[str]) -> Key:
"""Create a key from a string. When a list of string is given,
it will create a dotted key.
:Example:
>>> doc = document()
>>> doc.append(key('foo'), 1)
>>> doc.append(key(['bar', 'baz']), 2)
>>> print(doc.as_string())
foo = 1
bar.baz = 2
"""
if isinstance(k, str):
return SingleKey(k)
return DottedKey([key(_k) for _k in k])
def value(raw: str) -> _Item:
"""Parse a simple value from a string.
:Example:
>>> value("1")
1
>>> value("true")
True
>>> value("[1, 2, 3]")
[1, 2, 3]
"""
parser = Parser(raw)
v = parser._parse_value()
if not parser.end():
raise parser.parse_error(UnexpectedCharError, char=parser._current)
return v
def key_value(src: str) -> tuple[Key, _Item]:
"""Parse a key-value pair from a string.
:Example:
>>> key_value("foo = 1")
(Key('foo'), 1)
"""
return Parser(src)._parse_key_value()
def ws(src: str) -> Whitespace:
"""Create a whitespace from a string."""
return Whitespace(src, fixed=True)
def nl() -> Whitespace:
"""Create a newline item."""
return ws("\n")
def comment(string: str) -> Comment:
"""Create a comment item."""
return Comment(Trivia(comment_ws=" ", comment="# " + string))
E = TypeVar("E", bound=Encoder)
def register_encoder(encoder: E) -> E:
"""Add a custom encoder, which should be a function that will be called
if the value can't otherwise be converted. It should takes a single value
and return a TOMLKit item or raise a ``TypeError``.
"""
CUSTOM_ENCODERS.append(encoder)
return encoder
def unregister_encoder(encoder: Encoder) -> None:
"""Unregister a custom encoder."""
with contextlib.suppress(ValueError):
CUSTOM_ENCODERS.remove(encoder)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/container.py 0000644 0000000 0000000 00000071065 14643451625 014246 0 ustar 00 from __future__ import annotations
import copy
from typing import Any
from typing import Iterator
from tomlkit._compat import decode
from tomlkit._types import _CustomDict
from tomlkit._utils import merge_dicts
from tomlkit.exceptions import KeyAlreadyPresent
from tomlkit.exceptions import NonExistentKey
from tomlkit.exceptions import TOMLKitError
from tomlkit.items import AoT
from tomlkit.items import Comment
from tomlkit.items import Item
from tomlkit.items import Key
from tomlkit.items import Null
from tomlkit.items import SingleKey
from tomlkit.items import Table
from tomlkit.items import Trivia
from tomlkit.items import Whitespace
from tomlkit.items import item as _item
_NOT_SET = object()
class Container(_CustomDict):
"""
A container for items within a TOMLDocument.
This class implements the `dict` interface with copy/deepcopy protocol.
"""
def __init__(self, parsed: bool = False) -> None:
self._map: dict[SingleKey, int | tuple[int, ...]] = {}
self._body: list[tuple[Key | None, Item]] = []
self._parsed = parsed
self._table_keys = []
@property
def body(self) -> list[tuple[Key | None, Item]]:
return self._body
def unwrap(self) -> dict[str, Any]:
"""Returns as pure python object (ppo)"""
unwrapped = {}
for k, v in self.items():
if k is None:
continue
if isinstance(k, Key):
k = k.key
if hasattr(v, "unwrap"):
v = v.unwrap()
if k in unwrapped:
merge_dicts(unwrapped[k], v)
else:
unwrapped[k] = v
return unwrapped
@property
def value(self) -> dict[str, Any]:
"""The wrapped dict value"""
d = {}
for k, v in self._body:
if k is None:
continue
k = k.key
v = v.value
if isinstance(v, Container):
v = v.value
if k in d:
merge_dicts(d[k], v)
else:
d[k] = v
return d
def parsing(self, parsing: bool) -> None:
self._parsed = parsing
for _, v in self._body:
if isinstance(v, Table):
v.value.parsing(parsing)
elif isinstance(v, AoT):
for t in v.body:
t.value.parsing(parsing)
def add(self, key: Key | Item | str, item: Item | None = None) -> Container:
"""
Adds an item to the current Container.
:Example:
>>> # add a key-value pair
>>> doc.add('key', 'value')
>>> # add a comment or whitespace or newline
>>> doc.add(comment('# comment'))
"""
if item is None:
if not isinstance(key, (Comment, Whitespace)):
raise ValueError(
"Non comment/whitespace items must have an associated key"
)
key, item = None, key
return self.append(key, item)
def _handle_dotted_key(self, key: Key, value: Item) -> None:
if isinstance(value, (Table, AoT)):
raise TOMLKitError("Can't add a table to a dotted key")
name, *mid, last = key
name._dotted = True
table = current = Table(Container(True), Trivia(), False, is_super_table=True)
for _name in mid:
_name._dotted = True
new_table = Table(Container(True), Trivia(), False, is_super_table=True)
current.append(_name, new_table)
current = new_table
last.sep = key.sep
current.append(last, value)
self.append(name, table)
return
def _get_last_index_before_table(self) -> int:
last_index = -1
for i, (k, v) in enumerate(self._body):
if isinstance(v, Null):
continue # Null elements are inserted after deletion
if isinstance(v, Whitespace) and not v.is_fixed():
continue
if isinstance(v, (Table, AoT)) and not k.is_dotted():
break
last_index = i
return last_index + 1
def _validate_out_of_order_table(self, key: SingleKey | None = None) -> None:
if key is None:
for k in self._map:
assert k is not None
self._validate_out_of_order_table(k)
return
if key not in self._map or not isinstance(self._map[key], tuple):
return
OutOfOrderTableProxy.validate(self, self._map[key])
def append(
self, key: Key | str | None, item: Item, validate: bool = True
) -> Container:
"""Similar to :meth:`add` but both key and value must be given."""
if not isinstance(key, Key) and key is not None:
key = SingleKey(key)
if not isinstance(item, Item):
item = _item(item)
if key is not None and key.is_multi():
self._handle_dotted_key(key, item)
return self
if isinstance(item, (AoT, Table)) and item.name is None:
item.name = key.key
prev = self._previous_item()
prev_ws = isinstance(prev, Whitespace) or ends_with_whitespace(prev)
if isinstance(item, Table):
if not self._parsed:
item.invalidate_display_name()
if (
self._body
and not (self._parsed or item.trivia.indent or prev_ws)
and not key.is_dotted()
):
item.trivia.indent = "\n"
if isinstance(item, AoT) and self._body and not self._parsed:
item.invalidate_display_name()
if item and not ("\n" in item[0].trivia.indent or prev_ws):
item[0].trivia.indent = "\n" + item[0].trivia.indent
if key is not None and key in self:
current_idx = self._map[key]
if isinstance(current_idx, tuple):
current_body_element = self._body[current_idx[-1]]
else:
current_body_element = self._body[current_idx]
current = current_body_element[1]
if isinstance(item, Table):
if not isinstance(current, (Table, AoT)):
raise KeyAlreadyPresent(key)
if item.is_aot_element():
# New AoT element found later on
# Adding it to the current AoT
if not isinstance(current, AoT):
current = AoT([current, item], parsed=self._parsed)
self._replace(key, key, current)
else:
current.append(item)
return self
elif current.is_aot():
if not item.is_aot_element():
# Tried to define a table after an AoT with the same name.
raise KeyAlreadyPresent(key)
current.append(item)
return self
elif current.is_super_table():
if item.is_super_table():
# We need to merge both super tables
if (
key.is_dotted()
or current_body_element[0].is_dotted()
or self._table_keys[-1] != current_body_element[0]
):
if key.is_dotted() and not self._parsed:
idx = self._get_last_index_before_table()
else:
idx = len(self._body)
if idx < len(self._body):
self._insert_at(idx, key, item)
else:
self._raw_append(key, item)
if validate:
self._validate_out_of_order_table(key)
return self
# Create a new element to replace the old one
current = copy.deepcopy(current)
for k, v in item.value.body:
current.append(k, v)
self._body[
(
current_idx[-1]
if isinstance(current_idx, tuple)
else current_idx
)
] = (current_body_element[0], current)
return self
elif current_body_element[0].is_dotted():
raise TOMLKitError("Redefinition of an existing table")
elif not item.is_super_table():
raise KeyAlreadyPresent(key)
elif isinstance(item, AoT):
if not isinstance(current, AoT):
# Tried to define an AoT after a table with the same name.
raise KeyAlreadyPresent(key)
for table in item.body:
current.append(table)
return self
else:
raise KeyAlreadyPresent(key)
is_table = isinstance(item, (Table, AoT))
if (
key is not None
and self._body
and not self._parsed
and (not is_table or key.is_dotted())
):
# If there is already at least one table in the current container
# and the given item is not a table, we need to find the last
# item that is not a table and insert after it
# If no such item exists, insert at the top of the table
last_index = self._get_last_index_before_table()
if last_index < len(self._body):
return self._insert_at(last_index, key, item)
else:
previous_item = self._body[-1][1]
if not (
isinstance(previous_item, Whitespace)
or ends_with_whitespace(previous_item)
or "\n" in previous_item.trivia.trail
):
previous_item.trivia.trail += "\n"
self._raw_append(key, item)
return self
def _raw_append(self, key: Key | None, item: Item) -> None:
if key in self._map:
current_idx = self._map[key]
if not isinstance(current_idx, tuple):
current_idx = (current_idx,)
current = self._body[current_idx[-1]][1]
if key is not None and not isinstance(current, Table):
raise KeyAlreadyPresent(key)
self._map[key] = (*current_idx, len(self._body))
elif key is not None:
self._map[key] = len(self._body)
self._body.append((key, item))
if item.is_table():
self._table_keys.append(key)
if key is not None:
dict.__setitem__(self, key.key, item.value)
def _remove_at(self, idx: int) -> None:
key = self._body[idx][0]
index = self._map.get(key)
if index is None:
raise NonExistentKey(key)
self._body[idx] = (None, Null())
if isinstance(index, tuple):
index = list(index)
index.remove(idx)
if len(index) == 1:
index = index.pop()
else:
index = tuple(index)
self._map[key] = index
else:
dict.__delitem__(self, key.key)
self._map.pop(key)
def remove(self, key: Key | str) -> Container:
"""Remove a key from the container."""
if not isinstance(key, Key):
key = SingleKey(key)
idx = self._map.pop(key, None)
if idx is None:
raise NonExistentKey(key)
if isinstance(idx, tuple):
for i in idx:
self._body[i] = (None, Null())
else:
self._body[idx] = (None, Null())
dict.__delitem__(self, key.key)
return self
def _insert_after(
self, key: Key | str, other_key: Key | str, item: Any
) -> Container:
if key is None:
raise ValueError("Key cannot be null in insert_after()")
if key not in self:
raise NonExistentKey(key)
if not isinstance(key, Key):
key = SingleKey(key)
if not isinstance(other_key, Key):
other_key = SingleKey(other_key)
item = _item(item)
idx = self._map[key]
# Insert after the max index if there are many.
if isinstance(idx, tuple):
idx = max(idx)
current_item = self._body[idx][1]
if "\n" not in current_item.trivia.trail:
current_item.trivia.trail += "\n"
# Increment indices after the current index
for k, v in self._map.items():
if isinstance(v, tuple):
new_indices = []
for v_ in v:
if v_ > idx:
v_ = v_ + 1
new_indices.append(v_)
self._map[k] = tuple(new_indices)
elif v > idx:
self._map[k] = v + 1
self._map[other_key] = idx + 1
self._body.insert(idx + 1, (other_key, item))
if key is not None:
dict.__setitem__(self, other_key.key, item.value)
return self
def _insert_at(self, idx: int, key: Key | str, item: Any) -> Container:
if idx > len(self._body) - 1:
raise ValueError(f"Unable to insert at position {idx}")
if not isinstance(key, Key):
key = SingleKey(key)
item = _item(item)
if idx > 0:
previous_item = self._body[idx - 1][1]
if not (
isinstance(previous_item, Whitespace)
or ends_with_whitespace(previous_item)
or isinstance(item, (AoT, Table))
or "\n" in previous_item.trivia.trail
):
previous_item.trivia.trail += "\n"
# Increment indices after the current index
for k, v in self._map.items():
if isinstance(v, tuple):
new_indices = []
for v_ in v:
if v_ >= idx:
v_ = v_ + 1
new_indices.append(v_)
self._map[k] = tuple(new_indices)
elif v >= idx:
self._map[k] = v + 1
if key in self._map:
current_idx = self._map[key]
if not isinstance(current_idx, tuple):
current_idx = (current_idx,)
self._map[key] = (*current_idx, idx)
else:
self._map[key] = idx
self._body.insert(idx, (key, item))
dict.__setitem__(self, key.key, item.value)
return self
def item(self, key: Key | str) -> Item:
"""Get an item for the given key."""
if not isinstance(key, Key):
key = SingleKey(key)
idx = self._map.get(key)
if idx is None:
raise NonExistentKey(key)
if isinstance(idx, tuple):
# The item we are getting is an out of order table
# so we need a proxy to retrieve the proper objects
# from the parent container
return OutOfOrderTableProxy(self, idx)
return self._body[idx][1]
def last_item(self) -> Item | None:
"""Get the last item."""
if self._body:
return self._body[-1][1]
def as_string(self) -> str:
"""Render as TOML string."""
s = ""
for k, v in self._body:
if k is not None:
if isinstance(v, Table):
s += self._render_table(k, v)
elif isinstance(v, AoT):
s += self._render_aot(k, v)
else:
s += self._render_simple_item(k, v)
else:
s += self._render_simple_item(k, v)
return s
def _render_table(self, key: Key, table: Table, prefix: str | None = None) -> str:
cur = ""
if table.display_name is not None:
_key = table.display_name
else:
_key = key.as_string()
if prefix is not None:
_key = prefix + "." + _key
if not table.is_super_table() or (
any(
not isinstance(v, (Table, AoT, Whitespace, Null))
for _, v in table.value.body
)
and not key.is_dotted()
):
open_, close = "[", "]"
if table.is_aot_element():
open_, close = "[[", "]]"
newline_in_table_trivia = (
"\n" if "\n" not in table.trivia.trail and len(table.value) > 0 else ""
)
cur += (
f"{table.trivia.indent}"
f"{open_}"
f"{decode(_key)}"
f"{close}"
f"{table.trivia.comment_ws}"
f"{decode(table.trivia.comment)}"
f"{table.trivia.trail}"
f"{newline_in_table_trivia}"
)
elif table.trivia.indent == "\n":
cur += table.trivia.indent
for k, v in table.value.body:
if isinstance(v, Table):
if v.is_super_table():
if k.is_dotted() and not key.is_dotted():
# Dotted key inside table
cur += self._render_table(k, v)
else:
cur += self._render_table(k, v, prefix=_key)
else:
cur += self._render_table(k, v, prefix=_key)
elif isinstance(v, AoT):
cur += self._render_aot(k, v, prefix=_key)
else:
cur += self._render_simple_item(
k, v, prefix=_key if key.is_dotted() else None
)
return cur
def _render_aot(self, key, aot, prefix=None):
_key = key.as_string()
if prefix is not None:
_key = prefix + "." + _key
cur = ""
_key = decode(_key)
for table in aot.body:
cur += self._render_aot_table(table, prefix=_key)
return cur
def _render_aot_table(self, table: Table, prefix: str | None = None) -> str:
cur = ""
_key = prefix or ""
open_, close = "[[", "]]"
cur += (
f"{table.trivia.indent}"
f"{open_}"
f"{decode(_key)}"
f"{close}"
f"{table.trivia.comment_ws}"
f"{decode(table.trivia.comment)}"
f"{table.trivia.trail}"
)
for k, v in table.value.body:
if isinstance(v, Table):
if v.is_super_table():
if k.is_dotted():
# Dotted key inside table
cur += self._render_table(k, v)
else:
cur += self._render_table(k, v, prefix=_key)
else:
cur += self._render_table(k, v, prefix=_key)
elif isinstance(v, AoT):
cur += self._render_aot(k, v, prefix=_key)
else:
cur += self._render_simple_item(k, v)
return cur
def _render_simple_item(self, key, item, prefix=None):
if key is None:
return item.as_string()
_key = key.as_string()
if prefix is not None:
_key = prefix + "." + _key
return (
f"{item.trivia.indent}"
f"{decode(_key)}"
f"{key.sep}"
f"{decode(item.as_string())}"
f"{item.trivia.comment_ws}"
f"{decode(item.trivia.comment)}"
f"{item.trivia.trail}"
)
def __len__(self) -> int:
return dict.__len__(self)
def __iter__(self) -> Iterator[str]:
return iter(dict.keys(self))
# Dictionary methods
def __getitem__(self, key: Key | str) -> Item | Container:
item = self.item(key)
if isinstance(item, Item) and item.is_boolean():
return item.value
return item
def __setitem__(self, key: Key | str, value: Any) -> None:
if key is not None and key in self:
old_key = next(filter(lambda k: k == key, self._map))
self._replace(old_key, key, value)
else:
self.append(key, value)
def __delitem__(self, key: Key | str) -> None:
self.remove(key)
def setdefault(self, key: Key | str, default: Any) -> Any:
super().setdefault(key, default=default)
return self[key]
def _replace(self, key: Key | str, new_key: Key | str, value: Item) -> None:
if not isinstance(key, Key):
key = SingleKey(key)
idx = self._map.get(key)
if idx is None:
raise NonExistentKey(key)
self._replace_at(idx, new_key, value)
def _replace_at(
self, idx: int | tuple[int], new_key: Key | str, value: Item
) -> None:
value = _item(value)
if isinstance(idx, tuple):
for i in idx[1:]:
self._body[i] = (None, Null())
idx = idx[0]
k, v = self._body[idx]
if not isinstance(new_key, Key):
if (
isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table))
or new_key != k.key
):
new_key = SingleKey(new_key)
else: # Inherit the sep of the old key
new_key = k
del self._map[k]
self._map[new_key] = idx
if new_key != k:
dict.__delitem__(self, k)
if isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table)):
# new tables should appear after all non-table values
self.remove(k)
for i in range(idx, len(self._body)):
if isinstance(self._body[i][1], (AoT, Table)):
self._insert_at(i, new_key, value)
idx = i
break
else:
idx = -1
self.append(new_key, value)
else:
# Copying trivia
if not isinstance(value, (Whitespace, AoT)):
value.trivia.indent = v.trivia.indent
value.trivia.comment_ws = value.trivia.comment_ws or v.trivia.comment_ws
value.trivia.comment = value.trivia.comment or v.trivia.comment
value.trivia.trail = v.trivia.trail
self._body[idx] = (new_key, value)
if hasattr(value, "invalidate_display_name"):
value.invalidate_display_name() # type: ignore[attr-defined]
if isinstance(value, Table):
# Insert a cosmetic new line for tables if:
# - it does not have it yet OR is not followed by one
# - it is not the last item, or
# - The table being replaced has a newline
last, _ = self._previous_item_with_index()
idx = last if idx < 0 else idx
has_ws = ends_with_whitespace(value)
replace_has_ws = (
isinstance(v, Table)
and v.value.body
and isinstance(v.value.body[-1][1], Whitespace)
)
next_ws = idx < last and isinstance(self._body[idx + 1][1], Whitespace)
if (idx < last or replace_has_ws) and not (next_ws or has_ws):
value.append(None, Whitespace("\n"))
dict.__setitem__(self, new_key.key, value.value)
def __str__(self) -> str:
return str(self.value)
def __repr__(self) -> str:
return repr(self.value)
def __eq__(self, other: dict) -> bool:
if not isinstance(other, dict):
return NotImplemented
return self.value == other
def _getstate(self, protocol):
return (self._parsed,)
def __reduce__(self):
return self.__reduce_ex__(2)
def __reduce_ex__(self, protocol):
return (
self.__class__,
self._getstate(protocol),
(self._map, self._body, self._parsed, self._table_keys),
)
def __setstate__(self, state):
self._map = state[0]
self._body = state[1]
self._parsed = state[2]
self._table_keys = state[3]
for key, item in self._body:
if key is not None:
dict.__setitem__(self, key.key, item.value)
def copy(self) -> Container:
return copy.copy(self)
def __copy__(self) -> Container:
c = self.__class__(self._parsed)
for k, v in dict.items(self):
dict.__setitem__(c, k, v)
c._body += self.body
c._map.update(self._map)
return c
def _previous_item_with_index(
self, idx: int | None = None, ignore=(Null,)
) -> tuple[int, Item] | None:
"""Find the immediate previous item before index ``idx``"""
if idx is None or idx > len(self._body):
idx = len(self._body)
for i in range(idx - 1, -1, -1):
v = self._body[i][-1]
if not isinstance(v, ignore):
return i, v
return None
def _previous_item(self, idx: int | None = None, ignore=(Null,)) -> Item | None:
"""Find the immediate previous item before index ``idx``.
If ``idx`` is not given, the last item is returned.
"""
prev = self._previous_item_with_index(idx, ignore)
return prev[-1] if prev else None
class OutOfOrderTableProxy(_CustomDict):
@staticmethod
def validate(container: Container, indices: tuple[int, ...]) -> None:
"""Validate out of order tables in the given container"""
# Append all items to a temp container to see if there is any error
temp_container = Container(True)
for i in indices:
_, item = container._body[i]
if isinstance(item, Table):
for k, v in item.value.body:
temp_container.append(k, v, validate=False)
temp_container._validate_out_of_order_table()
def __init__(self, container: Container, indices: tuple[int, ...]) -> None:
self._container = container
self._internal_container = Container(True)
self._tables = []
self._tables_map = {}
for i in indices:
_, item = self._container._body[i]
if isinstance(item, Table):
self._tables.append(item)
table_idx = len(self._tables) - 1
for k, v in item.value.body:
self._internal_container._raw_append(k, v)
self._tables_map[k] = table_idx
if k is not None:
dict.__setitem__(self, k.key, v)
self._internal_container._validate_out_of_order_table()
def unwrap(self) -> str:
return self._internal_container.unwrap()
@property
def value(self):
return self._internal_container.value
def __getitem__(self, key: Key | str) -> Any:
if key not in self._internal_container:
raise NonExistentKey(key)
return self._internal_container[key]
def __setitem__(self, key: Key | str, item: Any) -> None:
if key in self._tables_map:
table = self._tables[self._tables_map[key]]
table[key] = item
elif self._tables:
table = self._tables[0]
table[key] = item
else:
self._container[key] = item
self._internal_container[key] = item
if key is not None:
dict.__setitem__(self, key, item)
def _remove_table(self, table: Table) -> None:
"""Remove table from the parent container"""
self._tables.remove(table)
for idx, item in enumerate(self._container._body):
if item[1] is table:
self._container._remove_at(idx)
break
def __delitem__(self, key: Key | str) -> None:
if key in self._tables_map:
table = self._tables[self._tables_map[key]]
del table[key]
if not table and len(self._tables) > 1:
self._remove_table(table)
del self._tables_map[key]
else:
raise NonExistentKey(key)
del self._internal_container[key]
if key is not None:
dict.__delitem__(self, key)
def __iter__(self) -> Iterator[str]:
return iter(dict.keys(self))
def __len__(self) -> int:
return dict.__len__(self)
def setdefault(self, key: Key | str, default: Any) -> Any:
super().setdefault(key, default=default)
return self[key]
def ends_with_whitespace(it: Any) -> bool:
"""Returns ``True`` if the given item ``it`` is a ``Table`` or ``AoT`` object
ending with a ``Whitespace``.
"""
return (
isinstance(it, Table) and isinstance(it.value._previous_item(), Whitespace)
) or (isinstance(it, AoT) and len(it) > 0 and isinstance(it[-1], Whitespace))
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/exceptions.py 0000644 0000000 0000000 00000013107 14643451625 014436 0 ustar 00 from __future__ import annotations
from typing import Collection
class TOMLKitError(Exception):
pass
class ParseError(ValueError, TOMLKitError):
"""
This error occurs when the parser encounters a syntax error
in the TOML being parsed. The error references the line and
location within the line where the error was encountered.
"""
def __init__(self, line: int, col: int, message: str | None = None) -> None:
self._line = line
self._col = col
if message is None:
message = "TOML parse error"
super().__init__(f"{message} at line {self._line} col {self._col}")
@property
def line(self):
return self._line
@property
def col(self):
return self._col
class MixedArrayTypesError(ParseError):
"""
An array was found that had two or more element types.
"""
def __init__(self, line: int, col: int) -> None:
message = "Mixed types found in array"
super().__init__(line, col, message=message)
class InvalidNumberError(ParseError):
"""
A numeric field was improperly specified.
"""
def __init__(self, line: int, col: int) -> None:
message = "Invalid number"
super().__init__(line, col, message=message)
class InvalidDateTimeError(ParseError):
"""
A datetime field was improperly specified.
"""
def __init__(self, line: int, col: int) -> None:
message = "Invalid datetime"
super().__init__(line, col, message=message)
class InvalidDateError(ParseError):
"""
A date field was improperly specified.
"""
def __init__(self, line: int, col: int) -> None:
message = "Invalid date"
super().__init__(line, col, message=message)
class InvalidTimeError(ParseError):
"""
A date field was improperly specified.
"""
def __init__(self, line: int, col: int) -> None:
message = "Invalid time"
super().__init__(line, col, message=message)
class InvalidNumberOrDateError(ParseError):
"""
A numeric or date field was improperly specified.
"""
def __init__(self, line: int, col: int) -> None:
message = "Invalid number or date format"
super().__init__(line, col, message=message)
class InvalidUnicodeValueError(ParseError):
"""
A unicode code was improperly specified.
"""
def __init__(self, line: int, col: int) -> None:
message = "Invalid unicode value"
super().__init__(line, col, message=message)
class UnexpectedCharError(ParseError):
"""
An unexpected character was found during parsing.
"""
def __init__(self, line: int, col: int, char: str) -> None:
message = f"Unexpected character: {char!r}"
super().__init__(line, col, message=message)
class EmptyKeyError(ParseError):
"""
An empty key was found during parsing.
"""
def __init__(self, line: int, col: int) -> None:
message = "Empty key"
super().__init__(line, col, message=message)
class EmptyTableNameError(ParseError):
"""
An empty table name was found during parsing.
"""
def __init__(self, line: int, col: int) -> None:
message = "Empty table name"
super().__init__(line, col, message=message)
class InvalidCharInStringError(ParseError):
"""
The string being parsed contains an invalid character.
"""
def __init__(self, line: int, col: int, char: str) -> None:
message = f"Invalid character {char!r} in string"
super().__init__(line, col, message=message)
class UnexpectedEofError(ParseError):
"""
The TOML being parsed ended before the end of a statement.
"""
def __init__(self, line: int, col: int) -> None:
message = "Unexpected end of file"
super().__init__(line, col, message=message)
class InternalParserError(ParseError):
"""
An error that indicates a bug in the parser.
"""
def __init__(self, line: int, col: int, message: str | None = None) -> None:
msg = "Internal parser error"
if message:
msg += f" ({message})"
super().__init__(line, col, message=msg)
class NonExistentKey(KeyError, TOMLKitError):
"""
A non-existent key was used.
"""
def __init__(self, key):
message = f'Key "{key}" does not exist.'
super().__init__(message)
class KeyAlreadyPresent(TOMLKitError):
"""
An already present key was used.
"""
def __init__(self, key):
key = getattr(key, "key", key)
message = f'Key "{key}" already exists.'
super().__init__(message)
class InvalidControlChar(ParseError):
def __init__(self, line: int, col: int, char: int, type: str) -> None:
display_code = "\\u00"
if char < 16:
display_code += "0"
display_code += hex(char)[2:]
message = (
"Control characters (codes less than 0x1f and 0x7f)"
f" are not allowed in {type}, "
f"use {display_code} instead"
)
super().__init__(line, col, message=message)
class InvalidStringError(ValueError, TOMLKitError):
def __init__(self, value: str, invalid_sequences: Collection[str], delimiter: str):
repr_ = repr(value)[1:-1]
super().__init__(
f"Invalid string: {delimiter}{repr_}{delimiter}. "
f"The character sequences {invalid_sequences} are invalid."
)
class ConvertError(TypeError, ValueError, TOMLKitError):
"""Raised when item() fails to convert a value.
It should be a TypeError, but due to historical reasons
it needs to subclass ValueError as well.
"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/items.py 0000644 0000000 0000000 00000147667 14643451625 013421 0 ustar 00 from __future__ import annotations
import abc
import copy
import dataclasses
import math
import re
import string
import sys
from datetime import date
from datetime import datetime
from datetime import time
from datetime import tzinfo
from enum import Enum
from typing import TYPE_CHECKING
from typing import Any
from typing import Callable
from typing import Collection
from typing import Iterable
from typing import Iterator
from typing import Sequence
from typing import TypeVar
from typing import cast
from typing import overload
from tomlkit._compat import PY38
from tomlkit._compat import decode
from tomlkit._types import _CustomDict
from tomlkit._types import _CustomFloat
from tomlkit._types import _CustomInt
from tomlkit._types import _CustomList
from tomlkit._types import wrap_method
from tomlkit._utils import CONTROL_CHARS
from tomlkit._utils import escape_string
from tomlkit.exceptions import ConvertError
from tomlkit.exceptions import InvalidStringError
if TYPE_CHECKING:
from tomlkit import container
ItemT = TypeVar("ItemT", bound="Item")
Encoder = Callable[[Any], "Item"]
CUSTOM_ENCODERS: list[Encoder] = []
AT = TypeVar("AT", bound="AbstractTable")
@overload
def item(value: bool, _parent: Item | None = ..., _sort_keys: bool = ...) -> Bool: ...
@overload
def item(value: int, _parent: Item | None = ..., _sort_keys: bool = ...) -> Integer: ...
@overload
def item(value: float, _parent: Item | None = ..., _sort_keys: bool = ...) -> Float: ...
@overload
def item(value: str, _parent: Item | None = ..., _sort_keys: bool = ...) -> String: ...
@overload
def item(
value: datetime, _parent: Item | None = ..., _sort_keys: bool = ...
) -> DateTime: ...
@overload
def item(value: date, _parent: Item | None = ..., _sort_keys: bool = ...) -> Date: ...
@overload
def item(value: time, _parent: Item | None = ..., _sort_keys: bool = ...) -> Time: ...
@overload
def item(
value: Sequence[dict], _parent: Item | None = ..., _sort_keys: bool = ...
) -> AoT: ...
@overload
def item(
value: Sequence, _parent: Item | None = ..., _sort_keys: bool = ...
) -> Array: ...
@overload
def item(value: dict, _parent: Array = ..., _sort_keys: bool = ...) -> InlineTable: ...
@overload
def item(value: dict, _parent: Item | None = ..., _sort_keys: bool = ...) -> Table: ...
@overload
def item(value: ItemT, _parent: Item | None = ..., _sort_keys: bool = ...) -> ItemT: ...
def item(value: Any, _parent: Item | None = None, _sort_keys: bool = False) -> Item:
"""Create a TOML item from a Python object.
:Example:
>>> item(42)
42
>>> item([1, 2, 3])
[1, 2, 3]
>>> item({'a': 1, 'b': 2})
a = 1
b = 2
"""
from tomlkit.container import Container
if isinstance(value, Item):
return value
if isinstance(value, bool):
return Bool(value, Trivia())
elif isinstance(value, int):
return Integer(value, Trivia(), str(value))
elif isinstance(value, float):
return Float(value, Trivia(), str(value))
elif isinstance(value, dict):
table_constructor = (
InlineTable if isinstance(_parent, (Array, InlineTable)) else Table
)
val = table_constructor(Container(), Trivia(), False)
for k, v in sorted(
value.items(),
key=lambda i: (isinstance(i[1], dict), i[0]) if _sort_keys else 1,
):
val[k] = item(v, _parent=val, _sort_keys=_sort_keys)
return val
elif isinstance(value, (list, tuple)):
if (
value
and all(isinstance(v, dict) for v in value)
and (_parent is None or isinstance(_parent, Table))
):
a = AoT([])
table_constructor = Table
else:
a = Array([], Trivia())
table_constructor = InlineTable
for v in value:
if isinstance(v, dict):
table = table_constructor(Container(), Trivia(), True)
for k, _v in sorted(
v.items(),
key=lambda i: (isinstance(i[1], dict), i[0] if _sort_keys else 1),
):
i = item(_v, _parent=table, _sort_keys=_sort_keys)
if isinstance(table, InlineTable):
i.trivia.trail = ""
table[k] = i
v = table
a.append(v)
return a
elif isinstance(value, str):
return String.from_raw(value)
elif isinstance(value, datetime):
return DateTime(
value.year,
value.month,
value.day,
value.hour,
value.minute,
value.second,
value.microsecond,
value.tzinfo,
Trivia(),
value.isoformat().replace("+00:00", "Z"),
)
elif isinstance(value, date):
return Date(value.year, value.month, value.day, Trivia(), value.isoformat())
elif isinstance(value, time):
return Time(
value.hour,
value.minute,
value.second,
value.microsecond,
value.tzinfo,
Trivia(),
value.isoformat(),
)
else:
for encoder in CUSTOM_ENCODERS:
try:
rv = encoder(value)
except ConvertError:
pass
else:
if not isinstance(rv, Item):
raise ConvertError(
f"Custom encoder is expected to return an instance of Item, got {type(rv)}"
)
return rv
raise ConvertError(f"Unable to convert an object of {type(value)} to a TOML item")
class StringType(Enum):
# Single Line Basic
SLB = '"'
# Multi Line Basic
MLB = '"""'
# Single Line Literal
SLL = "'"
# Multi Line Literal
MLL = "'''"
@classmethod
def select(cls, literal=False, multiline=False) -> StringType:
return {
(False, False): cls.SLB,
(False, True): cls.MLB,
(True, False): cls.SLL,
(True, True): cls.MLL,
}[(literal, multiline)]
@property
def escaped_sequences(self) -> Collection[str]:
# https://toml.io/en/v1.0.0#string
escaped_in_basic = CONTROL_CHARS | {"\\"}
allowed_in_multiline = {"\n", "\r"}
return {
StringType.SLB: escaped_in_basic | {'"'},
StringType.MLB: (escaped_in_basic | {'"""'}) - allowed_in_multiline,
StringType.SLL: (),
StringType.MLL: (),
}[self]
@property
def invalid_sequences(self) -> Collection[str]:
# https://toml.io/en/v1.0.0#string
forbidden_in_literal = CONTROL_CHARS - {"\t"}
allowed_in_multiline = {"\n", "\r"}
return {
StringType.SLB: (),
StringType.MLB: (),
StringType.SLL: forbidden_in_literal | {"'"},
StringType.MLL: (forbidden_in_literal | {"'''"}) - allowed_in_multiline,
}[self]
@property
def unit(self) -> str:
return self.value[0]
def is_basic(self) -> bool:
return self in {StringType.SLB, StringType.MLB}
def is_literal(self) -> bool:
return self in {StringType.SLL, StringType.MLL}
def is_singleline(self) -> bool:
return self in {StringType.SLB, StringType.SLL}
def is_multiline(self) -> bool:
return self in {StringType.MLB, StringType.MLL}
def toggle(self) -> StringType:
return {
StringType.SLB: StringType.MLB,
StringType.MLB: StringType.SLB,
StringType.SLL: StringType.MLL,
StringType.MLL: StringType.SLL,
}[self]
class BoolType(Enum):
TRUE = "true"
FALSE = "false"
def __bool__(self):
return {BoolType.TRUE: True, BoolType.FALSE: False}[self]
def __iter__(self):
return iter(self.value)
def __len__(self):
return len(self.value)
@dataclasses.dataclass
class Trivia:
"""
Trivia information (aka metadata).
"""
# Whitespace before a value.
indent: str = ""
# Whitespace after a value, but before a comment.
comment_ws: str = ""
# Comment, starting with # character, or empty string if no comment.
comment: str = ""
# Trailing newline.
trail: str = "\n"
def copy(self) -> Trivia:
return dataclasses.replace(self)
class KeyType(Enum):
"""
The type of a Key.
Keys can be bare (unquoted), or quoted using basic ("), or literal (')
quotes following the same escaping rules as single-line StringType.
"""
Bare = ""
Basic = '"'
Literal = "'"
class Key(abc.ABC):
"""Base class for a key"""
sep: str
_original: str
_keys: list[SingleKey]
_dotted: bool
key: str
@abc.abstractmethod
def __hash__(self) -> int:
pass
@abc.abstractmethod
def __eq__(self, __o: object) -> bool:
pass
def is_dotted(self) -> bool:
"""If the key is followed by other keys"""
return self._dotted
def __iter__(self) -> Iterator[SingleKey]:
return iter(self._keys)
def concat(self, other: Key) -> DottedKey:
"""Concatenate keys into a dotted key"""
keys = self._keys + other._keys
return DottedKey(keys, sep=self.sep)
def is_multi(self) -> bool:
"""Check if the key contains multiple keys"""
return len(self._keys) > 1
def as_string(self) -> str:
"""The TOML representation"""
return self._original
def __str__(self) -> str:
return self.as_string()
def __repr__(self) -> str:
return f""
class SingleKey(Key):
"""A single key"""
def __init__(
self,
k: str,
t: KeyType | None = None,
sep: str | None = None,
original: str | None = None,
) -> None:
if t is None:
if not k or any(
c not in string.ascii_letters + string.digits + "-" + "_" for c in k
):
t = KeyType.Basic
else:
t = KeyType.Bare
self.t = t
if sep is None:
sep = " = "
self.sep = sep
self.key = k
if original is None:
key_str = escape_string(k) if t == KeyType.Basic else k
original = f"{t.value}{key_str}{t.value}"
self._original = original
self._keys = [self]
self._dotted = False
@property
def delimiter(self) -> str:
"""The delimiter: double quote/single quote/none"""
return self.t.value
def is_bare(self) -> bool:
"""Check if the key is bare"""
return self.t == KeyType.Bare
def __hash__(self) -> int:
return hash(self.key)
def __eq__(self, other: Any) -> bool:
if isinstance(other, Key):
return isinstance(other, SingleKey) and self.key == other.key
return self.key == other
class DottedKey(Key):
def __init__(
self,
keys: Iterable[SingleKey],
sep: str | None = None,
original: str | None = None,
) -> None:
self._keys = list(keys)
if original is None:
original = ".".join(k.as_string() for k in self._keys)
self.sep = " = " if sep is None else sep
self._original = original
self._dotted = False
self.key = ".".join(k.key for k in self._keys)
def __hash__(self) -> int:
return hash(tuple(self._keys))
def __eq__(self, __o: object) -> bool:
return isinstance(__o, DottedKey) and self._keys == __o._keys
class Item:
"""
An item within a TOML document.
"""
def __init__(self, trivia: Trivia) -> None:
self._trivia = trivia
@property
def trivia(self) -> Trivia:
"""The trivia element associated with this item"""
return self._trivia
@property
def discriminant(self) -> int:
raise NotImplementedError()
def as_string(self) -> str:
"""The TOML representation"""
raise NotImplementedError()
@property
def value(self) -> Any:
return self
def unwrap(self) -> Any:
"""Returns as pure python object (ppo)"""
raise NotImplementedError()
# Helpers
def comment(self, comment: str) -> Item:
"""Attach a comment to this item"""
if not comment.strip().startswith("#"):
comment = "# " + comment
self._trivia.comment_ws = " "
self._trivia.comment = comment
return self
def indent(self, indent: int) -> Item:
"""Indent this item with given number of spaces"""
if self._trivia.indent.startswith("\n"):
self._trivia.indent = "\n" + " " * indent
else:
self._trivia.indent = " " * indent
return self
def is_boolean(self) -> bool:
return isinstance(self, Bool)
def is_table(self) -> bool:
return isinstance(self, Table)
def is_inline_table(self) -> bool:
return isinstance(self, InlineTable)
def is_aot(self) -> bool:
return isinstance(self, AoT)
def _getstate(self, protocol=3):
return (self._trivia,)
def __reduce__(self):
return self.__reduce_ex__(2)
def __reduce_ex__(self, protocol):
return self.__class__, self._getstate(protocol)
class Whitespace(Item):
"""
A whitespace literal.
"""
def __init__(self, s: str, fixed: bool = False) -> None:
self._s = s
self._fixed = fixed
@property
def s(self) -> str:
return self._s
@property
def value(self) -> str:
"""The wrapped string of the whitespace"""
return self._s
@property
def trivia(self) -> Trivia:
raise RuntimeError("Called trivia on a Whitespace variant.")
@property
def discriminant(self) -> int:
return 0
def is_fixed(self) -> bool:
"""If the whitespace is fixed, it can't be merged or discarded from the output."""
return self._fixed
def as_string(self) -> str:
return self._s
def __repr__(self) -> str:
return f"<{self.__class__.__name__} {self._s!r}>"
def _getstate(self, protocol=3):
return self._s, self._fixed
class Comment(Item):
"""
A comment literal.
"""
@property
def discriminant(self) -> int:
return 1
def as_string(self) -> str:
return (
f"{self._trivia.indent}{decode(self._trivia.comment)}{self._trivia.trail}"
)
def __str__(self) -> str:
return f"{self._trivia.indent}{decode(self._trivia.comment)}"
class Integer(Item, _CustomInt):
"""
An integer literal.
"""
def __new__(cls, value: int, trivia: Trivia, raw: str) -> Integer:
return int.__new__(cls, value)
def __init__(self, value: int, trivia: Trivia, raw: str) -> None:
super().__init__(trivia)
self._original = value
self._raw = raw
self._sign = False
if re.match(r"^[+\-]\d+$", raw):
self._sign = True
def unwrap(self) -> int:
return self._original
__int__ = unwrap
def __hash__(self) -> int:
return hash(self.unwrap())
@property
def discriminant(self) -> int:
return 2
@property
def value(self) -> int:
"""The wrapped integer value"""
return self
def as_string(self) -> str:
return self._raw
def _new(self, result):
raw = str(result)
if self._sign and result >= 0:
raw = f"+{raw}"
return Integer(result, self._trivia, raw)
def _getstate(self, protocol=3):
return int(self), self._trivia, self._raw
# int methods
__abs__ = wrap_method(int.__abs__)
__add__ = wrap_method(int.__add__)
__and__ = wrap_method(int.__and__)
__ceil__ = wrap_method(int.__ceil__)
__eq__ = int.__eq__
__floor__ = wrap_method(int.__floor__)
__floordiv__ = wrap_method(int.__floordiv__)
__invert__ = wrap_method(int.__invert__)
__le__ = int.__le__
__lshift__ = wrap_method(int.__lshift__)
__lt__ = int.__lt__
__mod__ = wrap_method(int.__mod__)
__mul__ = wrap_method(int.__mul__)
__neg__ = wrap_method(int.__neg__)
__or__ = wrap_method(int.__or__)
__pos__ = wrap_method(int.__pos__)
__pow__ = wrap_method(int.__pow__)
__radd__ = wrap_method(int.__radd__)
__rand__ = wrap_method(int.__rand__)
__rfloordiv__ = wrap_method(int.__rfloordiv__)
__rlshift__ = wrap_method(int.__rlshift__)
__rmod__ = wrap_method(int.__rmod__)
__rmul__ = wrap_method(int.__rmul__)
__ror__ = wrap_method(int.__ror__)
__round__ = wrap_method(int.__round__)
__rpow__ = wrap_method(int.__rpow__)
__rrshift__ = wrap_method(int.__rrshift__)
__rshift__ = wrap_method(int.__rshift__)
__rxor__ = wrap_method(int.__rxor__)
__trunc__ = wrap_method(int.__trunc__)
__xor__ = wrap_method(int.__xor__)
def __rtruediv__(self, other):
result = int.__rtruediv__(self, other)
if result is NotImplemented:
return result
return Float._new(self, result)
def __truediv__(self, other):
result = int.__truediv__(self, other)
if result is NotImplemented:
return result
return Float._new(self, result)
class Float(Item, _CustomFloat):
"""
A float literal.
"""
def __new__(cls, value: float, trivia: Trivia, raw: str) -> Float:
return float.__new__(cls, value)
def __init__(self, value: float, trivia: Trivia, raw: str) -> None:
super().__init__(trivia)
self._original = value
self._raw = raw
self._sign = False
if re.match(r"^[+\-].+$", raw):
self._sign = True
def unwrap(self) -> float:
return self._original
__float__ = unwrap
def __hash__(self) -> int:
return hash(self.unwrap())
@property
def discriminant(self) -> int:
return 3
@property
def value(self) -> float:
"""The wrapped float value"""
return self
def as_string(self) -> str:
return self._raw
def _new(self, result):
raw = str(result)
if self._sign and result >= 0:
raw = f"+{raw}"
return Float(result, self._trivia, raw)
def _getstate(self, protocol=3):
return float(self), self._trivia, self._raw
# float methods
__abs__ = wrap_method(float.__abs__)
__add__ = wrap_method(float.__add__)
__eq__ = float.__eq__
__floordiv__ = wrap_method(float.__floordiv__)
__le__ = float.__le__
__lt__ = float.__lt__
__mod__ = wrap_method(float.__mod__)
__mul__ = wrap_method(float.__mul__)
__neg__ = wrap_method(float.__neg__)
__pos__ = wrap_method(float.__pos__)
__pow__ = wrap_method(float.__pow__)
__radd__ = wrap_method(float.__radd__)
__rfloordiv__ = wrap_method(float.__rfloordiv__)
__rmod__ = wrap_method(float.__rmod__)
__rmul__ = wrap_method(float.__rmul__)
__round__ = wrap_method(float.__round__)
__rpow__ = wrap_method(float.__rpow__)
__rtruediv__ = wrap_method(float.__rtruediv__)
__truediv__ = wrap_method(float.__truediv__)
__trunc__ = float.__trunc__
if sys.version_info >= (3, 9):
__ceil__ = float.__ceil__
__floor__ = float.__floor__
else:
__ceil__ = math.ceil
__floor__ = math.floor
class Bool(Item):
"""
A boolean literal.
"""
def __init__(self, t: int, trivia: Trivia) -> None:
super().__init__(trivia)
self._value = bool(t)
def unwrap(self) -> bool:
return bool(self)
@property
def discriminant(self) -> int:
return 4
@property
def value(self) -> bool:
"""The wrapped boolean value"""
return self._value
def as_string(self) -> str:
return str(self._value).lower()
def _getstate(self, protocol=3):
return self._value, self._trivia
def __bool__(self):
return self._value
__nonzero__ = __bool__
def __eq__(self, other):
if not isinstance(other, bool):
return NotImplemented
return other == self._value
def __hash__(self):
return hash(self._value)
def __repr__(self):
return repr(self._value)
class DateTime(Item, datetime):
"""
A datetime literal.
"""
def __new__(
cls,
year: int,
month: int,
day: int,
hour: int,
minute: int,
second: int,
microsecond: int,
tzinfo: tzinfo | None,
*_: Any,
**kwargs: Any,
) -> datetime:
return datetime.__new__(
cls,
year,
month,
day,
hour,
minute,
second,
microsecond,
tzinfo=tzinfo,
**kwargs,
)
def __init__(
self,
year: int,
month: int,
day: int,
hour: int,
minute: int,
second: int,
microsecond: int,
tzinfo: tzinfo | None,
trivia: Trivia | None = None,
raw: str | None = None,
**kwargs: Any,
) -> None:
super().__init__(trivia or Trivia())
self._raw = raw or self.isoformat()
def unwrap(self) -> datetime:
(
year,
month,
day,
hour,
minute,
second,
microsecond,
tzinfo,
_,
_,
) = self._getstate()
return datetime(year, month, day, hour, minute, second, microsecond, tzinfo)
@property
def discriminant(self) -> int:
return 5
@property
def value(self) -> datetime:
return self
def as_string(self) -> str:
return self._raw
def __add__(self, other):
if PY38:
result = datetime(
self.year,
self.month,
self.day,
self.hour,
self.minute,
self.second,
self.microsecond,
self.tzinfo,
).__add__(other)
else:
result = super().__add__(other)
return self._new(result)
def __sub__(self, other):
if PY38:
result = datetime(
self.year,
self.month,
self.day,
self.hour,
self.minute,
self.second,
self.microsecond,
self.tzinfo,
).__sub__(other)
else:
result = super().__sub__(other)
if isinstance(result, datetime):
result = self._new(result)
return result
def replace(self, *args: Any, **kwargs: Any) -> datetime:
return self._new(super().replace(*args, **kwargs))
def astimezone(self, tz: tzinfo) -> datetime:
result = super().astimezone(tz)
if PY38:
return result
return self._new(result)
def _new(self, result) -> DateTime:
raw = result.isoformat()
return DateTime(
result.year,
result.month,
result.day,
result.hour,
result.minute,
result.second,
result.microsecond,
result.tzinfo,
self._trivia,
raw,
)
def _getstate(self, protocol=3):
return (
self.year,
self.month,
self.day,
self.hour,
self.minute,
self.second,
self.microsecond,
self.tzinfo,
self._trivia,
self._raw,
)
class Date(Item, date):
"""
A date literal.
"""
def __new__(cls, year: int, month: int, day: int, *_: Any) -> date:
return date.__new__(cls, year, month, day)
def __init__(
self,
year: int,
month: int,
day: int,
trivia: Trivia | None = None,
raw: str = "",
) -> None:
super().__init__(trivia or Trivia())
self._raw = raw
def unwrap(self) -> date:
(year, month, day, _, _) = self._getstate()
return date(year, month, day)
@property
def discriminant(self) -> int:
return 6
@property
def value(self) -> date:
return self
def as_string(self) -> str:
return self._raw
def __add__(self, other):
if PY38:
result = date(self.year, self.month, self.day).__add__(other)
else:
result = super().__add__(other)
return self._new(result)
def __sub__(self, other):
if PY38:
result = date(self.year, self.month, self.day).__sub__(other)
else:
result = super().__sub__(other)
if isinstance(result, date):
result = self._new(result)
return result
def replace(self, *args: Any, **kwargs: Any) -> date:
return self._new(super().replace(*args, **kwargs))
def _new(self, result):
raw = result.isoformat()
return Date(result.year, result.month, result.day, self._trivia, raw)
def _getstate(self, protocol=3):
return (self.year, self.month, self.day, self._trivia, self._raw)
class Time(Item, time):
"""
A time literal.
"""
def __new__(
cls,
hour: int,
minute: int,
second: int,
microsecond: int,
tzinfo: tzinfo | None,
*_: Any,
) -> time:
return time.__new__(cls, hour, minute, second, microsecond, tzinfo)
def __init__(
self,
hour: int,
minute: int,
second: int,
microsecond: int,
tzinfo: tzinfo | None,
trivia: Trivia | None = None,
raw: str = "",
) -> None:
super().__init__(trivia or Trivia())
self._raw = raw
def unwrap(self) -> time:
(hour, minute, second, microsecond, tzinfo, _, _) = self._getstate()
return time(hour, minute, second, microsecond, tzinfo)
@property
def discriminant(self) -> int:
return 7
@property
def value(self) -> time:
return self
def as_string(self) -> str:
return self._raw
def replace(self, *args: Any, **kwargs: Any) -> time:
return self._new(super().replace(*args, **kwargs))
def _new(self, result):
raw = result.isoformat()
return Time(
result.hour,
result.minute,
result.second,
result.microsecond,
result.tzinfo,
self._trivia,
raw,
)
def _getstate(self, protocol: int = 3) -> tuple:
return (
self.hour,
self.minute,
self.second,
self.microsecond,
self.tzinfo,
self._trivia,
self._raw,
)
class _ArrayItemGroup:
__slots__ = ("value", "indent", "comma", "comment")
def __init__(
self,
value: Item | None = None,
indent: Whitespace | None = None,
comma: Whitespace | None = None,
comment: Comment | None = None,
) -> None:
self.value = value
self.indent = indent
self.comma = comma
self.comment = comment
def __iter__(self) -> Iterator[Item]:
return filter(
lambda x: x is not None, (self.indent, self.value, self.comma, self.comment)
)
def __repr__(self) -> str:
return repr(tuple(self))
def is_whitespace(self) -> bool:
return self.value is None and self.comment is None
def __bool__(self) -> bool:
try:
next(iter(self))
except StopIteration:
return False
return True
class Array(Item, _CustomList):
"""
An array literal
"""
def __init__(
self, value: list[Item], trivia: Trivia, multiline: bool = False
) -> None:
super().__init__(trivia)
list.__init__(
self,
[v for v in value if not isinstance(v, (Whitespace, Comment, Null))],
)
self._index_map: dict[int, int] = {}
self._value = self._group_values(value)
self._multiline = multiline
self._reindex()
def _group_values(self, value: list[Item]) -> list[_ArrayItemGroup]:
"""Group the values into (indent, value, comma, comment) tuples"""
groups = []
this_group = _ArrayItemGroup()
for item in value:
if isinstance(item, Whitespace):
if "," not in item.s:
groups.append(this_group)
this_group = _ArrayItemGroup(indent=item)
else:
if this_group.value is None:
# when comma is met and no value is provided, add a dummy Null
this_group.value = Null()
this_group.comma = item
elif isinstance(item, Comment):
if this_group.value is None:
this_group.value = Null()
this_group.comment = item
elif this_group.value is None:
this_group.value = item
else:
groups.append(this_group)
this_group = _ArrayItemGroup(value=item)
groups.append(this_group)
return [group for group in groups if group]
def unwrap(self) -> list[Any]:
unwrapped = []
for v in self:
if hasattr(v, "unwrap"):
unwrapped.append(v.unwrap())
else:
unwrapped.append(v)
return unwrapped
@property
def discriminant(self) -> int:
return 8
@property
def value(self) -> list:
return self
def _iter_items(self) -> Iterator[Item]:
for v in self._value:
yield from v
def multiline(self, multiline: bool) -> Array:
"""Change the array to display in multiline or not.
:Example:
>>> a = item([1, 2, 3])
>>> print(a.as_string())
[1, 2, 3]
>>> print(a.multiline(True).as_string())
[
1,
2,
3,
]
"""
self._multiline = multiline
return self
def as_string(self) -> str:
if not self._multiline or not self._value:
return f'[{"".join(v.as_string() for v in self._iter_items())}]'
s = "[\n"
s += "".join(
self.trivia.indent
+ " " * 4
+ v.value.as_string()
+ ("," if not isinstance(v.value, Null) else "")
+ (v.comment.as_string() if v.comment is not None else "")
+ "\n"
for v in self._value
if v.value is not None
)
s += self.trivia.indent + "]"
return s
def _reindex(self) -> None:
self._index_map.clear()
index = 0
for i, v in enumerate(self._value):
if v.value is None or isinstance(v.value, Null):
continue
self._index_map[index] = i
index += 1
def add_line(
self,
*items: Any,
indent: str = " ",
comment: str | None = None,
add_comma: bool = True,
newline: bool = True,
) -> None:
"""Add multiple items in a line to control the format precisely.
When add_comma is True, only accept actual values and
", " will be added between values automatically.
:Example:
>>> a = array()
>>> a.add_line(1, 2, 3)
>>> a.add_line(4, 5, 6)
>>> a.add_line(indent="")
>>> print(a.as_string())
[
1, 2, 3,
4, 5, 6,
]
"""
new_values: list[Item] = []
first_indent = f"\n{indent}" if newline else indent
if first_indent:
new_values.append(Whitespace(first_indent))
whitespace = ""
data_values = []
for i, el in enumerate(items):
it = item(el, _parent=self)
if isinstance(it, Comment) or add_comma and isinstance(el, Whitespace):
raise ValueError(f"item type {type(it)} is not allowed in add_line")
if not isinstance(it, Whitespace):
if whitespace:
new_values.append(Whitespace(whitespace))
whitespace = ""
new_values.append(it)
data_values.append(it.value)
if add_comma:
new_values.append(Whitespace(","))
if i != len(items) - 1:
new_values.append(Whitespace(" "))
elif "," not in it.s:
whitespace += it.s
else:
new_values.append(it)
if whitespace:
new_values.append(Whitespace(whitespace))
if comment:
indent = " " if items else ""
new_values.append(
Comment(Trivia(indent=indent, comment=f"# {comment}", trail=""))
)
list.extend(self, data_values)
if len(self._value) > 0:
last_item = self._value[-1]
last_value_item = next(
(
v
for v in self._value[::-1]
if v.value is not None and not isinstance(v.value, Null)
),
None,
)
if last_value_item is not None:
last_value_item.comma = Whitespace(",")
if last_item.is_whitespace():
self._value[-1:-1] = self._group_values(new_values)
else:
self._value.extend(self._group_values(new_values))
else:
self._value.extend(self._group_values(new_values))
self._reindex()
def clear(self) -> None:
"""Clear the array."""
list.clear(self)
self._index_map.clear()
self._value.clear()
def __len__(self) -> int:
return list.__len__(self)
def __getitem__(self, key: int | slice) -> Any:
rv = cast(Item, list.__getitem__(self, key))
if rv.is_boolean():
return bool(rv)
return rv
def __setitem__(self, key: int | slice, value: Any) -> Any:
it = item(value, _parent=self)
list.__setitem__(self, key, it)
if isinstance(key, slice):
raise ValueError("slice assignment is not supported")
if key < 0:
key += len(self)
self._value[self._index_map[key]].value = it
def insert(self, pos: int, value: Any) -> None:
it = item(value, _parent=self)
length = len(self)
if not isinstance(it, (Comment, Whitespace)):
list.insert(self, pos, it)
if pos < 0:
pos += length
if pos < 0:
pos = 0
idx = 0 # insert position of the self._value list
default_indent = " "
if pos < length:
try:
idx = self._index_map[pos]
except KeyError as e:
raise IndexError("list index out of range") from e
else:
idx = len(self._value)
if idx >= 1 and self._value[idx - 1].is_whitespace():
# The last item is a pure whitespace(\n ), insert before it
idx -= 1
if (
self._value[idx].indent is not None
and "\n" in self._value[idx].indent.s
):
default_indent = "\n "
indent: Item | None = None
comma: Item | None = Whitespace(",") if pos < length else None
if idx < len(self._value) and not self._value[idx].is_whitespace():
# Prefer to copy the indentation from the item after
indent = self._value[idx].indent
if idx > 0:
last_item = self._value[idx - 1]
if indent is None:
indent = last_item.indent
if not isinstance(last_item.value, Null) and "\n" in default_indent:
# Copy the comma from the last item if 1) it contains a value and
# 2) the array is multiline
comma = last_item.comma
if last_item.comma is None and not isinstance(last_item.value, Null):
# Add comma to the last item to separate it from the following items.
last_item.comma = Whitespace(",")
if indent is None and (idx > 0 or "\n" in default_indent):
# apply default indent if it isn't the first item or the array is multiline.
indent = Whitespace(default_indent)
new_item = _ArrayItemGroup(value=it, indent=indent, comma=comma)
self._value.insert(idx, new_item)
self._reindex()
def __delitem__(self, key: int | slice):
length = len(self)
list.__delitem__(self, key)
if isinstance(key, slice):
indices_to_remove = list(
range(key.start or 0, key.stop or length, key.step or 1)
)
else:
indices_to_remove = [length + key if key < 0 else key]
for i in sorted(indices_to_remove, reverse=True):
try:
idx = self._index_map[i]
except KeyError as e:
if not isinstance(key, slice):
raise IndexError("list index out of range") from e
else:
del self._value[idx]
if (
idx == 0
and len(self._value) > 0
and self._value[idx].indent
and "\n" not in self._value[idx].indent.s
):
# Remove the indentation of the first item if not newline
self._value[idx].indent = None
if len(self._value) > 0:
v = self._value[-1]
if not v.is_whitespace():
# remove the comma of the last item
v.comma = None
self._reindex()
def _getstate(self, protocol=3):
return list(self._iter_items()), self._trivia, self._multiline
class AbstractTable(Item, _CustomDict):
"""Common behaviour of both :class:`Table` and :class:`InlineTable`"""
def __init__(self, value: container.Container, trivia: Trivia):
Item.__init__(self, trivia)
self._value = value
for k, v in self._value.body:
if k is not None:
dict.__setitem__(self, k.key, v)
def unwrap(self) -> dict[str, Any]:
unwrapped = {}
for k, v in self.items():
if isinstance(k, Key):
k = k.key
if hasattr(v, "unwrap"):
v = v.unwrap()
unwrapped[k] = v
return unwrapped
@property
def value(self) -> container.Container:
return self._value
@overload
def append(self: AT, key: None, value: Comment | Whitespace) -> AT: ...
@overload
def append(self: AT, key: Key | str, value: Any) -> AT: ...
def append(self, key, value):
raise NotImplementedError
@overload
def add(self: AT, key: Comment | Whitespace) -> AT: ...
@overload
def add(self: AT, key: Key | str, value: Any = ...) -> AT: ...
def add(self, key, value=None):
if value is None:
if not isinstance(key, (Comment, Whitespace)):
msg = "Non comment/whitespace items must have an associated key"
raise ValueError(msg)
key, value = None, key
return self.append(key, value)
def remove(self: AT, key: Key | str) -> AT:
self._value.remove(key)
if isinstance(key, Key):
key = key.key
if key is not None:
dict.__delitem__(self, key)
return self
def setdefault(self, key: Key | str, default: Any) -> Any:
super().setdefault(key, default)
return self[key]
def __str__(self):
return str(self.value)
def copy(self: AT) -> AT:
return copy.copy(self)
def __repr__(self) -> str:
return repr(self.value)
def __iter__(self) -> Iterator[str]:
return iter(self._value)
def __len__(self) -> int:
return len(self._value)
def __delitem__(self, key: Key | str) -> None:
self.remove(key)
def __getitem__(self, key: Key | str) -> Item:
return cast(Item, self._value[key])
def __setitem__(self, key: Key | str, value: Any) -> None:
if not isinstance(value, Item):
value = item(value, _parent=self)
is_replace = key in self
self._value[key] = value
if key is not None:
dict.__setitem__(self, key, value)
if is_replace:
return
m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent)
if not m:
return
indent = m.group(1)
if not isinstance(value, Whitespace):
m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent)
if not m:
value.trivia.indent = indent
else:
value.trivia.indent = m.group(1) + indent + m.group(2)
class Table(AbstractTable):
"""
A table literal.
"""
def __init__(
self,
value: container.Container,
trivia: Trivia,
is_aot_element: bool,
is_super_table: bool | None = None,
name: str | None = None,
display_name: str | None = None,
) -> None:
super().__init__(value, trivia)
self.name = name
self.display_name = display_name
self._is_aot_element = is_aot_element
self._is_super_table = is_super_table
@property
def discriminant(self) -> int:
return 9
def __copy__(self) -> Table:
return type(self)(
self._value.copy(),
self._trivia.copy(),
self._is_aot_element,
self._is_super_table,
self.name,
self.display_name,
)
def append(self, key: Key | str | None, _item: Any) -> Table:
"""
Appends a (key, item) to the table.
"""
if not isinstance(_item, Item):
_item = item(_item, _parent=self)
self._value.append(key, _item)
if isinstance(key, Key):
key = next(iter(key)).key
_item = self._value[key]
if key is not None:
dict.__setitem__(self, key, _item)
m = re.match(r"(?s)^[^ ]*([ ]+).*$", self._trivia.indent)
if not m:
return self
indent = m.group(1)
if not isinstance(_item, Whitespace):
m = re.match("(?s)^([^ ]*)(.*)$", _item.trivia.indent)
if not m:
_item.trivia.indent = indent
else:
_item.trivia.indent = m.group(1) + indent + m.group(2)
return self
def raw_append(self, key: Key | str | None, _item: Any) -> Table:
"""Similar to :meth:`append` but does not copy indentation."""
if not isinstance(_item, Item):
_item = item(_item)
self._value.append(key, _item, validate=False)
if isinstance(key, Key):
key = next(iter(key)).key
_item = self._value[key]
if key is not None:
dict.__setitem__(self, key, _item)
return self
def is_aot_element(self) -> bool:
"""True if the table is the direct child of an AOT element."""
return self._is_aot_element
def is_super_table(self) -> bool:
"""A super table is the intermediate parent of a nested table as in [a.b.c].
If true, it won't appear in the TOML representation."""
if self._is_super_table is not None:
return self._is_super_table
# If the table has only one child and that child is a table, then it is a super table.
if len(self) != 1:
return False
only_child = next(iter(self.values()))
return isinstance(only_child, (Table, AoT))
def as_string(self) -> str:
return self._value.as_string()
# Helpers
def indent(self, indent: int) -> Table:
"""Indent the table with given number of spaces."""
super().indent(indent)
m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent)
if not m:
indent_str = ""
else:
indent_str = m.group(1)
for _, item in self._value.body:
if not isinstance(item, Whitespace):
item.trivia.indent = indent_str + item.trivia.indent
return self
def invalidate_display_name(self):
"""Call ``invalidate_display_name`` on the contained tables"""
self.display_name = None
for child in self.values():
if hasattr(child, "invalidate_display_name"):
child.invalidate_display_name()
def _getstate(self, protocol: int = 3) -> tuple:
return (
self._value,
self._trivia,
self._is_aot_element,
self._is_super_table,
self.name,
self.display_name,
)
class InlineTable(AbstractTable):
"""
An inline table literal.
"""
def __init__(
self, value: container.Container, trivia: Trivia, new: bool = False
) -> None:
super().__init__(value, trivia)
self._new = new
@property
def discriminant(self) -> int:
return 10
def append(self, key: Key | str | None, _item: Any) -> InlineTable:
"""
Appends a (key, item) to the table.
"""
if not isinstance(_item, Item):
_item = item(_item, _parent=self)
if not isinstance(_item, (Whitespace, Comment)):
if not _item.trivia.indent and len(self._value) > 0 and not self._new:
_item.trivia.indent = " "
if _item.trivia.comment:
_item.trivia.comment = ""
self._value.append(key, _item)
if isinstance(key, Key):
key = key.key
if key is not None:
dict.__setitem__(self, key, _item)
return self
def as_string(self) -> str:
buf = "{"
last_item_idx = next(
(
i
for i in range(len(self._value.body) - 1, -1, -1)
if self._value.body[i][0] is not None
),
None,
)
for i, (k, v) in enumerate(self._value.body):
if k is None:
if i == len(self._value.body) - 1:
if self._new:
buf = buf.rstrip(", ")
else:
buf = buf.rstrip(",")
buf += v.as_string()
continue
v_trivia_trail = v.trivia.trail.replace("\n", "")
buf += (
f"{v.trivia.indent}"
f'{k.as_string() + ("." if k.is_dotted() else "")}'
f"{k.sep}"
f"{v.as_string()}"
f"{v.trivia.comment}"
f"{v_trivia_trail}"
)
if last_item_idx is not None and i < last_item_idx:
buf += ","
if self._new:
buf += " "
buf += "}"
return buf
def __setitem__(self, key: Key | str, value: Any) -> None:
if hasattr(value, "trivia") and value.trivia.comment:
value.trivia.comment = ""
super().__setitem__(key, value)
def __copy__(self) -> InlineTable:
return type(self)(self._value.copy(), self._trivia.copy(), self._new)
def _getstate(self, protocol: int = 3) -> tuple:
return (self._value, self._trivia)
class String(str, Item):
"""
A string literal.
"""
def __new__(cls, t, value, original, trivia):
return super().__new__(cls, value)
def __init__(self, t: StringType, _: str, original: str, trivia: Trivia) -> None:
super().__init__(trivia)
self._t = t
self._original = original
def unwrap(self) -> str:
return str(self)
@property
def discriminant(self) -> int:
return 11
@property
def value(self) -> str:
return self
def as_string(self) -> str:
return f"{self._t.value}{decode(self._original)}{self._t.value}"
def __add__(self: ItemT, other: str) -> ItemT:
if not isinstance(other, str):
return NotImplemented
result = super().__add__(other)
original = self._original + getattr(other, "_original", other)
return self._new(result, original)
def _new(self, result: str, original: str) -> String:
return String(self._t, result, original, self._trivia)
def _getstate(self, protocol=3):
return self._t, str(self), self._original, self._trivia
@classmethod
def from_raw(cls, value: str, type_=StringType.SLB, escape=True) -> String:
value = decode(value)
invalid = type_.invalid_sequences
if any(c in value for c in invalid):
raise InvalidStringError(value, invalid, type_.value)
escaped = type_.escaped_sequences
string_value = escape_string(value, escaped) if escape and escaped else value
return cls(type_, decode(value), string_value, Trivia())
class AoT(Item, _CustomList):
"""
An array of table literal
"""
def __init__(
self, body: list[Table], name: str | None = None, parsed: bool = False
) -> None:
self.name = name
self._body: list[Table] = []
self._parsed = parsed
super().__init__(Trivia(trail=""))
for table in body:
self.append(table)
def unwrap(self) -> list[dict[str, Any]]:
unwrapped = []
for t in self._body:
if hasattr(t, "unwrap"):
unwrapped.append(t.unwrap())
else:
unwrapped.append(t)
return unwrapped
@property
def body(self) -> list[Table]:
return self._body
@property
def discriminant(self) -> int:
return 12
@property
def value(self) -> list[dict[Any, Any]]:
return [v.value for v in self._body]
def __len__(self) -> int:
return len(self._body)
@overload
def __getitem__(self, key: slice) -> list[Table]: ...
@overload
def __getitem__(self, key: int) -> Table: ...
def __getitem__(self, key):
return self._body[key]
def __setitem__(self, key: slice | int, value: Any) -> None:
raise NotImplementedError
def __delitem__(self, key: slice | int) -> None:
del self._body[key]
list.__delitem__(self, key)
def insert(self, index: int, value: dict) -> None:
value = item(value, _parent=self)
if not isinstance(value, Table):
raise ValueError(f"Unsupported insert value type: {type(value)}")
length = len(self)
if index < 0:
index += length
if index < 0:
index = 0
elif index >= length:
index = length
m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent)
if m:
indent = m.group(1)
m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent)
if not m:
value.trivia.indent = indent
else:
value.trivia.indent = m.group(1) + indent + m.group(2)
prev_table = self._body[index - 1] if 0 < index and length else None
next_table = self._body[index + 1] if index < length - 1 else None
if not self._parsed:
if prev_table and "\n" not in value.trivia.indent:
value.trivia.indent = "\n" + value.trivia.indent
if next_table and "\n" not in next_table.trivia.indent:
next_table.trivia.indent = "\n" + next_table.trivia.indent
self._body.insert(index, value)
list.insert(self, index, value)
def invalidate_display_name(self):
"""Call ``invalidate_display_name`` on the contained tables"""
for child in self:
if hasattr(child, "invalidate_display_name"):
child.invalidate_display_name()
def as_string(self) -> str:
b = ""
for table in self._body:
b += table.as_string()
return b
def __repr__(self) -> str:
return f""
def _getstate(self, protocol=3):
return self._body, self.name, self._parsed
class Null(Item):
"""
A null item.
"""
def __init__(self) -> None:
super().__init__(Trivia(trail=""))
def unwrap(self) -> None:
return None
@property
def discriminant(self) -> int:
return -1
@property
def value(self) -> None:
return None
def as_string(self) -> str:
return ""
def _getstate(self, protocol=3) -> tuple:
return ()
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/parser.py 0000644 0000000 0000000 00000112057 14643451625 013555 0 ustar 00 from __future__ import annotations
import datetime
import re
import string
from tomlkit._compat import decode
from tomlkit._utils import RFC_3339_LOOSE
from tomlkit._utils import _escaped
from tomlkit._utils import parse_rfc3339
from tomlkit.container import Container
from tomlkit.exceptions import EmptyKeyError
from tomlkit.exceptions import EmptyTableNameError
from tomlkit.exceptions import InternalParserError
from tomlkit.exceptions import InvalidCharInStringError
from tomlkit.exceptions import InvalidControlChar
from tomlkit.exceptions import InvalidDateError
from tomlkit.exceptions import InvalidDateTimeError
from tomlkit.exceptions import InvalidNumberError
from tomlkit.exceptions import InvalidTimeError
from tomlkit.exceptions import InvalidUnicodeValueError
from tomlkit.exceptions import ParseError
from tomlkit.exceptions import UnexpectedCharError
from tomlkit.exceptions import UnexpectedEofError
from tomlkit.items import AoT
from tomlkit.items import Array
from tomlkit.items import Bool
from tomlkit.items import BoolType
from tomlkit.items import Comment
from tomlkit.items import Date
from tomlkit.items import DateTime
from tomlkit.items import Float
from tomlkit.items import InlineTable
from tomlkit.items import Integer
from tomlkit.items import Item
from tomlkit.items import Key
from tomlkit.items import KeyType
from tomlkit.items import Null
from tomlkit.items import SingleKey
from tomlkit.items import String
from tomlkit.items import StringType
from tomlkit.items import Table
from tomlkit.items import Time
from tomlkit.items import Trivia
from tomlkit.items import Whitespace
from tomlkit.source import Source
from tomlkit.toml_char import TOMLChar
from tomlkit.toml_document import TOMLDocument
CTRL_I = 0x09 # Tab
CTRL_J = 0x0A # Line feed
CTRL_M = 0x0D # Carriage return
CTRL_CHAR_LIMIT = 0x1F
CHR_DEL = 0x7F
class Parser:
"""
Parser for TOML documents.
"""
def __init__(self, string: str | bytes) -> None:
# Input to parse
self._src = Source(decode(string))
self._aot_stack: list[Key] = []
@property
def _state(self):
return self._src.state
@property
def _idx(self):
return self._src.idx
@property
def _current(self):
return self._src.current
@property
def _marker(self):
return self._src.marker
def extract(self) -> str:
"""
Extracts the value between marker and index
"""
return self._src.extract()
def inc(self, exception: type[ParseError] | None = None) -> bool:
"""
Increments the parser if the end of the input has not been reached.
Returns whether or not it was able to advance.
"""
return self._src.inc(exception=exception)
def inc_n(self, n: int, exception: type[ParseError] | None = None) -> bool:
"""
Increments the parser by n characters
if the end of the input has not been reached.
"""
return self._src.inc_n(n=n, exception=exception)
def consume(self, chars, min=0, max=-1):
"""
Consume chars until min/max is satisfied is valid.
"""
return self._src.consume(chars=chars, min=min, max=max)
def end(self) -> bool:
"""
Returns True if the parser has reached the end of the input.
"""
return self._src.end()
def mark(self) -> None:
"""
Sets the marker to the index's current position
"""
self._src.mark()
def parse_error(self, exception=ParseError, *args, **kwargs):
"""
Creates a generic "parse error" at the current position.
"""
return self._src.parse_error(exception, *args, **kwargs)
def parse(self) -> TOMLDocument:
body = TOMLDocument(True)
# Take all keyvals outside of tables/AoT's.
while not self.end():
# Break out if a table is found
if self._current == "[":
break
# Otherwise, take and append one KV
item = self._parse_item()
if not item:
break
key, value = item
if (key is not None and key.is_multi()) or not self._merge_ws(value, body):
# We actually have a table
try:
body.append(key, value)
except Exception as e:
raise self.parse_error(ParseError, str(e)) from e
self.mark()
while not self.end():
key, value = self._parse_table()
if isinstance(value, Table) and value.is_aot_element():
# This is just the first table in an AoT. Parse the rest of the array
# along with it.
value = self._parse_aot(value, key)
try:
body.append(key, value)
except Exception as e:
raise self.parse_error(ParseError, str(e)) from e
body.parsing(False)
return body
def _merge_ws(self, item: Item, container: Container) -> bool:
"""
Merges the given Item with the last one currently in the given Container if
both are whitespace items.
Returns True if the items were merged.
"""
last = container.last_item()
if not last:
return False
if not isinstance(item, Whitespace) or not isinstance(last, Whitespace):
return False
start = self._idx - (len(last.s) + len(item.s))
container.body[-1] = (
container.body[-1][0],
Whitespace(self._src[start : self._idx]),
)
return True
def _is_child(self, parent: Key, child: Key) -> bool:
"""
Returns whether a key is strictly a child of another key.
AoT siblings are not considered children of one another.
"""
parent_parts = tuple(parent)
child_parts = tuple(child)
if parent_parts == child_parts:
return False
return parent_parts == child_parts[: len(parent_parts)]
def _parse_item(self) -> tuple[Key | None, Item] | None:
"""
Attempts to parse the next item and returns it, along with its key
if the item is value-like.
"""
self.mark()
with self._state as state:
while True:
c = self._current
if c == "\n":
# Found a newline; Return all whitespace found up to this point.
self.inc()
return None, Whitespace(self.extract())
elif c in " \t\r":
# Skip whitespace.
if not self.inc():
return None, Whitespace(self.extract())
elif c == "#":
# Found a comment, parse it
indent = self.extract()
cws, comment, trail = self._parse_comment_trail()
return None, Comment(Trivia(indent, cws, comment, trail))
elif c == "[":
# Found a table, delegate to the calling function.
return
else:
# Beginning of a KV pair.
# Return to beginning of whitespace so it gets included
# as indentation for the KV about to be parsed.
state.restore = True
break
return self._parse_key_value(True)
def _parse_comment_trail(self, parse_trail: bool = True) -> tuple[str, str, str]:
"""
Returns (comment_ws, comment, trail)
If there is no comment, comment_ws and comment will
simply be empty.
"""
if self.end():
return "", "", ""
comment = ""
comment_ws = ""
self.mark()
while True:
c = self._current
if c == "\n":
break
elif c == "#":
comment_ws = self.extract()
self.mark()
self.inc() # Skip #
# The comment itself
while not self.end() and not self._current.is_nl():
code = ord(self._current)
if code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I:
raise self.parse_error(InvalidControlChar, code, "comments")
if not self.inc():
break
comment = self.extract()
self.mark()
break
elif c in " \t\r":
self.inc()
else:
raise self.parse_error(UnexpectedCharError, c)
if self.end():
break
trail = ""
if parse_trail:
while self._current.is_spaces() and self.inc():
pass
if self._current == "\r":
self.inc()
if self._current == "\n":
self.inc()
if self._idx != self._marker or self._current.is_ws():
trail = self.extract()
return comment_ws, comment, trail
def _parse_key_value(self, parse_comment: bool = False) -> tuple[Key, Item]:
# Leading indent
self.mark()
while self._current.is_spaces() and self.inc():
pass
indent = self.extract()
# Key
key = self._parse_key()
self.mark()
found_equals = self._current == "="
while self._current.is_kv_sep() and self.inc():
if self._current == "=":
if found_equals:
raise self.parse_error(UnexpectedCharError, "=")
else:
found_equals = True
if not found_equals:
raise self.parse_error(UnexpectedCharError, self._current)
if not key.sep:
key.sep = self.extract()
else:
key.sep += self.extract()
# Value
val = self._parse_value()
# Comment
if parse_comment:
cws, comment, trail = self._parse_comment_trail()
meta = val.trivia
if not meta.comment_ws:
meta.comment_ws = cws
meta.comment = comment
meta.trail = trail
else:
val.trivia.trail = ""
val.trivia.indent = indent
return key, val
def _parse_key(self) -> Key:
"""
Parses a Key at the current position;
WS before the key must be exhausted first at the callsite.
"""
self.mark()
while self._current.is_spaces() and self.inc():
# Skip any leading whitespace
pass
if self._current in "\"'":
return self._parse_quoted_key()
else:
return self._parse_bare_key()
def _parse_quoted_key(self) -> Key:
"""
Parses a key enclosed in either single or double quotes.
"""
# Extract the leading whitespace
original = self.extract()
quote_style = self._current
key_type = next((t for t in KeyType if t.value == quote_style), None)
if key_type is None:
raise RuntimeError("Should not have entered _parse_quoted_key()")
key_str = self._parse_string(
StringType.SLB if key_type == KeyType.Basic else StringType.SLL
)
if key_str._t.is_multiline():
raise self.parse_error(UnexpectedCharError, key_str._t.value)
original += key_str.as_string()
self.mark()
while self._current.is_spaces() and self.inc():
pass
original += self.extract()
key = SingleKey(str(key_str), t=key_type, sep="", original=original)
if self._current == ".":
self.inc()
key = key.concat(self._parse_key())
return key
def _parse_bare_key(self) -> Key:
"""
Parses a bare key.
"""
while (
self._current.is_bare_key_char() or self._current.is_spaces()
) and self.inc():
pass
original = self.extract()
key = original.strip()
if not key:
# Empty key
raise self.parse_error(EmptyKeyError)
if " " in key:
# Bare key with spaces in it
raise self.parse_error(ParseError, f'Invalid key "{key}"')
key = SingleKey(key, KeyType.Bare, "", original)
if self._current == ".":
self.inc()
key = key.concat(self._parse_key())
return key
def _parse_value(self) -> Item:
"""
Attempts to parse a value at the current position.
"""
self.mark()
c = self._current
trivia = Trivia()
if c == StringType.SLB.value:
return self._parse_basic_string()
elif c == StringType.SLL.value:
return self._parse_literal_string()
elif c == BoolType.TRUE.value[0]:
return self._parse_true()
elif c == BoolType.FALSE.value[0]:
return self._parse_false()
elif c == "[":
return self._parse_array()
elif c == "{":
return self._parse_inline_table()
elif c in "+-" or self._peek(4) in {
"+inf",
"-inf",
"inf",
"+nan",
"-nan",
"nan",
}:
# Number
while self._current not in " \t\n\r#,]}" and self.inc():
pass
raw = self.extract()
item = self._parse_number(raw, trivia)
if item is not None:
return item
raise self.parse_error(InvalidNumberError)
elif c in string.digits:
# Integer, Float, Date, Time or DateTime
while self._current not in " \t\n\r#,]}" and self.inc():
pass
raw = self.extract()
m = RFC_3339_LOOSE.match(raw)
if m:
if m.group(1) and m.group(5):
# datetime
try:
dt = parse_rfc3339(raw)
assert isinstance(dt, datetime.datetime)
return DateTime(
dt.year,
dt.month,
dt.day,
dt.hour,
dt.minute,
dt.second,
dt.microsecond,
dt.tzinfo,
trivia,
raw,
)
except ValueError:
raise self.parse_error(InvalidDateTimeError) from None
if m.group(1):
try:
dt = parse_rfc3339(raw)
assert isinstance(dt, datetime.date)
date = Date(dt.year, dt.month, dt.day, trivia, raw)
self.mark()
while self._current not in "\t\n\r#,]}" and self.inc():
pass
time_raw = self.extract()
time_part = time_raw.rstrip()
trivia.comment_ws = time_raw[len(time_part) :]
if not time_part:
return date
dt = parse_rfc3339(raw + time_part)
assert isinstance(dt, datetime.datetime)
return DateTime(
dt.year,
dt.month,
dt.day,
dt.hour,
dt.minute,
dt.second,
dt.microsecond,
dt.tzinfo,
trivia,
raw + time_part,
)
except ValueError:
raise self.parse_error(InvalidDateError) from None
if m.group(5):
try:
t = parse_rfc3339(raw)
assert isinstance(t, datetime.time)
return Time(
t.hour,
t.minute,
t.second,
t.microsecond,
t.tzinfo,
trivia,
raw,
)
except ValueError:
raise self.parse_error(InvalidTimeError) from None
item = self._parse_number(raw, trivia)
if item is not None:
return item
raise self.parse_error(InvalidNumberError)
else:
raise self.parse_error(UnexpectedCharError, c)
def _parse_true(self):
return self._parse_bool(BoolType.TRUE)
def _parse_false(self):
return self._parse_bool(BoolType.FALSE)
def _parse_bool(self, style: BoolType) -> Bool:
with self._state:
style = BoolType(style)
# only keep parsing for bool if the characters match the style
# try consuming rest of chars in style
for c in style:
self.consume(c, min=1, max=1)
return Bool(style, Trivia())
def _parse_array(self) -> Array:
# Consume opening bracket, EOF here is an issue (middle of array)
self.inc(exception=UnexpectedEofError)
elems: list[Item] = []
prev_value = None
while True:
# consume whitespace
mark = self._idx
self.consume(TOMLChar.SPACES + TOMLChar.NL)
indent = self._src[mark : self._idx]
newline = set(TOMLChar.NL) & set(indent)
if newline:
elems.append(Whitespace(indent))
continue
# consume comment
if self._current == "#":
cws, comment, trail = self._parse_comment_trail(parse_trail=False)
elems.append(Comment(Trivia(indent, cws, comment, trail)))
continue
# consume indent
if indent:
elems.append(Whitespace(indent))
continue
# consume value
if not prev_value:
try:
elems.append(self._parse_value())
prev_value = True
continue
except UnexpectedCharError:
pass
# consume comma
if prev_value and self._current == ",":
self.inc(exception=UnexpectedEofError)
elems.append(Whitespace(","))
prev_value = False
continue
# consume closing bracket
if self._current == "]":
# consume closing bracket, EOF here doesn't matter
self.inc()
break
raise self.parse_error(UnexpectedCharError, self._current)
try:
res = Array(elems, Trivia())
except ValueError:
pass
else:
return res
def _parse_inline_table(self) -> InlineTable:
# consume opening bracket, EOF here is an issue (middle of array)
self.inc(exception=UnexpectedEofError)
elems = Container(True)
trailing_comma = None
while True:
# consume leading whitespace
mark = self._idx
self.consume(TOMLChar.SPACES)
raw = self._src[mark : self._idx]
if raw:
elems.add(Whitespace(raw))
if not trailing_comma:
# None: empty inline table
# False: previous key-value pair was not followed by a comma
if self._current == "}":
# consume closing bracket, EOF here doesn't matter
self.inc()
break
if (
trailing_comma is False
or trailing_comma is None
and self._current == ","
):
# Either the previous key-value pair was not followed by a comma
# or the table has an unexpected leading comma.
raise self.parse_error(UnexpectedCharError, self._current)
else:
# True: previous key-value pair was followed by a comma
if self._current == "}" or self._current == ",":
raise self.parse_error(UnexpectedCharError, self._current)
key, val = self._parse_key_value(False)
elems.add(key, val)
# consume trailing whitespace
mark = self._idx
self.consume(TOMLChar.SPACES)
raw = self._src[mark : self._idx]
if raw:
elems.add(Whitespace(raw))
# consume trailing comma
trailing_comma = self._current == ","
if trailing_comma:
# consume closing bracket, EOF here is an issue (middle of inline table)
self.inc(exception=UnexpectedEofError)
return InlineTable(elems, Trivia())
def _parse_number(self, raw: str, trivia: Trivia) -> Item | None:
# Leading zeros are not allowed
sign = ""
if raw.startswith(("+", "-")):
sign = raw[0]
raw = raw[1:]
if len(raw) > 1 and (
raw.startswith("0")
and not raw.startswith(("0.", "0o", "0x", "0b", "0e"))
or sign
and raw.startswith(".")
):
return None
if raw.startswith(("0o", "0x", "0b")) and sign:
return None
digits = "[0-9]"
base = 10
if raw.startswith("0b"):
digits = "[01]"
base = 2
elif raw.startswith("0o"):
digits = "[0-7]"
base = 8
elif raw.startswith("0x"):
digits = "[0-9a-f]"
base = 16
# Underscores should be surrounded by digits
clean = re.sub(f"(?i)(?<={digits})_(?={digits})", "", raw).lower()
if "_" in clean:
return None
if (
clean.endswith(".")
or not clean.startswith("0x")
and clean.split("e", 1)[0].endswith(".")
):
return None
try:
return Integer(int(sign + clean, base), trivia, sign + raw)
except ValueError:
try:
return Float(float(sign + clean), trivia, sign + raw)
except ValueError:
return None
def _parse_literal_string(self) -> String:
with self._state:
return self._parse_string(StringType.SLL)
def _parse_basic_string(self) -> String:
with self._state:
return self._parse_string(StringType.SLB)
def _parse_escaped_char(self, multiline):
if multiline and self._current.is_ws():
# When the last non-whitespace character on a line is
# a \, it will be trimmed along with all whitespace
# (including newlines) up to the next non-whitespace
# character or closing delimiter.
# """\
# hello \
# world"""
tmp = ""
while self._current.is_ws():
tmp += self._current
# consume the whitespace, EOF here is an issue
# (middle of string)
self.inc(exception=UnexpectedEofError)
continue
# the escape followed by whitespace must have a newline
# before any other chars
if "\n" not in tmp:
raise self.parse_error(InvalidCharInStringError, self._current)
return ""
if self._current in _escaped:
c = _escaped[self._current]
# consume this char, EOF here is an issue (middle of string)
self.inc(exception=UnexpectedEofError)
return c
if self._current in {"u", "U"}:
# this needs to be a unicode
u, ue = self._peek_unicode(self._current == "U")
if u is not None:
# consume the U char and the unicode value
self.inc_n(len(ue) + 1)
return u
raise self.parse_error(InvalidUnicodeValueError)
raise self.parse_error(InvalidCharInStringError, self._current)
def _parse_string(self, delim: StringType) -> String:
# only keep parsing for string if the current character matches the delim
if self._current != delim.unit:
raise self.parse_error(
InternalParserError,
f"Invalid character for string type {delim}",
)
# consume the opening/first delim, EOF here is an issue
# (middle of string or middle of delim)
self.inc(exception=UnexpectedEofError)
if self._current == delim.unit:
# consume the closing/second delim, we do not care if EOF occurs as
# that would simply imply an empty single line string
if not self.inc() or self._current != delim.unit:
# Empty string
return String(delim, "", "", Trivia())
# consume the third delim, EOF here is an issue (middle of string)
self.inc(exception=UnexpectedEofError)
delim = delim.toggle() # convert delim to multi delim
self.mark() # to extract the original string with whitespace and all
value = ""
# A newline immediately following the opening delimiter will be trimmed.
if delim.is_multiline():
if self._current == "\n":
# consume the newline, EOF here is an issue (middle of string)
self.inc(exception=UnexpectedEofError)
else:
cur = self._current
with self._state(restore=True):
if self.inc():
cur += self._current
if cur == "\r\n":
self.inc_n(2, exception=UnexpectedEofError)
escaped = False # whether the previous key was ESCAPE
while True:
code = ord(self._current)
if (
delim.is_singleline()
and not escaped
and (code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I)
) or (
delim.is_multiline()
and not escaped
and (
code == CHR_DEL
or code <= CTRL_CHAR_LIMIT
and code not in [CTRL_I, CTRL_J, CTRL_M]
)
):
raise self.parse_error(InvalidControlChar, code, "strings")
elif not escaped and self._current == delim.unit:
# try to process current as a closing delim
original = self.extract()
close = ""
if delim.is_multiline():
# Consume the delimiters to see if we are at the end of the string
close = ""
while self._current == delim.unit:
close += self._current
self.inc()
if len(close) < 3:
# Not a triple quote, leave in result as-is.
# Adding back the characters we already consumed
value += close
continue
if len(close) == 3:
# We are at the end of the string
return String(delim, value, original, Trivia())
if len(close) >= 6:
raise self.parse_error(InvalidCharInStringError, self._current)
value += close[:-3]
original += close[:-3]
return String(delim, value, original, Trivia())
else:
# consume the closing delim, we do not care if EOF occurs as
# that would simply imply the end of self._src
self.inc()
return String(delim, value, original, Trivia())
elif delim.is_basic() and escaped:
# attempt to parse the current char as an escaped value, an exception
# is raised if this fails
value += self._parse_escaped_char(delim.is_multiline())
# no longer escaped
escaped = False
elif delim.is_basic() and self._current == "\\":
# the next char is being escaped
escaped = True
# consume this char, EOF here is an issue (middle of string)
self.inc(exception=UnexpectedEofError)
else:
# this is either a literal string where we keep everything as is,
# or this is not a special escaped char in a basic string
value += self._current
# consume this char, EOF here is an issue (middle of string)
self.inc(exception=UnexpectedEofError)
def _parse_table(
self, parent_name: Key | None = None, parent: Table | None = None
) -> tuple[Key, Table | AoT]:
"""
Parses a table element.
"""
if self._current != "[":
raise self.parse_error(
InternalParserError, "_parse_table() called on non-bracket character."
)
indent = self.extract()
self.inc() # Skip opening bracket
if self.end():
raise self.parse_error(UnexpectedEofError)
is_aot = False
if self._current == "[":
if not self.inc():
raise self.parse_error(UnexpectedEofError)
is_aot = True
try:
key = self._parse_key()
except EmptyKeyError:
raise self.parse_error(EmptyTableNameError) from None
if self.end():
raise self.parse_error(UnexpectedEofError)
elif self._current != "]":
raise self.parse_error(UnexpectedCharError, self._current)
key.sep = ""
full_key = key
name_parts = tuple(key)
if any(" " in part.key.strip() and part.is_bare() for part in name_parts):
raise self.parse_error(
ParseError, f'Invalid table name "{full_key.as_string()}"'
)
missing_table = False
if parent_name:
parent_name_parts = tuple(parent_name)
else:
parent_name_parts = ()
if len(name_parts) > len(parent_name_parts) + 1:
missing_table = True
name_parts = name_parts[len(parent_name_parts) :]
values = Container(True)
self.inc() # Skip closing bracket
if is_aot:
# TODO: Verify close bracket
self.inc()
cws, comment, trail = self._parse_comment_trail()
result = Null()
table = Table(
values,
Trivia(indent, cws, comment, trail),
is_aot,
name=name_parts[0].key if name_parts else key.key,
display_name=full_key.as_string(),
is_super_table=False,
)
if len(name_parts) > 1:
if missing_table:
# Missing super table
# i.e. a table initialized like this: [foo.bar]
# without initializing [foo]
#
# So we have to create the parent tables
table = Table(
Container(True),
Trivia("", cws, comment, trail),
is_aot and name_parts[0] in self._aot_stack,
is_super_table=True,
name=name_parts[0].key,
)
result = table
key = name_parts[0]
for i, _name in enumerate(name_parts[1:]):
child = table.get(
_name,
Table(
Container(True),
Trivia(indent, cws, comment, trail),
is_aot and i == len(name_parts) - 2,
is_super_table=i < len(name_parts) - 2,
name=_name.key,
display_name=(
full_key.as_string() if i == len(name_parts) - 2 else None
),
),
)
if is_aot and i == len(name_parts) - 2:
table.raw_append(_name, AoT([child], name=table.name, parsed=True))
else:
table.raw_append(_name, child)
table = child
values = table.value
else:
if name_parts:
key = name_parts[0]
while not self.end():
item = self._parse_item()
if item:
_key, item = item
if not self._merge_ws(item, values):
table.raw_append(_key, item)
else:
if self._current == "[":
_, key_next = self._peek_table()
if self._is_child(full_key, key_next):
key_next, table_next = self._parse_table(full_key, table)
table.raw_append(key_next, table_next)
# Picking up any sibling
while not self.end():
_, key_next = self._peek_table()
if not self._is_child(full_key, key_next):
break
key_next, table_next = self._parse_table(full_key, table)
table.raw_append(key_next, table_next)
break
else:
raise self.parse_error(
InternalParserError,
"_parse_item() returned None on a non-bracket character.",
)
table.value._validate_out_of_order_table()
if isinstance(result, Null):
result = table
if is_aot and (not self._aot_stack or full_key != self._aot_stack[-1]):
result = self._parse_aot(result, full_key)
return key, result
def _peek_table(self) -> tuple[bool, Key]:
"""
Peeks ahead non-intrusively by cloning then restoring the
initial state of the parser.
Returns the name of the table about to be parsed,
as well as whether it is part of an AoT.
"""
# we always want to restore after exiting this scope
with self._state(save_marker=True, restore=True):
if self._current != "[":
raise self.parse_error(
InternalParserError,
"_peek_table() entered on non-bracket character",
)
# AoT
self.inc()
is_aot = False
if self._current == "[":
self.inc()
is_aot = True
try:
return is_aot, self._parse_key()
except EmptyKeyError:
raise self.parse_error(EmptyTableNameError) from None
def _parse_aot(self, first: Table, name_first: Key) -> AoT:
"""
Parses all siblings of the provided table first and bundles them into
an AoT.
"""
payload = [first]
self._aot_stack.append(name_first)
while not self.end():
is_aot_next, name_next = self._peek_table()
if is_aot_next and name_next == name_first:
_, table = self._parse_table(name_first)
payload.append(table)
else:
break
self._aot_stack.pop()
return AoT(payload, parsed=True)
def _peek(self, n: int) -> str:
"""
Peeks ahead n characters.
n is the max number of characters that will be peeked.
"""
# we always want to restore after exiting this scope
with self._state(restore=True):
buf = ""
for _ in range(n):
if self._current not in " \t\n\r#,]}" + self._src.EOF:
buf += self._current
self.inc()
continue
break
return buf
def _peek_unicode(self, is_long: bool) -> tuple[str | None, str | None]:
"""
Peeks ahead non-intrusively by cloning then restoring the
initial state of the parser.
Returns the unicode value is it's a valid one else None.
"""
# we always want to restore after exiting this scope
with self._state(save_marker=True, restore=True):
if self._current not in {"u", "U"}:
raise self.parse_error(
InternalParserError, "_peek_unicode() entered on non-unicode value"
)
self.inc() # Dropping prefix
self.mark()
if is_long:
chars = 8
else:
chars = 4
if not self.inc_n(chars):
value, extracted = None, None
else:
extracted = self.extract()
if extracted[0].lower() == "d" and extracted[1].strip("01234567"):
return None, None
try:
value = chr(int(extracted, 16))
except (ValueError, OverflowError):
value = None
return value, extracted
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/py.typed 0000644 0000000 0000000 00000000000 14643451625 013366 0 ustar 00 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/source.py 0000644 0000000 0000000 00000011343 14643451625 013555 0 ustar 00 from __future__ import annotations
from copy import copy
from typing import Any
from tomlkit.exceptions import ParseError
from tomlkit.exceptions import UnexpectedCharError
from tomlkit.toml_char import TOMLChar
class _State:
def __init__(
self,
source: Source,
save_marker: bool | None = False,
restore: bool | None = False,
) -> None:
self._source = source
self._save_marker = save_marker
self.restore = restore
def __enter__(self) -> _State:
# Entering this context manager - save the state
self._chars = copy(self._source._chars)
self._idx = self._source._idx
self._current = self._source._current
self._marker = self._source._marker
return self
def __exit__(self, exception_type, exception_val, trace):
# Exiting this context manager - restore the prior state
if self.restore or exception_type:
self._source._chars = self._chars
self._source._idx = self._idx
self._source._current = self._current
if self._save_marker:
self._source._marker = self._marker
class _StateHandler:
"""
State preserver for the Parser.
"""
def __init__(self, source: Source) -> None:
self._source = source
self._states = []
def __call__(self, *args, **kwargs):
return _State(self._source, *args, **kwargs)
def __enter__(self) -> _State:
state = self()
self._states.append(state)
return state.__enter__()
def __exit__(self, exception_type, exception_val, trace):
state = self._states.pop()
return state.__exit__(exception_type, exception_val, trace)
class Source(str):
EOF = TOMLChar("\0")
def __init__(self, _: str) -> None:
super().__init__()
# Collection of TOMLChars
self._chars = iter([(i, TOMLChar(c)) for i, c in enumerate(self)])
self._idx = 0
self._marker = 0
self._current = TOMLChar("")
self._state = _StateHandler(self)
self.inc()
def reset(self):
# initialize both idx and current
self.inc()
# reset marker
self.mark()
@property
def state(self) -> _StateHandler:
return self._state
@property
def idx(self) -> int:
return self._idx
@property
def current(self) -> TOMLChar:
return self._current
@property
def marker(self) -> int:
return self._marker
def extract(self) -> str:
"""
Extracts the value between marker and index
"""
return self[self._marker : self._idx]
def inc(self, exception: type[ParseError] | None = None) -> bool:
"""
Increments the parser if the end of the input has not been reached.
Returns whether or not it was able to advance.
"""
try:
self._idx, self._current = next(self._chars)
return True
except StopIteration:
self._idx = len(self)
self._current = self.EOF
if exception:
raise self.parse_error(exception) from None
return False
def inc_n(self, n: int, exception: type[ParseError] | None = None) -> bool:
"""
Increments the parser by n characters
if the end of the input has not been reached.
"""
return all(self.inc(exception=exception) for _ in range(n))
def consume(self, chars, min=0, max=-1):
"""
Consume chars until min/max is satisfied is valid.
"""
while self.current in chars and max != 0:
min -= 1
max -= 1
if not self.inc():
break
# failed to consume minimum number of characters
if min > 0:
raise self.parse_error(UnexpectedCharError, self.current)
def end(self) -> bool:
"""
Returns True if the parser has reached the end of the input.
"""
return self._current is self.EOF
def mark(self) -> None:
"""
Sets the marker to the index's current position
"""
self._marker = self._idx
def parse_error(
self,
exception: type[ParseError] = ParseError,
*args: Any,
**kwargs: Any,
) -> ParseError:
"""
Creates a generic "parse error" at the current position.
"""
line, col = self._to_linecol()
return exception(line, col, *args, **kwargs)
def _to_linecol(self) -> tuple[int, int]:
cur = 0
for i, line in enumerate(self.splitlines()):
if cur + len(line) + 1 > self.idx:
return (i + 1, self.idx - cur)
cur += len(line) + 1
return len(self.splitlines()), 0
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/toml_char.py 0000644 0000000 0000000 00000002413 14643451625 014223 0 ustar 00 import string
class TOMLChar(str):
def __init__(self, c):
super().__init__()
if len(self) > 1:
raise ValueError("A TOML character must be of length 1")
BARE = string.ascii_letters + string.digits + "-_"
KV = "= \t"
NUMBER = string.digits + "+-_.e"
SPACES = " \t"
NL = "\n\r"
WS = SPACES + NL
def is_bare_key_char(self) -> bool:
"""
Whether the character is a valid bare key name or not.
"""
return self in self.BARE
def is_kv_sep(self) -> bool:
"""
Whether the character is a valid key/value separator or not.
"""
return self in self.KV
def is_int_float_char(self) -> bool:
"""
Whether the character if a valid integer or float value character or not.
"""
return self in self.NUMBER
def is_ws(self) -> bool:
"""
Whether the character is a whitespace character or not.
"""
return self in self.WS
def is_nl(self) -> bool:
"""
Whether the character is a new line character or not.
"""
return self in self.NL
def is_spaces(self) -> bool:
"""
Whether the character is a space or not
"""
return self in self.SPACES
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/toml_document.py 0000644 0000000 0000000 00000000156 14643451625 015126 0 ustar 00 from tomlkit.container import Container
class TOMLDocument(Container):
"""
A TOML document.
"""
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1720603541.0469248
tomlkit-0.13.0/tomlkit/toml_file.py 0000644 0000000 0000000 00000003077 14643451625 014234 0 ustar 00 import os
import re
from typing import TYPE_CHECKING
from tomlkit.api import loads
from tomlkit.toml_document import TOMLDocument
if TYPE_CHECKING:
from _typeshed import StrPath as _StrPath
else:
from typing import Union
_StrPath = Union[str, os.PathLike]
class TOMLFile:
"""
Represents a TOML file.
:param path: path to the TOML file
"""
def __init__(self, path: _StrPath) -> None:
self._path = path
self._linesep = os.linesep
def read(self) -> TOMLDocument:
"""Read the file content as a :class:`tomlkit.toml_document.TOMLDocument`."""
with open(self._path, encoding="utf-8", newline="") as f:
content = f.read()
# check if consistent line endings
num_newline = content.count("\n")
if num_newline > 0:
num_win_eol = content.count("\r\n")
if num_win_eol == num_newline:
self._linesep = "\r\n"
elif num_win_eol == 0:
self._linesep = "\n"
else:
self._linesep = "mixed"
return loads(content)
def write(self, data: TOMLDocument) -> None:
"""Write the TOMLDocument to the file."""
content = data.as_string()
# apply linesep
if self._linesep == "\n":
content = content.replace("\r\n", "\n")
elif self._linesep == "\r\n":
content = re.sub(r"(?