- Removed experimental auto-formatting feature, :pr:`108`.
This includes removing the
experimental
extra group for optional dependencies. Users that are interested in auto-formatting the output are suggested to runpyproject-fmt
as an additional step, afterini2toml
.
- Due to the change in API for
pyproject-fmt
introduce a dependency cap.
- Introduce
LiteTranslator
andFullTranslator
as convenience classes for more deterministic behaviour, :pr:`95`. setuptools
plugin:- Fix
ValueError
whensetup.cfg
contains[options.packages.find]
but also lists[options] packages = ...
explicitly as a list of package names, :issue:`93`.
- Fix
pytest
plugin:- Remove comments when converting
addopts
with multi-line values, :issue:`98`.
- Remove comments when converting
- Remove
ini2toml.api.{errors,types,transformations}
as they are redundant withini2toml.{errors,types,transformations}
.
Fix errors when
isort
is installed in the same environment asini2toml
, :pr:`83`.setuptools
plugin:Add support for
file:
directive ininstall_requires
andextras_require
, :pr:`77`.Attention!
Note that
setuptools
(as per v67.6) may require that alloptional-dependencies
to be specified via thefile:
directive if at least one of them requires so.
- Fix logging in case of early errors while loading plugins, :pr:`69`
- Log warning if
flake8
anddevpi
sections are translation, prompting the user to review the output, :issue:`72` pytest
plugin:- Fix parsing of
filterwarnings
, issue:74
- Fix parsing of
- Fix dependency problems by requiring
pyproject-fmt>=0.4.0
- Adapt to changes in
pyproject-fmt
0.4.0
- Internal test fixes, minor CI and doc improvements
- Only list
pyproject-fmt
as an experimental dependency on Python 3.7+
setuptools
plugin:- Separate the handling of
license-files
and PEP 621 metadata, #34 license
andlicense-files
are no longer added totool.setuptools.dynamic
.- Instead
license-files
is added directly totool.setuptools
, and thelicense
should be added asproject.license.text
.
- Separate the handling of
- Fixed missing terminating newline at the end of the generated file, :pr:`27`, :pr:`32`
- Added heuristic for appropriate string representation selection when serialising TOML, :pr:`28`
- [CI] Added GitHub Actions for automatic test and release of tags, :pr:`30`
- :pypi:`atoml` dependency replaced with :pypi:`tomlkit`, :issue:`23`
setuptools
plugin:- Now commas are stripped when splitting keywords for setuptools plugin, :issue:`24`
- Avoid problems with duplicated augmentation, :pr:`20`
- Make sure each plugin is activated only once, :pr:`21`
- Improve TOML formatting, :pr:`22`
setuptools
plugin:- Make
build-system
the first section in the createdpyproject.toml
, :pr:`19`
- Make
setuptools
plugin:- Fix dependency splitter for single lines with env markers
isort
plugin:- Fixed wrong comparison of whitespace and comments with field names
setuptools
plugin:- Explicitly added the default license globs as considered by setuptools/wheels (previously the PEP 621 guarantees about backfilling dynamic fields could not be respected).
setuptools
plugin:- Fixed bug that forced normalisation of option subsections even when the keys represent package names or file paths.
- Fixed bug that prevented line continuations in the package requirements.
setuptools
seem to support this use case, and people use it to write markers in separated lines (possible with comments between them). - Fixed but that allowed an empty
entry-points
subtable to be left behind in thetool.setuptools
table.
- Fixed bug that was replacing tables when a new subtable was being added and that new subtable could be written as an inline table
setuptools
plugin:- Fixed bug that was preventing
entry-points
to be automatically added to theproject.dynamic
array.
- Fixed bug that was preventing
setuptools
plugin:- Added automatic "update" for deprecated
tests-require
key. This value associated with this option is now automatically transformed into atesting
extras group in theoptional-dependencies
. - Added automatic "expansion" of environment markers inside the extra key in
optional-dependencies. According to :pep:`PEP 621 <621#dependencies-optional-dependencies>`
(that points to the core metadata spec), the
optional-dependencies
keys must be valid Python identifiers (butsetuptools
historically seem to accept markers embedded with:
after the extra name).
- Added automatic "update" for deprecated
- Bumped the version of the :pypi:`atoml` dependency to 1.1.1.
setuptools
plugin:- PROVISIONAL - Added support for specifying
license
andlicense-files
at the same time viadynamic
(this is likely to be revised depending on PEP 639). - Added support for multiple files in
long-description
viadynamic
.
- PROVISIONAL - Added support for specifying
- Removed dependency on
typing_extensions
for Python <= 3.8 - Removed dependency on
dataclasses
for Python <= 3.6 - Removed dependency on
importlib-metadata
for Python <= 3.8, but only for minimal install setuptools
plugin:- Added support for
cmdclass
- Added support for
- Improved support for writing inline dicts and inline AoTs in the generated TOML
setuptools
plugin:- Added
data-files
support (although this option is marked as deprecated). - Unified
tool.setuptools.packages.find
andtool.setuptools.packages.find-namespace
options by adding a new keywordnamespaces
tool.setuptools.packages.find.where
is now associated with a list of directories (instead of a single value).- When not present in the original config file,
include_package_data
is explicitly added with theFalse
value. - Fixed
authors
vs.maintainers
mixing (now they are handled independently). - Added dynamic option for
readme
(e.g. when multiple license files are combined). - Reordered set of transformations (which includes making
apply_value_processing
the first one). - Improved directive handling.
- Added deprecation warnings.
- Added
- Adopt
atoml>=1.1.0
as a dependency and stabilise the list conversion.
- Add validation tests via :pypi:`validate-pyproject`.
- Move
setuptools.scripts
tosetuptools.script-files
to avoid confusion with thescripts
field defined in PEP 621. - Separate
Translator
andBaseTranslator
classes. This allows API users to callBaseTranslator
directly with explicit arguments and bypass the autodiscovery of drivers and plugins (therefore reducing the amount of dependencies and files necessary when "vendorising"ini2toml
). - The type signature of
BaseTranslator
was made more flexible to allow returning a :class:`dict` representing the TOML instead of a string. - Add a
plain_builtins
driver. The objective of this change is allowing the removal of the dependency on :pypi:`atoml` or :pypi:`tomli-w` when usingini2toml
as API only. - Improve the choice of
InlineTable
vs.Table
for the generated TOML when using thefull_toml
adapter. - Improve heuristic to remove superfluous empty tables in the generated TOML string.
distutils.commands
-related sections insetup.cfg
are now better recognised and transferred to thetool.distutils
table in the generated TOML (previously they were placed undertool.setuptools.commands
). The normalisation of the command names usingkebab-case
is no longer performed.- Prevent empty
entry-points
field to be kept in the TOML when separatingscripts
andgui-scripts
. version
is now automatically added todynamic
if not provided.- Fix
find:
directive to match :pypi:`validate-pyproject`. Previously{find = ""}
was generated, which now is converted to{find = {}}
. - Add new helpers to the
transformations
library:deprecated
andpipe
. - Add new test derived from :pypi:`setuptools`'s docs directly.
- Small improvements
- Documentation updates
- Fix virtualenv test example.
- Initial release with basic functionalities