-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #38 from HaoZeke/addTowncrier
MAINT: Add towncrier
- Loading branch information
Showing
9 changed files
with
262 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,189 @@ | ||
# Changelog | ||
|
||
All notable changes to this project will be documented in this file. | ||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
||
This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the changes for the upcoming release can be found in <https://github.com/twisted/my-project/tree/main/changelog.d/>. | ||
|
||
<!-- towncrier release notes start --> | ||
|
||
## [0.1.0](https://github.com/airspeed-velocity/asv_runner/tree/0.1.0) - 11-09-2023 | ||
|
||
|
||
### Bug Fixes | ||
|
||
- Default `max_time` is set to `60.0` seconds to fix `--quick`. | ||
([#29](https://github.com/airspeed-velocity/asv_runner/issues/29)) | ||
- `asv` will not try to access a missing `colorama` attribute. | ||
([#32](https://github.com/airspeed-velocity/asv_runner/issues/32)) | ||
|
||
### Other Changes and Additions | ||
|
||
- `pip-tools` and `pip-compile` are used to pin transitive dependencies for | ||
read the docs. | ||
([#31](https://github.com/airspeed-velocity/asv_runner/issues/31)) | ||
|
||
|
||
## [0.0.9](https://github.com/airspeed-velocity/asv_runner/tree/0.0.9) - 20-08-2023 | ||
|
||
|
||
### New Features | ||
|
||
- Adds a `skip_benchmark` decorator. | ||
|
||
```python | ||
from asv_runner.benchmarks.helpers import skip_benchmark | ||
|
||
@skip_benchmark | ||
class TimeSuite: | ||
""" | ||
An example benchmark that times the performance of various kinds | ||
of iterating over dictionaries in Python. | ||
""" | ||
def setup(self): | ||
self.d = {} | ||
for x in range(500): | ||
self.d[x] = None | ||
|
||
def time_keys(self): | ||
for key in self.d.keys(): | ||
pass | ||
|
||
def time_values(self): | ||
for value in self.d.values(): | ||
pass | ||
|
||
def time_range(self): | ||
d = self.d | ||
for key in range(500): | ||
d[key] | ||
``` | ||
|
||
Usage requires `asv 0.6.0`. | ||
([#13](https://github.com/airspeed-velocity/asv_runner/issues/13)) | ||
- Finely grained `skip_benchmark_if` and `skip_params_if` have been added. | ||
|
||
```python | ||
from asv_runner.benchmarks.mark import skip_benchmark_if, skip_params_if | ||
import datetime | ||
|
||
class TimeSuite: | ||
""" | ||
An example benchmark that times the performance of various kinds | ||
of iterating over dictionaries in Python. | ||
""" | ||
params = [100, 200, 300, 400, 500] | ||
param_names = ["size"] | ||
|
||
def setup(self, size): | ||
self.d = {} | ||
for x in range(size): | ||
self.d[x] = None | ||
|
||
@skip_benchmark_if(datetime.datetime.now().hour >= 12) | ||
def time_keys(self, size): | ||
for key in self.d.keys(): | ||
pass | ||
|
||
@skip_benchmark_if(datetime.datetime.now().hour >= 12) | ||
def time_values(self, size): | ||
for value in self.d.values(): | ||
pass | ||
|
||
@skip_benchmark_if(datetime.datetime.now().hour >= 12) | ||
def time_range(self, size): | ||
d = self.d | ||
for key in range(size): | ||
d[key] | ||
|
||
# Skip benchmarking when size is either 100 or 200 and the current hour is | ||
12 or later. | ||
@skip_params_if([(100,), (200,)], | ||
datetime.datetime.now().hour >= 12) | ||
def time_dict_update(self, size): | ||
d = self.d | ||
for i in range(size): | ||
d[i] = i | ||
``` | ||
|
||
Usage requires `asv 0.6.0`. | ||
([#17](https://github.com/airspeed-velocity/asv_runner/issues/17)) | ||
- Benchmarks can now be parameterized using decorators. | ||
|
||
```python | ||
import numpy as np | ||
from asv_runner.benchmarks.mark import parameterize | ||
|
||
@parameterize({"n":[10, 100]}) | ||
def time_sort(n): | ||
np.sort(np.random.rand(n)) | ||
|
||
@parameterize({'n': [10, 100], 'func_name': ['range', 'arange']}) | ||
def time_ranges_multi(n, func_name): | ||
f = {'range': range, 'arange': np.arange}[func_name] | ||
for i in f(n): | ||
pass | ||
|
||
@parameterize({"size": [10, 100, 200]}) | ||
class TimeSuiteDecoratorSingle: | ||
def setup(self, size): | ||
self.d = {} | ||
for x in range(size): | ||
self.d[x] = None | ||
|
||
def time_keys(self, size): | ||
for key in self.d.keys(): | ||
pass | ||
|
||
def time_values(self, size): | ||
for value in self.d.values(): | ||
pass | ||
|
||
@parameterize({'n': [10, 100], 'func_name': ['range', 'arange']}) | ||
class TimeSuiteMultiDecorator: | ||
def time_ranges(self, n, func_name): | ||
f = {'range': range, 'arange': np.arange}[func_name] | ||
for i in f(n): | ||
pass | ||
``` | ||
|
||
Usage requires `asv 0.6.0`. | ||
([#18](https://github.com/airspeed-velocity/asv_runner/issues/18)) | ||
- Benchmarks can now be skipped during execution. | ||
|
||
```python | ||
from asv_runner.benchmarks.mark import skip_for_params, parameterize, | ||
SkipNotImplemented | ||
|
||
# Fast because no setup is called | ||
class SimpleFast: | ||
params = ([False, True]) | ||
param_names = ["ok"] | ||
|
||
@skip_for_params([(False, )]) | ||
def time_failure(self, ok): | ||
if ok: | ||
x = 34.2**4.2 | ||
|
||
@parameterize({"ok": [False, True]}) | ||
class SimpleSlow: | ||
def time_failure(self, ok): | ||
if ok: | ||
x = 34.2**4.2 | ||
else: | ||
raise SkipNotImplemented(f"{ok} is skipped") | ||
``` | ||
|
||
Usage requires `asv 0.6.0`. | ||
([#20](https://github.com/airspeed-velocity/asv_runner/issues/20)) | ||
|
||
### Bug Fixes | ||
|
||
- It is possible to set a default timeout from `asv`. | ||
([#19](https://github.com/airspeed-velocity/asv_runner/issues/19)) | ||
|
||
### Other Changes and Additions | ||
|
||
- Documentation, both long-form and API level has been added. | ||
([#6](https://github.com/airspeed-velocity/asv_runner/issues/6)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
!.gitignore |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
`asv_runner` now uses `towncrier` to manage the changelog, also adds the changeglog to the generated documentation. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Usage | ||
|
||
`towncrier` is used for keeping track of the changelog. The relevant configuration aspects are: | ||
- Each file can be formatted using markdown | ||
- The contents are rendered in bullets | ||
- Each file should be labeled with the corresponding **pull request**, e.g. `NUM.TYPE.md` | ||
+ Where there is no clear corresponding pull request, `+` can be used instead of `NUM` | ||
|
||
For mapping the types to headings, the following table can be used: | ||
|
||
|
||
| **TYPE** | **Heading** | | ||
| feat | New Features | | ||
| api | API Changes | | ||
| bugfix | Bug Fixes | | ||
| misc | Other Changes and Additions | | ||
|
||
## Release | ||
|
||
|
||
```bash | ||
# View the changes | ||
towncrier build --draft --version 0.1.0 --date "$(date -u +%Y-%m-%d)" | ||
# Modify CHANGES.md | ||
towncrier build --version 0.1.0 --date "$(date -u +%Y-%m-%d)" | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
[tool.towncrier] | ||
package = "asv_runner" | ||
package_dir = "asv_runner" | ||
all_bullets = false | ||
wrap = true | ||
directory = "changelog.d" | ||
filename = "CHANGELOG.md" | ||
start_string = "<!-- towncrier release notes start -->\n" | ||
underlines = ["", "", ""] | ||
title_format = "## [{version}](https://github.com/airspeed-velocity/asv_runner/tree/{version}) - {project_date}" | ||
issue_format = "[#{issue}](https://github.com/airspeed-velocity/asv_runner/issues/{issue})" | ||
|
||
[[tool.towncrier.type]] | ||
directory = "feat" | ||
name = "New Features" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "api" | ||
name = "API Changes" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "bugfix" | ||
name = "Bug Fixes" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "misc" | ||
name = "Other Changes and Additions" | ||
showcontent = true |