Skip to content
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

Users can now write the content in the "create" method. #275

Merged
merged 12 commits into from
Dec 2, 2020

Conversation

saroad2
Copy link
Contributor

@saroad2 saroad2 commented Oct 7, 2020

Now, you don't have to create the news fragment and then edit it. You can write the content dynamically!

@codecov-io
Copy link

codecov-io commented Oct 7, 2020

Codecov Report

Merging #275 (a807a96) into master (0df024e) will increase coverage by 0.34%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #275      +/-   ##
==========================================
+ Coverage   89.49%   89.84%   +0.34%     
==========================================
  Files          11       11              
  Lines         438      453      +15     
  Branches       87       91       +4     
==========================================
+ Hits          392      407      +15     
  Misses         25       25              
  Partials       21       21              
Impacted Files Coverage Δ
src/towncrier/create.py 100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0df024e...2ee34f4. Read the comment docs.

@saroad2
Copy link
Contributor Author

saroad2 commented Oct 14, 2020

Any chance someone take a look at it? It's the only thing preventing me from using Towncrier in my projects.

@saroad2
Copy link
Contributor Author

saroad2 commented Oct 30, 2020

@Julian, any feedback on this?

Copy link
Member

@altendky altendky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great feature to add, thanks for the work on this. I am a bit concerned about developing and maintaining our own editor though. I wasn't familiar with this feature but as I searched around I ran across click.edit() which seems applicable. Do you think it would work well here?

https://click.palletsprojects.com/en/7.x/utils/#launching-editors

src/towncrier/newsfragments/275.feature Outdated Show resolved Hide resolved
@saroad2
Copy link
Contributor Author

saroad2 commented Nov 28, 2020

Hey @altendky , click.edit was an excellent idea! thanks for that.

Now, it allowed us another functionality that wasn't supported before: if the user does not save the file created by the edit method, we abort without creating the new news fregmant.

If something else is needed to be done in order to merge this PR, let me know.

Copy link
Member

@altendky altendky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the continued help with this and the quick turnaround.

src/towncrier/create.py Outdated Show resolved Hide resolved
src/towncrier/create.py Outdated Show resolved Hide resolved
src/towncrier/create.py Outdated Show resolved Hide resolved
src/towncrier/create.py Outdated Show resolved Hide resolved
src/towncrier/test/test_create.py Show resolved Hide resolved
Copy link
Member

@altendky altendky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some miscellaneous details I might like to tweak. Would you prefer I raise them here or just follow up afterwards myself? I'm fine with either but don't want to put you through every little tidbit unless you specifically want to.

Thanks again for this PR.

src/towncrier/test/test_create.py Show resolved Hide resolved
@saroad2
Copy link
Contributor Author

saroad2 commented Dec 2, 2020

@altendky no problem mate, if you still think there additional things that need to be done related to this PR, feel free to add comments about them and I'll try to fix those ASAP.

One thing that I would like to ask is that after we do merge this PR, you would publish a new towncrier version so I could start using this new ability. As I said, this is the only thing preventing me from using towncrier ATM.

@altendky
Copy link
Member

altendky commented Dec 2, 2020

@saroad2, I try not to make promises on work like this but my intent is to work through the open PRs and bugs and get a release out. Who knows, maybe I give up part way through and do a release earlier.

@seberg
Copy link

seberg commented Dec 2, 2020

@altendky just wanted to give some kudos! It is very cool to see you picking up maintenance of towncrier. It has worked well for us at NumPy the past year (I think we may still be using the master branch, but that hardly matters).

src/towncrier/create.py Outdated Show resolved Hide resolved
src/towncrier/create.py Outdated Show resolved Hide resolved
src/towncrier/newsfragments/275.feature Outdated Show resolved Hide resolved

if content is None:
click.echo("Abort creating news fragment.")
ctx.exit(1)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know the details of the various ways to exit a click program and which is best? (and why :]) I wasn't even aware that ctx.exit() existed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ctx.exit means exit the program with code.
You can always use the python return directive if you want, but it means that the exit code would be 0.

Here, I chose to exit with code 1 because if the user did not write content, it means the operation has "failed", and the exit code should reflect that.

As for the use of ctx.exit, click has this real bad habit of wrapping built-in python methods with click functions (for example, wrapping the print method in click.echo). I don't like it at all, but I take it as a conversion when working with click (this is related to our mocking discussion). In our case, we could simply use sys.exit instead and it would do the same.

To sum up, ctx.exit is the best choice, considering that it is a convention.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree a non-zero exit code is sensible, my only question was how to do it. I asked about this in the Click discord and the only answer I got was sys.exit(), but I think they hadn't heard of ctx.exit() either. :] Anyways, click.echo() does do more than print especially when dealing across Python versions and platforms. There's lots of room for major hassle when trying to handle that at the lower levels.

@altendky
Copy link
Member

altendky commented Dec 2, 2020

@saroad2, thanks again for both the initial submission and continuing to work through this with me.

@altendky altendky merged commit a651d17 into twisted:master Dec 2, 2020
@saroad2
Copy link
Contributor Author

saroad2 commented Dec 2, 2020

Thank you so much @altendky ! I had a great time working on this.

I really like towncrier. I think it's such a great tool.
I wanted to integrate it into my repos (both open-source and work-related) for quite some time now. I think that once you publish a new version, I'll be able to do so!

@saroad2 saroad2 deleted the write_content_dynamically branch December 2, 2020 21:41
aio-libs-github-bot bot pushed a commit to aio-libs/multidict that referenced this pull request Apr 6, 2021
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) &lt;https://github.com/hawkowl/towncrier/issues/126&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/165&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/173&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/275&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/291&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/297&gt;</code>_)</li>
<li>Support building with PEP 517. (<code>[#314](twisted/towncrier#314) &lt;https://github.com/hawkowl/towncrier/issues/314&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/84&gt;</code>_)</li>
<li>A configuration error is triggered when the newsfragment files couldn't be discovered. (<code>[#85](twisted/towncrier#85) &lt;https://github.com/hawkowl/towncrier/issues/85&gt;</code>_)</li>
<li>Invoking towncrier as <code>python -m towncrier</code> works. (<code>[#163](twisted/towncrier#163) &lt;https://github.com/hawkowl/towncrier/issues/163&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/175&gt;</code>_)</li>
<li>Specifying <code>title_format</code> disables default top line creation to avoid duplication. (<code>[#180](twisted/towncrier#180) &lt;https://github.com/hawkowl/towncrier/issues/180&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/172&gt;</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) &lt;https://github.com/hawkowl/towncrier/issues/277&gt;</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)
wip-sync referenced this pull request in NetBSD/pkgsrc-wip May 5, 2023
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>`_)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants