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

REL: Prepare for 0.6.4 #1424

Merged
merged 7 commits into from
Aug 12, 2024
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,24 +89,3 @@ jobs:
- uses: actions/upload-artifact@v3
with:
path: dist/*.tar.gz

upload_pypi:
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/asv_runner
permissions:
id-token: write # for trusted publishing
# upload to PyPI on every tag starting with 'v'
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'airspeed-velocity/asv'
# alternatively, to publish when a GitHub Release is created, use the following rule:
# if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v3
with:
# unpacks default artifact into dist/
# if `name: artifact` is omitted, the action will create extra parent dir
name: artifact
path: dist
- uses: pypa/gh-action-pypi-publish@release/v1
Copy link
Contributor

Choose a reason for hiding this comment

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

Are you doing this differently now?

Copy link
Member Author

Choose a reason for hiding this comment

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

We never set up trusted publishing so this wasn't running, and shouldn't have been here. The release notes clarify this, explaining that we use twine for manual management.

I prefer manual management since you can test the wheels before uploading, the trusted publisher workflow means the only way to fix a bug is either a new release or a yank.

9 changes: 0 additions & 9 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
0.6.4 (TBD)
------------------

Other Changes and Additions
^^^^^^^^^^^^^^^^^^^^^^^^^^^

- ``asv`` defaults to ``--force-reinstall`` now to facilitate ``compare`` and ``continuous`` for manually versioned projects (#1421)


0.6.3 (2024-02-25)
------------------

Expand Down
144 changes: 144 additions & 0 deletions CODE_OF_CONDUCT.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
Contributor Covenant Code of Conduct
====================================

Our Pledge
----------

We as members, contributors, and leaders pledge to make participation in
our community a harassment-free experience for everyone, regardless of
age, body size, visible or invisible disability, ethnicity, sex
characteristics, gender identity and expression, level of experience,
education, socio-economic status, nationality, personal appearance,
race, caste, color, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open,
welcoming, diverse, inclusive, and healthy community.

Our Standards
-------------

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our
mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the
overall community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or
advances of any kind
- Trolling, insulting or derogatory comments, and personal or political
attacks
- Public or private harassment
- Publishing others’ private information, such as a physical or email
address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting

Enforcement Responsibilities
----------------------------

Community leaders are responsible for clarifying and enforcing our
standards of acceptable behavior and will take appropriate and fair
corrective action in response to any behavior that they deem
inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other
contributions that are not aligned to this Code of Conduct, and will
communicate reasons for moderation decisions when appropriate.

Scope
-----

This Code of Conduct applies within all community spaces, and also
applies when an individual is officially representing the community in
public spaces. Examples of representing our community include using an
official e-mail address, posting via an official social media account,
or acting as an appointed representative at an online or offline event.

Enforcement
-----------

Instances of abusive, harassing, or otherwise unacceptable behavior may
be reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD]. All complaints will be reviewed and
investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security
of the reporter of any incident.

Enforcement Guidelines
----------------------

Community leaders will follow these Community Impact Guidelines in
determining the consequences for any action they deem in violation of
this Code of Conduct:

1. Correction
~~~~~~~~~~~~~

**Community Impact**: Use of inappropriate language or other behavior
deemed unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders,
providing clarity around the nature of the violation and an explanation
of why the behavior was inappropriate. A public apology may be
requested.

2. Warning
~~~~~~~~~~

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, for a specified period of
time. This includes avoiding interactions in community spaces as well as
external channels like social media. Violating these terms may lead to a
temporary or permanent ban.

3. Temporary Ban
~~~~~~~~~~~~~~~~

**Community Impact**: A serious violation of community standards,
including sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No
public or private interaction with the people involved, including
unsolicited interaction with those enforcing the Code of Conduct, is
allowed during this period. Violating these terms may lead to a
permanent ban.

4. Permanent Ban
~~~~~~~~~~~~~~~~

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of
individuals.

**Consequence**: A permanent ban from any sort of public interaction
within the community.

Attribution
-----------

This Code of Conduct is adapted from the `Contributor
Covenant <https://www.contributor-covenant.org>`__, version 2.1,
available at
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

Community Impact Guidelines were inspired by `Mozilla’s code of conduct
enforcement ladder <https://github.com/mozilla/diversity>`__.

For answers to common questions about this code of conduct, see the FAQ
at https://www.contributor-covenant.org/faq. Translations are available
at https://www.contributor-covenant.org/translations.
103 changes: 103 additions & 0 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
Contributing
============

We love pull requests from everyone. By participating in this project,
you agree to abide by the contributor covenant suggested `code of
conduct <https://github.com/airspeed-velocity/asv/blob/main/CODE_OF_CONDUCT.md>`__.

We Use `Github Flow <https://docs.github.com/en/get-started/using-github/github-flow>`__, So All Code Changes Happen Through Pull Requests
------------------------------------------------------------------------------------------------------------------------------------------

Pull requests are the best way to propose changes to the codebase (we
use `Github
Flow <https://guides.github.com/introduction/flow/index.html>`__). We
actively welcome your pull requests:

1. Fork the repo and create your branch from ``main``.
2. If you’ve added code that should be tested, add tests.
3. If you’ve changed APIs, update the documentation.
4. Ensure the test suite passes.
5. Make sure your code lints.
6. Issue that pull request!
7. (optional) Add a release note if necessary.

Commit Style
------------

A sample **good commit** is:

.. code:: diff
fileName: Thing I did
Some subHeading things
So this change was to do that thing I thought was good. Also there was this
other person who thought so too, so then I ate a sandwich and we got the code
done. I am writing this but really, honestly, two people did this.
Co-authored-by: Joel Doe <joel@iexistreally.com>
A good commit should have:

- The name of the file, or the topic or the subject you have changed or
the namespace or the functionality you have added **something:**
- A line describing **something:**
- An *(optional)* subheading with more details
- An *(optional)* paragraph or essay on why the change was done and
anything else you want to share with the devs.
- **Co-authorship** IS MANDATORY if applicable.

.. raw:: html

<!-- * Follow our [style guide][style]. -->

.. raw:: html

<!-- [style]: https://github.com/thoughtbot/guides/tree/master/style -->

Automated Styles
================

A ``pre-commit`` job is setup on CI to enforce consistent styles, so it
is best to set it up locally as well (using
`pipx <https://pypa.github.io/pipx>`__ for isolation):

.. code:: sh
# Run before committing
pipx run pre-commit run --all-files
# Or install the git hook to enforce this
pipx run pre-commit install
Changelog management
====================

We use reST for the changelog fragments, and they are stored under
``changelog.d``

- Use pull requests to number the snippets
- Build a final variant with:
``towncrier build --version 0.6.3 --date "$(date -u +%Y-%m-%d)"``
- Supported categories are:
- ``feat``
- ``api``
- ``bugfix``
- ``misc``

Here are some sample use cases:

.. code:: sh
towncrier create -c "Fancy new feature but with a PR attached" +new_thing.added.rst
towncrier create -c "Require C++17 only" 1.misc.rst
The generated files can be modified later as well.


..
References
[1] d-SEAMS: https://github.com/d-SEAMS/seams-core
[2] Flowy: https://github.com/flowy-code/flowy/blob/main/CONTRIBUTING.md
[3] Transcriptase: https://gist.github.com/briandk/3d2e8b3ec8daf5a27a62
[4] readcon: https://github.com/HaoZeke/readCon
54 changes: 8 additions & 46 deletions asv/_rangemedian.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,52 +348,14 @@ static PyMethodDef RangeMedian_methods[] = {

static PyTypeObject RangeMedianType = {
PyVarObject_HEAD_INIT(NULL, 0)
"RangeMedian",
sizeof(RangeMedianObject),
0,
(destructor)RangeMedian_dealloc, // tp_dealloc
0, // tp_print
0, // tp_getattr
0, // tp_setattr
0, // tp_compare / tp_reserved
0, // tp_repr
0, // tp_as_number
0, // tp_as_sequence
0, // tp_as_mapping
0, // tp_hash
0, // tp_call
0, // tp_str
0, // tp_getattro
0, // tp_setattro
0, // tp_as_buffer
Py_TPFLAGS_DEFAULT, // tp_flags
NULL, // tp_doc
0, // tp_traverse
0, // tp_clear
0, // tp_richcompare
0, // tp_weaklistoffset
0, // tp_iter
0, // tp_iternext
RangeMedian_methods, // tp_methods
0, // tp_members
0, // tp_getset
0, // tp_base
0, // tp_dict
0, // tp_descr_get
0, // tp_descr_set
0, // tp_dictoffset
(initproc)RangeMedian_init, // tp_init
0, // tp_alloc
RangeMedian_new, // tp_new
0, // tp_free
0, // tp_is_gc
0, // tp_bases
0, // tp_mro
0, // tp_cache
0, // tp_subclasses
0, // tp_weaklist
0, // tp_del
0, // tp_version_tag
.tp_name="RangeMedian",
.tp_basicsize=sizeof(RangeMedianObject),
.tp_dealloc=(destructor)RangeMedian_dealloc,
.tp_flags=Py_TPFLAGS_DEFAULT,
.tp_doc = NULL,
.tp_methods=RangeMedian_methods,
.tp_init=(initproc)RangeMedian_init,
.tp_new=RangeMedian_new
Copy link
Contributor

Choose a reason for hiding this comment

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

Over at cython, using this in c++ requires c20, so it errored out on windows with error C7555: use of designated initializers requires at least '/std:c++20'. Does it work here?

Copy link
Member Author

Choose a reason for hiding this comment

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

Designated initializers is a C++20 feature but also C99 feature, so here this should be fine (this is also now the recommended style in the Python documentation). Although in the rewrite it would be much much better to cleanly separate the C++ parts (vector etc) from the Python bindings C.

Copy link
Member Author

Choose a reason for hiding this comment

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

Actually thinking about this a bit more I'm just going to revert the change here, there's a lot of weirdness here including the use of a template in a .cpp :'D

};


Expand Down
1 change: 1 addition & 0 deletions changelog.d/1403.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Update deprecation for latest conda versions
1 change: 1 addition & 0 deletions changelog.d/1404.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix runs for profiles commit results
1 change: 1 addition & 0 deletions changelog.d/1420.feat.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ASV supports using JSONC as a configuration file
1 change: 1 addition & 0 deletions changelog.d/1421.misc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
``asv`` defaults to ``--force-reinstall`` now to facilitate ``compare`` and ``continuous`` for manually versioned projects
1 change: 1 addition & 0 deletions changelog.d/1431.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Internal pip parser now works for git URLs with branches and tags
11 changes: 11 additions & 0 deletions docs/source/dev.rst
Original file line number Diff line number Diff line change
Expand Up @@ -314,3 +314,14 @@ Step detection
--------------

.. automodule:: asv.step_detect


Release management
------------------

- Tag a release (this increments the version number)
- Update the ``CHANGES.rst`` via ``pipx run towncrier build --version $NEW_VERSION --date "$(date -u +%Y-%m-%d)"``
- For the final ``REL`` commit, use ``[wheel build]`` to generate wheels, and use ``git push --atomic``
* Then add the wheels to the release on Github
- Once manually verified, upload to PyPI with ``twine``
- Update the ``conda-forge`` `feedstock <https://github.com/conda-forge/asv-feedstock/>`_
Loading