-
Notifications
You must be signed in to change notification settings - Fork 122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix/revisit get_package #297
Conversation
Try importing without changing `sys.path` first. This makes a difference for pytest, where it would fail to `from _pytest._version import version`, since `_pytest._version` does not exist in the source tree (with non-editable installs), but only the installed package. It also improves the error reporting: - prefix with "ERROR" for what might be redirected - raise the `ImportError` directly (more information than when wrapped in `Exception`) Ref: pytest-dev/pytest#6831
Codecov Report
@@ Coverage Diff @@
## master #297 +/- ##
==========================================
+ Coverage 96.25% 96.78% +0.53%
==========================================
Files 20 20
Lines 1148 1183 +35
Branches 105 106 +1
==========================================
+ Hits 1105 1145 +40
+ Misses 24 20 -4
+ Partials 19 18 -1
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good and I think that this is a big improvement. Only minor comments.
os.makedirs(os.path.join(temp, project_name)) | ||
|
||
with open(os.path.join(temp, project_name, "__init__.py"), "w") as f: | ||
f.write("__version__ = (1, 3, 12)") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
f.write("__version__ = (1, 3, 12)") | |
f.write("__version__ = "version.on.disk") |
but maybe we don't need at all.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not clear what this would clarify. :]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
'1.3.12' vs '1.3.13is a tiny difference :) .. .but maybe we don't even need to create these files ... and only have
sys_path_temp`
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is testing that get_version()
get's the version from the proper place. Unless we extracted the selecting of the package to be a separate activity (sure, that sounds maybe good) then don't we need to put versions into the packages so we can make sure the proper one was used?
'version on disk' doesn't seem to really distinguish between the two, but 'installed' vs. 'source' might? Though seems reasonable to keep them as 'versions' instead of 'names'. Perhaps (1, 3, 12)
and (2, 1, 5)
would make them usefully distinct so the difference is harder to overlook?
src/towncrier/test/test_project.py
Outdated
|
||
sys.path.insert(0, sys_path_temp) | ||
try: | ||
version = get_version(temp, project_name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we just pass here a path that doesn't exits to check that it is completely ignored by get_version
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds like a maybe reasonable separate test case? But it seems valid to test that when it _does_ exist it still acts as expected?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For get_version
I think that we should have this logic
See if version is a tuple and join them with a dot.
For anything else, just call str(version_object)
and strip it.
In this way it will work with incremental and any other version objects.
towncrier shouldn't care about comparing versions...
It can try to be smart and detect that you are not adding a version older than the latest one in the file... but I think that is too much...and again it should be implemented with a naive compare
So I am +1 for remove the incremental dependency :) and use simple version strings for towncrier :)
I am using a fork of towncrier in which incremental is removed as at least 3 years ago, incremental was not playing nice with private PYPI repos due to a bug in setup tools
Am I correct that your comments about |
Yes. Sorry for not being explicit. I was just venting by pain with Incremental :) |
Bumps [towncrier](https://github.com/hawkowl/towncrier) from 19.2.0 to 21.3.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/twisted/towncrier/blob/master/NEWS.rst">towncrier's changelog</a>.</em></p> <blockquote> <h1>towncrier 21.3.0 (2021-04-02)</h1> <p>No significant changes since the previous release candidate.</p> <h1>towncrier 21.3.0.rc1 (2021-03-21)</h1> <h2>Features</h2> <ul> <li>Ticket number from file names will be stripped down to avoid ticket links such as <code>[#7](https://github.com/hawkowl/towncrier/issues/007)</code>. (<code>[#126](twisted/towncrier#126) <https://github.com/hawkowl/towncrier/issues/126></code>_)</li> <li>Allow definition of the project <code>version</code> and <code>name</code> in the configuration file. This allows use of towncrier seamlessly with non-Python projects. (<code>[#165](twisted/towncrier#165) <https://github.com/hawkowl/towncrier/issues/165></code>_)</li> <li>Improve news fragment file name parsing to allow using file names like <code>123.feature.1.ext</code> which are convenient when one wants to use an appropriate extension (e.g. <code>rst</code>, <code>md</code>) to enable syntax highlighting. (<code>[#173](twisted/towncrier#173) <https://github.com/hawkowl/towncrier/issues/173></code>_)</li> <li>The new <code>--edit</code> option of the <code>create</code> subcommand launches an editor for entering the contents of the newsfragment. (<code>[#275](twisted/towncrier#275) <https://github.com/hawkowl/towncrier/issues/275></code>_)</li> <li>CPython 3.8 and 3.9 are now part of our automated test matrix and are officially supported. (<code>[#291](twisted/towncrier#291) <https://github.com/hawkowl/towncrier/issues/291></code>_)</li> <li>When searching for the project, first check for an existing importable instance. This helps if the version is only available in the installed version and not the source. (<code>[#297](twisted/towncrier#297) <https://github.com/hawkowl/towncrier/issues/297></code>_)</li> <li>Support building with PEP 517. (<code>[#314](twisted/towncrier#314) <https://github.com/hawkowl/towncrier/issues/314></code>_)</li> </ul> <h2>Bugfixes</h2> <ul> <li>Configuration errors found during command line execution now trigger a message to stderr and no longer show a traceback. (<code>[#84](twisted/towncrier#84) <https://github.com/hawkowl/towncrier/issues/84></code>_)</li> <li>A configuration error is triggered when the newsfragment files couldn't be discovered. (<code>[#85](twisted/towncrier#85) <https://github.com/hawkowl/towncrier/issues/85></code>_)</li> <li>Invoking towncrier as <code>python -m towncrier</code> works. (<code>[#163](twisted/towncrier#163) <https://github.com/hawkowl/towncrier/issues/163></code>_)</li> <li><code>check</code> subcommand defaults to UTF-8 encoding when <code>sys.stdout.encoding</code> is <code>None</code>. This happens, for example, with Python 2 on GitHub Actions or when the output is piped. (<code>[#175](twisted/towncrier#175) <https://github.com/hawkowl/towncrier/issues/175></code>_)</li> <li>Specifying <code>title_format</code> disables default top line creation to avoid duplication. (<code>[#180](twisted/towncrier#180) <https://github.com/hawkowl/towncrier/issues/180></code>_)</li> </ul> <h2>Improved Documentation</h2> <ul> <li>The README now mentions the possibility to name the configuration file <code>towncrier.toml</code> (in addition to <code>pyproject.toml</code>). (<code>[#172](twisted/towncrier#172) <https://github.com/hawkowl/towncrier/issues/172></code>_)</li> <li><code>start_line</code> corrected to <code>start_string</code> in the readme to match the long standing implementation. (<code>[#277](twisted/towncrier#277) <https://github.com/hawkowl/towncrier/issues/277></code>_)</li> </ul> <h1>towncrier 19.9.0 (2021-03-20)</h1> <p>No significant changes.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/twisted/towncrier/commit/eab34611b93a4ba6e3805cd546a674d88dbd43cf"><code>eab3461</code></a> Update NEWS.rst</li> <li><a href="https://github.com/twisted/towncrier/commit/bd963c351853d8977cd37c501b2b1b85d7cb0217"><code>bd963c3</code></a> add back the newsfragment...</li> <li><a href="https://github.com/twisted/towncrier/commit/3bf4479562f0cc6ff828fe93fffb94fadc4c731d"><code>3bf4479</code></a> Bump version to 21.3.0</li> <li><a href="https://github.com/twisted/towncrier/commit/3237ebd09527cecfd758c0fb472a3f5c7ccb1acb"><code>3237ebd</code></a> remove misc section</li> <li><a href="https://github.com/twisted/towncrier/commit/6eab89476cd4b3849563496c19d07905109c9f61"><code>6eab894</code></a> Correct underlines setting to toml in readme</li> <li><a href="https://github.com/twisted/towncrier/commit/4143e0ff55177cca5747d18624d614e593ebe3c3"><code>4143e0f</code></a> add 332.misc</li> <li><a href="https://github.com/twisted/towncrier/commit/05eea3f2240bfebee4522e1c1180893f7a79a509"><code>05eea3f</code></a> Release 21.3.0rc1</li> <li><a href="https://github.com/twisted/towncrier/commit/2841c12f2e7ebfc40d9cc3228ca468d339225549"><code>2841c12</code></a> Release 19.9.0 (<a href="https://github-redirect.dependabot.com/hawkowl/towncrier/issues/331">#331</a>)</li> <li><a href="https://github.com/twisted/towncrier/commit/7267fb56e2a34b4f81b4e0005e3f4eeddaa71b2b"><code>7267fb5</code></a> twisted-alike (so similar) automatic publishing on gha (<a href="https://github-redirect.dependabot.com/hawkowl/towncrier/issues/315">#315</a>)</li> <li><a href="https://github.com/twisted/towncrier/commit/499c8f7990f82d7decd32f139ec7a1c2d1b25719"><code>499c8f7</code></a> use incremental to canonicalize versions for release (<a href="https://github-redirect.dependabot.com/hawkowl/towncrier/issues/329">#329</a>)</li> <li>Additional commits viewable in <a href="https://github.com/hawkowl/towncrier/compare/19.2.0...21.3.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=towncrier&package-manager=pip&previous-version=19.2.0&new-version=21.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end)
towncrier 22.12.0 (2022-12-21) ============================== No changes since the previous release candidate. towncrier 22.12.0rc1 (2022-12-20) ================================= Features -------- - Added ``--keep`` option to the ``build`` command that allows generating a newsfile, but keeps the newsfragments in place. This option can not be used together with ``--yes``. (`#129 <https://github.com/hawkowl/towncrier/issues/129>`_) - Python 3.11 is now officially supported. (`#427 <https://github.com/hawkowl/towncrier/issues/427>`_) - You can now create fragments that are not associated with issues. Start the name of the fragment with ``+`` (e.g. ``+anything.feature``). The content of these orphan news fragments will be included in the release notes, at the end of the category corresponding to the file extension. To help quickly create a unique orphan news fragment, ``towncrier create +.feature`` will append a random string to the base name of the file, to avoid name collisions. (`#428 <https://github.com/hawkowl/towncrier/issues/428>`_) Improved Documentation ---------------------- - Improved contribution documentation. (`#415 <https://github.com/hawkowl/towncrier/issues/415>`_) - Correct a typo in the readme that incorrectly documented custom fragments in a format that does not work. (`#424 <https://github.com/hawkowl/towncrier/issues/424>`_) - The documentation has been restructured and (hopefully) improved. (`#435 <https://github.com/hawkowl/towncrier/issues/435>`_) - Added a Markdown-based how-to guide. (`#436 <https://github.com/hawkowl/towncrier/issues/436>`_) - Defining custom fragments using a TOML array is not deprecated anymore. (`#438 <https://github.com/hawkowl/towncrier/issues/438>`_) Deprecations and Removals ------------------------- - Default branch for `towncrier check` is now "origin/main" instead of "origin/master". If "origin/main" does not exist, fallback to "origin/master" with a deprecation warning. (`#400 <https://github.com/hawkowl/towncrier/issues/400>`_) Misc ---- - `#406 <https://github.com/hawkowl/towncrier/issues/406>`_, `#408 <https://github.com/hawkowl/towncrier/issues/408>`_, `#411 <https://github.com/hawkowl/towncrier/issues/411>`_, `#412 <https://github.com/hawkowl/towncrier/issues/412>`_, `#413 <https://github.com/hawkowl/towncrier/issues/413>`_, `#414 <https://github.com/hawkowl/towncrier/issues/414>`_, `#416 <https://github.com/hawkowl/towncrier/issues/416>`_, `#418 <https://github.com/hawkowl/towncrier/issues/418>`_, `#419 <https://github.com/hawkowl/towncrier/issues/419>`_, `#421 <https://github.com/hawkowl/towncrier/issues/421>`_, `#429 <https://github.com/hawkowl/towncrier/issues/429>`_, `#430 <https://github.com/hawkowl/towncrier/issues/430>`_, `#431 <https://github.com/hawkowl/towncrier/issues/431>`_, `#434 <https://github.com/hawkowl/towncrier/issues/434>`_, `#446 <https://github.com/hawkowl/towncrier/issues/446>`_, `#447 <https://github.com/hawkowl/towncrier/issues/447>`_ towncrier 22.8.0 (2022-08-29) ============================= No significant changes since the previous release candidate. towncrier 22.8.0.rc1 (2022-08-28) ================================= Features -------- - Make the check subcommand succeed for branches that change the news file This should enable the ``check`` subcommand to be used as a CI lint step and not fail when a pull request only modifies the configured news file (i.e. when the news file is being assembled for the next release). (`#337 <https://github.com/hawkowl/towncrier/issues/337>`_) - Added support to tables in toml settings, which provides a more intuitive way to configure custom types. (`#369 <https://github.com/hawkowl/towncrier/issues/369>`_) - The `towncrier create` command line now has a new `-m TEXT` argument that is used to define the content of the newly created fragment. (`#374 <https://github.com/hawkowl/towncrier/issues/374>`_) Bugfixes -------- - The extra newline between the title and rendered content when using ``--draft`` is no longer inserted. (`#105 <https://github.com/hawkowl/towncrier/issues/105>`_) - The detection of duplicate release notes was fixed and recording changes of same version is no longer triggered. Support for having the release notes for each version in a separate file is working again. This is a regression introduced in VERSION 19.9.0rc1. (`#391 <https://github.com/hawkowl/towncrier/issues/391>`_) Improved Documentation ---------------------- - Improve ``CONTRIBUTING.rst`` and add PR template. (`#342 <https://github.com/hawkowl/towncrier/issues/342>`_) - Move docs too the main branch and document custom fragment types. (`#367 <https://github.com/hawkowl/towncrier/issues/367>`_) - The CLI help messages were updated to contain more information. (`#384 <https://github.com/hawkowl/towncrier/issues/384>`_) Deprecations and Removals ------------------------- - Support for all Python versions older than 3.7 has been dropped. (`#378 <https://github.com/hawkowl/towncrier/issues/378>`_) Misc ---- - `#292 <https://github.com/hawkowl/towncrier/issues/292>`_, `#330 <https://github.com/hawkowl/towncrier/issues/330>`_, `#366 <https://github.com/hawkowl/towncrier/issues/366>`_, `#376 <https://github.com/hawkowl/towncrier/issues/376>`_, `#377 <https://github.com/hawkowl/towncrier/issues/377>`_, `#380 <https://github.com/hawkowl/towncrier/issues/380>`_, `#381 <https://github.com/hawkowl/towncrier/issues/381>`_, `#382 <https://github.com/hawkowl/towncrier/issues/382>`_, `#383 <https://github.com/hawkowl/towncrier/issues/383>`_, `#393 <https://github.com/hawkowl/towncrier/issues/393>`_, `#399 <https://github.com/hawkowl/towncrier/issues/399>`_, `#402 <https://github.com/hawkowl/towncrier/issues/402>`_ towncrier 21.9.0 (2022-02-04) ============================= Features -------- - towncrier --version` was added to the command line interface to show the product version. (`#339 <https://github.com/hawkowl/towncrier/issues/339>`_) - Support Toml v1 syntax with tomli on Python 3.6+ (`#354 <https://github.com/hawkowl/towncrier/issues/354>`_) Bugfixes -------- - Stop writing title twice when ``title_format`` is specified. (`#346 <https://github.com/hawkowl/towncrier/issues/346>`_) - Disable universal newlines when reading TOML (`#359 <https://github.com/hawkowl/towncrier/issues/359>`_) Misc ---- - `#332 <https://github.com/hawkowl/towncrier/issues/332>`_, `#333 <https://github.com/hawkowl/towncrier/issues/333>`_, `#334 <https://github.com/hawkowl/towncrier/issues/334>`_, `#338 <https://github.com/hawkowl/towncrier/issues/338>`_ towncrier 21.3.0 (2021-04-02) ============================= No significant changes since the previous release candidate. towncrier 21.3.0.rc1 (2021-03-21) ================================= Features -------- - Ticket number from file names will be stripped down to avoid ticket links such as ``#7``. (`#126 <https://github.com/hawkowl/towncrier/issues/126>`_) - Allow definition of the project ``version`` and ``name`` in the configuration file. This allows use of towncrier seamlessly with non-Python projects. (`#165 <https://github.com/hawkowl/towncrier/issues/165>`_) - Improve news fragment file name parsing to allow using file names like ``123.feature.1.ext`` which are convenient when one wants to use an appropriate extension (e.g. ``rst``, ``md``) to enable syntax highlighting. (`#173 <https://github.com/hawkowl/towncrier/issues/173>`_) - The new ``--edit`` option of the ``create`` subcommand launches an editor for entering the contents of the newsfragment. (`#275 <https://github.com/hawkowl/towncrier/issues/275>`_) - CPython 3.8 and 3.9 are now part of our automated test matrix and are officially supported. (`#291 <https://github.com/hawkowl/towncrier/issues/291>`_) - When searching for the project, first check for an existing importable instance. This helps if the version is only available in the installed version and not the source. (`#297 <https://github.com/hawkowl/towncrier/issues/297>`_) - Support building with PEP 517. (`#314 <https://github.com/hawkowl/towncrier/issues/314>`_) Bugfixes -------- - Configuration errors found during command line execution now trigger a message to stderr and no longer show a traceback. (`#84 <https://github.com/hawkowl/towncrier/issues/84>`_) - A configuration error is triggered when the newsfragment files couldn't be discovered. (`#85 <https://github.com/hawkowl/towncrier/issues/85>`_) - Invoking towncrier as `python -m towncrier` works. (`#163 <https://github.com/hawkowl/towncrier/issues/163>`_) - ``check`` subcommand defaults to UTF-8 encoding when ``sys.stdout.encoding`` is ``None``. This happens, for example, with Python 2 on GitHub Actions or when the output is piped. (`#175 <https://github.com/hawkowl/towncrier/issues/175>`_) - Specifying ``title_format`` disables default top line creation to avoid duplication. (`#180 <https://github.com/hawkowl/towncrier/issues/180>`_) Improved Documentation ---------------------- - The README now mentions the possibility to name the configuration file ``towncrier.toml`` (in addition to ``pyproject.toml``). (`#172 <https://github.com/hawkowl/towncrier/issues/172>`_) - ``start_line`` corrected to ``start_string`` in the readme to match the long standing implementation. (`#277 <https://github.com/hawkowl/towncrier/issues/277>`_) towncrier 19.9.0 (2021-03-20) ============================= No significant changes. towncrier 19.9.0rc1 (2019-09-16) ================================ Features -------- - Add ``create`` subcommand, which can be used to quickly create a news fragment command in the location defined by config. (`#4 <https://github.com/hawkowl/towncrier/issues/4>`_) - Add support for subcommands, meaning the functionality of the ``towncrier`` executable is now replaced by the ``build`` subcommand:: $ towncrier build --draft A new ``check`` subcommand is exposed. This is an alternative to calling the ``towncrier.check`` module manually:: $ towncrier check Calling ``towncrier`` without a subcommand will result in a call to the ``build`` subcommand to ensure backwards compatibility. This may be removed in a future release. (`#144 <https://github.com/hawkowl/towncrier/issues/144>`_) - Towncrier's templating now allows configuration of the version header. *CUSTOM TEMPLATE USERS PLEASE NOTE: You will need to add the version header information to your template!* (`#147 <https://github.com/hawkowl/towncrier/issues/147>`_) - towncrier now accepts the --config argument to specify a custom configuration file (`#157 <https://github.com/hawkowl/towncrier/issues/157>`_) - There is now the option for ``all_bullets = false`` in the configuration. Setting ``all_bullets`` to false means that news fragments have to include the bullet point if they should be rendered as enumerations, otherwise they are rendered directly (this means fragments can include a header.). It is necessary to set this option to avoid (incorrect) automatic indentation of multiline fragments that do not include bullet points. The ``single-file-no-bullets.rst`` template gives an example of using these options. (`#158 <https://github.com/hawkowl/towncrier/issues/158>`_) - The ``single_file`` option can now be added to the configuration file. When set to ``true``, the filename key can now be formattable with the ``name``, ``version``, and ``project_date`` format variables. This allows subsequent versions to be written out to new files instead of appended to an existing one. (`#161 <https://github.com/hawkowl/towncrier/issues/161>`_) - You can now specify Towncrier-bundled templates in your configuration file. Available templates are `default`, `hr-between-versions` (as used in attrs), and `single-file-no-bullets`. (`#162 <https://github.com/hawkowl/towncrier/issues/162>`_) Bugfixes -------- - Accept newsfragment filenames with multiple dots, like `fix-1.2.3.bugfix`. (`#142 <https://github.com/hawkowl/towncrier/issues/142>`_) Deprecations and Removals ------------------------- - The `--pyproject` option for `towncrier check` is now replaced with `--config`, for consistency with other commands. (`#162 <https://github.com/hawkowl/towncrier/issues/162>`_)
No description provided.