1
1
.. _developers-utils :
2
2
3
- ========================
4
- Utilities for Developers
5
- ========================
3
+ ===================
4
+ Developer guideline
5
+ ===================
6
+
7
+ Developer utilities
8
+ -------------------
6
9
7
10
Imbalanced-learn contains a number of utilities to help with development. These are
8
11
located in :mod: `imblearn.utils `, and include tools in a number of categories.
@@ -17,7 +20,7 @@ All the following functions and classes are in the module :mod:`imblearn.utils`.
17
20
18
21
19
22
Validation Tools
20
- ================
23
+ ~~~~~~~~~~~~~~~~
21
24
22
25
.. currentmodule :: imblearn.utils
23
26
@@ -33,7 +36,7 @@ should be used when applicable.
33
36
34
37
35
38
Deprecation
36
- ===========
39
+ ~~~~~~~~~~~
37
40
38
41
.. currentmodule :: imblearn.utils.deprecation
39
42
@@ -103,7 +106,7 @@ provides :func:`deprecate_parameter`: which is used to deprecate a sampler's
103
106
parameter (attribute) by another one.
104
107
105
108
Testing utilities
106
- =================
109
+ ~~~~~~~~~~~~~~~~~
107
110
Currently, imbalanced-learn provide a warning management utility. This feature
108
111
is going to be merge in pytest and will be removed when the pytest release will
109
112
have it.
@@ -144,3 +147,65 @@ that the exception matches a text or regex::
144
147
Traceback (most recent call last):
145
148
...
146
149
AssertionError: 'must be \d+$' pattern not found in ['this is not here']
150
+
151
+ Making a release
152
+ ----------------
153
+ This section document the different steps that are necessary to make a new
154
+ imbalanced-learn release.
155
+
156
+ Major release
157
+ ~~~~~~~~~~~~~
158
+
159
+ * Update the release note `whats_new/v0.<version number>.rst ` by giving a date
160
+ and removing the status "Under development" from the title.
161
+ * Run `bumpversion release `. It will remove the `dev0 ` tag.
162
+ * Commit the change `git commit -am "bumpversion 0.<version number>.0" `
163
+ (e.g., `git commit -am "bumpversion 0.5.0" `).
164
+ * Create a branch for this version
165
+ (e.g., `git checkout -b 0.<version number>.X `).
166
+ * Push the new branch into the upstream remote imbalanced-learn repository.
167
+ * Change the `symlink ` in the
168
+ `imbalanced-learn website repository <https://github.com/imbalanced-learn/imbalanced-learn.github.io >`_
169
+ such that stable points to the latest release version,
170
+ i.e, `0.<version number> `. To do this, clone the repository,
171
+ `run unlink stable `, followed by `ln -s 0.<version number> stable `. To check
172
+ that this was performed correctly, ensure that stable has the new version
173
+ number using `ls -l `.
174
+ * Return to your imbalanced-learn repository, in the branch
175
+ `0.<version number>.X `.
176
+ * Create the source distribution and wheel: `python setup.py sdist ` and
177
+ `python setup.py bdist_wheel `.
178
+ * Upload these file to PyPI using `twine upload dist/* `
179
+ * Switch to the `master ` branch and run `bumpversion minor `, commit and push on
180
+ upstream. We are officially at `0.<version number + 1>.0.dev0 `.
181
+ * Create a GitHub release by clicking on "Draft a new release" here.
182
+ "Tag version" should be the latest version number (e.g., `0.<version>.0 `),
183
+ "Target" should be the branch for that the release
184
+ (e.g., `0.<version number>.X `) and "Release title" should be
185
+ "Version <version number>". Add the notes from the release notes there.
186
+ * Add a new `v0.<version number + 1>.rst ` file in `doc/whats_new/ ` and
187
+ `.. include:: ` this new file in `doc/whats_new.rst `. Mark the version as the
188
+ version under development.
189
+ * Finally, go to the `conda-forge feedstock <https://github.com/conda-forge/imbalanced-learn-feedstock >`_
190
+ and a new PR will be created when the feedstock will synchronizing with the
191
+ PyPI repository. Merge this PR such that we have the binary for `conda `
192
+ available.
193
+
194
+ Bug fix release
195
+ ~~~~~~~~~~~~~~~
196
+
197
+ * Find the commit(s) hash of the bug fix commit you wish to back port using
198
+ `git log `.
199
+ * Checkout the branch for the lastest release, e.g.,
200
+ `git checkout 0.<version number>.X `.
201
+ * Append the bug fix commit(s) to the branch using `git cherry-pick <hash> `.
202
+ Alternatively, you can use interactive rebasing from the `master ` branch.
203
+ * Bump the version number with bumpversion patch. This will bump the patch
204
+ version, for example from `0.X.0 ` to `0.X.* dev0 `.
205
+ * Mark the current version as a release version (as opposed to `dev ` version)
206
+ with `bumpversion release --allow-dirty `. It will bump the version, for
207
+ example from `0.X.* dev0 ` to `0.X.1 `.
208
+ * Commit the changes with `git commit -am 'bumpversion <new version>' `.
209
+ * Push the changes to the release branch in upstream, e.g.
210
+ `git push <upstream remote> <release branch> `.
211
+ * Use the same process as in a major release to upload on PyPI and conda-forge.
0 commit comments