silkaj issueshttps://git.duniter.org/clients/python/silkaj/-/issues2023-11-22T21:42:34+01:00https://git.duniter.org/clients/python/silkaj/-/issues/484Support Python v3.12 on v0.11 release2023-11-22T21:42:34+01:00MoulSupport Python v3.12 on v0.11 releaseUntil Silkaj v0.12 release gets released, Silkaj v0.11 has to support Py v3.12 which is already out with Fedora 39.
`pendulum` v2.1.2 doesn’t support Py3.12. `pendulum` v3.0.0b1 supports it but drops support for Py3.7.
We would have to...Until Silkaj v0.12 release gets released, Silkaj v0.11 has to support Py v3.12 which is already out with Fedora 39.
`pendulum` v2.1.2 doesn’t support Py3.12. `pendulum` v3.0.0b1 supports it but drops support for Py3.7.
We would have to drop Py3.7 support from Silkaj v0.11. Installing Silkaj v0.11.1 is still possible for system with Py3.7, even thought its support was dropped mid-2023.
### Pre-requisites
- [x] pylint v3.0 supports Py3.12, disable hook since there is a lot of new reports to fix
- [x] disable `pyupgrade` broken fix
- [x] switch jobs to `3.12` image containing `pre-commit`
- [x] duniterpy#205+
### Silkaj v0.11.2 release
- [x] #457+
- [x] Bump `pendulum` to v3.0.0b1
- [x] #448+
- [x] Write changelog, and cherry-pick it to `main` branch (v0.12)0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/482Add support for Python v3.132023-11-20T14:27:16+01:00MoulAdd support for Python v3.13### Python pre-releases
- [ ] Set up v3.13 test job
- [ ] With `allow_failure: true`, to allow tests to fail
### Python stable release
- [ ] Remove `allow_failure: true`, now on the tests should pass
- [ ] Move coverage to v3.13 job
-...### Python pre-releases
- [ ] Set up v3.13 test job
- [ ] With `allow_failure: true`, to allow tests to fail
### Python stable release
- [ ] Remove `allow_failure: true`, now on the tests should pass
- [ ] Move coverage to v3.13 job
- [ ] Set default container used by jobs to v3.13
- [ ] Handle deprecation warning and breaking features
- [ ] Switch Silkaj image build to v3.13
### Post
- [ ] Open follow-up v3.14 tickets
### References
- Expected to be release the [October 1st 2024](https://peps.python.org/pep-0719/).
- docker/python3/poetry#10+
- clients/python/duniterpy#208+0.20.02024-10-01https://git.duniter.org/clients/python/silkaj/-/issues/474Initial Python v3.12 support2023-07-08T12:17:35+02:00MoulInitial Python v3.12 supportOnce [first beta is released](https://peps.python.org/pep-0693/) (22nd May 2023), we can introduce Python v3.12 support, to see how it goes:
- [x] docker/python3/poetry#8+
- [x] With `gcc` and `libffi-dev`
- [x] Set up v3.12 test job
...Once [first beta is released](https://peps.python.org/pep-0693/) (22nd May 2023), we can introduce Python v3.12 support, to see how it goes:
- [x] docker/python3/poetry#8+
- [x] With `gcc` and `libffi-dev`
- [x] Set up v3.12 test job
- [x] Allow the job to fail with `allow_failure: true`. It shouldn’t block the pipeline
- [x] [We currently have an issue](https://github.com/crate-py/rpds/issues/13) with [`rpds-py`](https://pypi.org/project/rpds-py/) which does not provide Py3.12 wheel. Package introduced with [`jsonschema` v4.18.0](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst#v4180)
```
├── jsonschema ^4.17.3
│ ├── attrs >=22.2.0
│ ├── importlib-resources >=1.4.0
│ │ └── zipp >=3.1.0
│ ├── jsonschema-specifications >=2023.03.6
│ │ ├── importlib-resources >=1.4.0 (circular dependency aborted here)
│ │ └── referencing >=0.28.0
│ │ ├── attrs >=22.2.0 (circular dependency aborted here)
│ │ └── rpds-py >=0.7.0
│ ├── pkgutil-resolve-name >=1.3.10
│ ├── referencing >=0.28.4 (circular dependency aborted here)
│ └── rpds-py >=0.7.1 (circular dependency aborted here)
```0.12.0MoulMoul2023-05-22https://git.duniter.org/clients/python/silkaj/-/issues/465Rename tests jobs to unit_tests2023-06-30T17:38:50+02:00MoulRename tests jobs to unit_testsexcept for the one running the coverage which also runs the integration tests.
- [x] Rename `format` job to `black`.except for the one running the coverage which also runs the integration tests.
- [x] Rename `format` job to `black`.0.12.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/461Publish Silkaj container to DockerHub2023-03-10T13:48:58+01:00MoulPublish Silkaj container to DockerHubPublish additionally Silkaj container to DockerHub for more visibility.
- [ ] Publish `pip` image
- [ ] Publish readme as Duniter-v2s is doingPublish additionally Silkaj container to DockerHub for more visibility.
- [ ] Publish `pip` image
- [ ] Publish readme as Duniter-v2s is doingBackloghttps://git.duniter.org/clients/python/silkaj/-/issues/458Introduce Ruff pre-commit hook to replace autoflake, pylint, isort and pyupgrade2023-07-04T20:44:08+02:00MoulIntroduce Ruff pre-commit hook to replace autoflake, pylint, isort and pyupgrade- https://github.com/astral-sh/ruff
- https://beta.ruff.rs/docs/
### Tasks
- [x] replace `autoflake`, `pylint`, `isort`, `pyupgrade` pyproject, pre-commit, gitlab-ci configurations
- [x] Adapt previous configuration/rules to `ruff` once...- https://github.com/astral-sh/ruff
- https://beta.ruff.rs/docs/
### Tasks
- [x] replace `autoflake`, `pylint`, `isort`, `pyupgrade` pyproject, pre-commit, gitlab-ci configurations
- [x] Adapt previous configuration/rules to `ruff` onces
- [x] Adapt CI
### Rules to be introduced later
- #460+0.12.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/457Drop Python v3.7 support2023-11-21T22:24:30+01:00MoulDrop Python v3.7 support### Date when Python project won’t support v3.7
- [Python 3.7 support will be dropped in June 27th of 2023](https://devguide.python.org/versions/) [[1](https://endoflife.date/python)]
- [Platform which still uses Py3.7](https://repology....### Date when Python project won’t support v3.7
- [Python 3.7 support will be dropped in June 27th of 2023](https://devguide.python.org/versions/) [[1](https://endoflife.date/python)]
- [Platform which still uses Py3.7](https://repology.org/badge/vertical-allrepos/python.svg)
## Todos
### DuniterPy
- [x] duniterpy#193+
### Silkaj
- [x] `pyproject.toml`: Bump minimum versions:
- [x] `tools.poetry.dependency.python`
- [x] `tools.ruff.target-version`
- [x] Delete test job for v3.7 from `.gitlab-ci.yml`
### Container
- [x] Remove v3.7 Docker image generation. docker/python3/poetry#9+
---
- [x] Create ticket for dropping Python 3.8 support: #464+0.12.0MoulMoul2023-06-27https://git.duniter.org/clients/python/silkaj/-/issues/454Set up release feature from gitlab-ci2024-01-29T10:41:57+01:00MoulSet up release feature from gitlab-ci- https://docs.gitlab.com/ee/ci/yaml/#release
- https://docs.gitlab.com/ee/user/project/releases/release_cicd_examples.html
```yaml
release_job:
stage: package
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- ...- https://docs.gitlab.com/ee/ci/yaml/#release
- https://docs.gitlab.com/ee/user/project/releases/release_cicd_examples.html
```yaml
release_job:
stage: package
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG
script:
- echo "running release_job"
release:
tag_name: '$CI_COMMIT_TAG'
description: '$CI_COMMIT_TAG'
```
- [x] Fix current releases
- [x] Add missing releases
- https://git.duniter.org/clients/python/silkaj/-/releases0.12.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/451pre-commit:hooks job doesn’t appear2022-11-01T13:03:07+01:00Moulpre-commit:hooks job doesn’t appear- [ ] Fix the appearance of `pre-commit:hooks` job- [ ] Fix the appearance of `pre-commit:hooks` job0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/450Replace flake8 with autoflake2022-10-28T19:44:37+02:00MoulReplace flake8 with autoflake`autoflake` automatically fixes the code while `flake8` just report it.
- [x] Replace `flake8` with `autoflake` pre-commit hook
- [x] CI: run `autoflake` instead of `flake8`.`autoflake` automatically fixes the code while `flake8` just report it.
- [x] Replace `flake8` with `autoflake` pre-commit hook
- [x] CI: run `autoflake` instead of `flake8`.0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/448Add support for Python v3.122024-02-05T15:59:37+01:00MoulAdd support for Python v3.12Expected to be release the [2nd October 2023](https://peps.python.org/pep-0693/).
- [x] docker/python3/poetry#8+
- [x] clients/python/duniterpy#196+
- [x] Set up v3.12 test job
- [x] Remove `allow_failure: true`, now on the tests shou...Expected to be release the [2nd October 2023](https://peps.python.org/pep-0693/).
- [x] docker/python3/poetry#8+
- [x] clients/python/duniterpy#196+
- [x] Set up v3.12 test job
- [x] Remove `allow_failure: true`, now on the tests should pass
- [x] Move coverage to v3.12 job
- [x] Switch Silkaj container to v3.12
- [x] Set default container to v3.12
- [x] Handle deprecation warning and breaking features
- [x] [No wheel provided for `pendulum` v2.1.2 for Py3.12](https://github.com/sdispater/pendulum/issues/696). Setting `3.0.0a1` solves the issue, because there is wheels (built C code) provided till Py3.11 (it’s most likely taking previous Python version, until Python 3.12 is released as stable)
- [x] Switch `pendulum` to a stable version once there is a wheel provided for Py3.12
- [x] Switch image to v3.12
- [x] Open follow-up v3.13 tickets: #482+0.12.0MoulMoul2023-10-02https://git.duniter.org/clients/python/silkaj/-/issues/447Fix coverage integration into GitLab2022-10-11T18:46:25+02:00MoulFix coverage integration into GitLabThe tests coverage integration into GitLab is no longer working since [it support changed from GitLab v15.0](https://docs.gitlab.com/ee/ci/pipelines/settings.html#merge-request-test-coverage-results).
The regex is no longer configured i...The tests coverage integration into GitLab is no longer working since [it support changed from GitLab v15.0](https://docs.gitlab.com/ee/ci/pipelines/settings.html#merge-request-test-coverage-results).
The regex is no longer configured into the project settings but in `.gitlab-ci.yml`
### Acceptance criteria
- [x] Fix coverage percentage integration into GitLab using this [regex](https://forum.gitlab.com/t/python-coverage-always-unknown/47819/3)
- [x] [Integrate coverage report into GitLab](https://docs.gitlab.com/ee/ci/testing/test_coverage_visualization.html#python-example)0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/446Publish on Spanish forum2023-11-13T15:06:54+01:00MoulPublish on Spanish forum- [ ] Setup DeathReaper account on https://foro.moneda-libre.org/
- [ ] Ask to make it administrator
- [ ] Generate token
- [ ] Implement Spanish forum handling in `excluded` command
- [ ] Spanish(/English) translation of the output
- [ ...- [ ] Setup DeathReaper account on https://foro.moneda-libre.org/
- [ ] Ask to make it administrator
- [ ] Generate token
- [ ] Implement Spanish forum handling in `excluded` command
- [ ] Spanish(/English) translation of the output
- [ ] DeathReaper repo: Setup Spanish Forum credentials for DeathReaper in CI/CD variables.
---
Priority to be considered regarding Substrate migration.
With Substrate, a better system could be setup. An web based email registration system, which would be listening to the blockchain/RPC or the Indexer and then send email. This would be a more efficient system, since now new G1 members do not necessarily have forums accounts.Backloghttps://git.duniter.org/clients/python/silkaj/-/issues/442Add support for Python v3.112022-10-27T18:20:09+02:00MoulAdd support for Python v3.11Expected to be release the [24th October 2022](https://peps.python.org/pep-0664/).
- [x] docker/python3/poetry#6+
- [x] clients/python/duniterpy#194+
- [x] Set up v3.11 test job
- [x] Move coverage to v3.11
- [x] Switch Silkaj container...Expected to be release the [24th October 2022](https://peps.python.org/pep-0664/).
- [x] docker/python3/poetry#6+
- [x] clients/python/duniterpy#194+
- [x] Set up v3.11 test job
- [x] Move coverage to v3.11
- [x] Switch Silkaj container to v3.11
- [x] Set default container to v3.11
- [x] Handle deprecation warning and breaking features
- [x] Open follow-up v3.12 ticket: #4480.11.0MoulMoul2022-10-24https://git.duniter.org/clients/python/silkaj/-/issues/441Separate unit and integration tests2022-10-31T18:14:57+01:00MoulSeparate unit and integration tests#### Readings
- [Structuring thousands of automated tests](https://medium.com/trustyou-engineering/structuring-thousands-of-automated-tests-82503e701e54)
---
As a Silkaj developer and packager, I would like to have the tests separated ...#### Readings
- [Structuring thousands of automated tests](https://medium.com/trustyou-engineering/structuring-thousands-of-automated-tests-82503e701e54)
---
As a Silkaj developer and packager, I would like to have the tests separated by their kinds. The tests should use as less possible network access to speed-up the tests with mock usage.
- Unit tests
- Integration tests
- end-to-end tests
---
### Mock as much as possible
Following tests requires network access:
- test_end_to_end
- blockchain/test_verify
- [x] money/test_tx_file
- wot/test_membership
Mock them if possible to be able to move them to the `unit` directory.
Do not bother if the tests are to difficult to mock, since they will get deleted in next milestone.
---
### Potential splits
- `patched/`
- `unit/`
- `integration/`
- `fully patched/`
- `partially_patched/`: Requires network access
- `end_to_end`?
---
- Split tests between those which requires network_access and those who don’t?
- Split tests between unit, integration and end-to-end once? How?
- `unit`, `integration` `end_to_end` directories ?
- `{blockchain,money,wot}/test_{unit,integration,end_to_end}_$cmd_name`?
### Gitlab CI jobs
- Run unit tests on all supported Python versions
- Run integration/end-to-end tests on latest Python version0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/433Set up new website structure with MkDocs2024-03-13T21:17:47+01:00MoulSet up new website structure with MkDocs## MkDocs
- https://www.mkdocs.org/
- https://github.com/mkdocs/mkdocs
- https://github.com/mkdocs/catalog
- https://repology.org/badge/vertical-allrepos/python:mkdocs.svg
- https://repology.org/badge/vertical-allrepos/mkdocs.svg
- Used ...## MkDocs
- https://www.mkdocs.org/
- https://github.com/mkdocs/mkdocs
- https://github.com/mkdocs/catalog
- https://repology.org/badge/vertical-allrepos/python:mkdocs.svg
- https://repology.org/badge/vertical-allrepos/mkdocs.svg
- Used by [substrate-interface](https://polkascan.github.io/py-substrate-interface/), [Textual](https://textual.textualize.io/), [Pipx](https://pypa.github.io/pipx/), and [Ruff](https://docs.astral.sh/ruff/)
- Allows to build markdown docs from the repository
- Very simple static framework website written in Python
## Tasks
### MkDocs initial set-up
- [x] Read the User Guide
- [x] `pyproject.toml`: Introduce `mkdocs` dependencies in `doc` group
- [x] Set-up initial project `mkdocs.yml`
- [x] Move `md` files to default `docs` directory
- [x] Set symlinks for changelog, contributing(, readme)
- [x] Choose theme: [material](https://squidfunk.github.io/mkdocs-material/)
- [x] Set favicon
- [x] Night/day switch
- [x] Set-up navigation with current content
### Deployment
```yaml
poetry install --only docs
poetry run mkdocs build -d public
```
- [x] Support website/documentation per releases and development one with [Mike](https://github.com/jimporter/mike):
- Drop-down support to switch between ie `v0.12` and `main`
- [x] Mike git commits changes to `pages` branch. Add `.gitlab-ci.yml` on this branch to publish the website and its’s multiple versions (no need schedule)
- [x] On `pages` branch: basic `.gitlab-ci.yml` to copy the content into a `public` directory and publish to GitLab Pages via a `pages` job
- [GitLab Pages implementation](https://gitlab.com/groups/gitlab-org/-/epics/10914), will come later in the Community edition
- https://pypi.org/project/lightweight-versioned-gitlab-pages/
- https://stackoverflow.com/questions/55596789/deploying-gitlab-pages-for-different-branches/58915486#58915486
- only on `main` branch and `tag`? Set `RELEASE` variable to `0.12` or to `0.20-dev`.
- how to handle the coverage and website deployments?
- [`mkdocs-coverage`](https://github.com/pawamoy/mkdocs-coverage)
- `website` job [`needs:`](https://docs.gitlab.com/ee/ci/yaml/#needs) `tests:3.12:cov` job artifact
- https://stackoverflow.com/a/64008569
- handle coverage display on `main` branch, don’t display `Coverage` tab when on release branch? Always display.
- [x] Protect `pages` branch
- [ ] Update coverage badge link to website coverage path
- [x] Adapt GitLab Pages deployment: Ansible role, now from Silkaj repository
- Not sure if Ansible configuration would work with three paths `clients/python/silkaj`
### Document contribution
- [x] How to install `mkdocs`, serve the docs, build locally
- Link mkdocs, material, mike, coverage, gitlab … docs
### Set up structure and use existing content
- [x] Fix `mkdocs serve` warnings
- [x] Update links in release notes, contributing(, readme)
- [x] `README.md` `CONTRIBUTING.md`: update links to the URL of this website
- [x] Create index/main page inspired from [Textual one](https://github.com/Textualize/textual/blob/d958f5bf778a3807ba75884fe15134c6dc294460/docs/index.md)
- [x] Clean and proofread current documentation
- move container usage (and poetry installation) to install section? Advanced installation, somehow contributing stuff. Nope?
- [x] enable syntax highlight, fix code block where we don’t want it
- [x] enable code block copy where needed
- [x] Id anchors in changelog
- [x] Move `CHANGELOG.md` to `docs/changelog.md`, with the `{ id=0.11.0 }` it might get ugly looking at it on GitLab. Same for `CONTRIBUTING.md`, Drop them from GitLab "syntax", not sure for the logos
- [x] create `CHANGELOG.md` and `CONTRIBUTING.md` referring to those pages on the website
- [x] structure `docs` folder: `usage`, `contributing`
- [x] Introduce [`mdformat-mkdocs`](https://github.com/KyleKing/mdformat-mkdocs) to format with four spaces bullet points
- [x] Keep `mike` `prefix_path` to `public`, serving to http://localhost:8000/pages (needs doc precision) or select `version.json`, `latest`, and `0.12` items in the artifact
- [x] Integrate generated coverage with [`mkdocs-coverage`](https://github.com/pawamoy/mkdocs-coverage)
- [x] Changelog with [`mkdocs-gitlab-plugin`](https://pypi.org/project/mkdocs-gitlab-plugin/):
- had to find the `gitlab_links` plugins name in `setup.py`, report that it would be great to have it in the readme: contribute
- Would be great to being able to [link other projects such as DuniterPy](https://gitlab.inria.fr/vidjil/mkdocs-gitlab-plugin/-/issues/1)
- [x] Blog tab containing releases notes:
- [x] Move `releases_notes` directory in `docs/blog` directory
- [x] Set up built-in `mkdocs-material` blog (not [`mkdocs-blogging-plugin`](https://github.com/liang2kl/mkdocs-blogging-plugin))
- Yaml frontmatter kept: [`mdformat-frontmatter`](https://github.com/butler54/mdformat-frontmatter)
- [x] Add [excerpts](https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#adding-an-excerpt)
- [x] Add [authors](https://squidfunk.github.io/mkdocs-material/setup/setting-up-a-blog/#adding-authors)
- [x] Local author profile picture not available from archive, category slug, set up url formats
- [x] Set up categories/tags for the releases and RC testing to separated them
- [x] [Add badge](https://squidfunk.github.io/mkdocs-material/blog/2023/11/30/adding-a-badge-to-your-project/) to readme and GitLab repo badges
- [x] [disable fonts coming from Google gstatic](https://github.com/squidfunk/mkdocs-material/issues/739#issuecomment-377978270)
- [x] Retrieve valuable content from current and Vue websites (no real value left: intro text maybe?)
### Archive current websites
- [x] Archive [two other websites repositories](https://git.duniter.org/websites)
- https://git.duniter.org/websites/silkaj_website
- https://git.duniter.org/websites/doc_silkaj
Set them as archives. Visible in [the archived tab](https://git.duniter.org/groups/websites/-/archived). Redirect, saying that the website is now in Silkaj repository
Thank Manutopik for the Vue website solution which wasn’t retained.
I prefer MkDocs: it’s written in Python, it’s simple, (no JS), I have full control over it0.12.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/428Introduce pre-commit-hooks and mdformat hooks2022-04-20T18:53:59+02:00MoulIntroduce pre-commit-hooks and mdformat hooks- [x] [`pre-commit-hooks`](https://github.com/pre-commit/pre-commit-hooks)
- [x] [`mdformat`](https://github.com/executablebooks/mdformat)
- [x] Common job non-important pre-commit hooks- [x] [`pre-commit-hooks`](https://github.com/pre-commit/pre-commit-hooks)
- [x] [`mdformat`](https://github.com/executablebooks/mdformat)
- [x] Common job non-important pre-commit hooks0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/424Introduce flake82022-05-09T09:03:27+02:00MoulIntroduce flake8- [x] pre-commit hook
- [x] CI job
- [x] Configuration:
- [x] [Can the configuration be stored into `pyproject.toml`](https://github.com/PyCQA/flake8/issues/234)? Not yet it seems.
- [x] Open follow-up ticket to handle complexity: #4...- [x] pre-commit hook
- [x] CI job
- [x] Configuration:
- [x] [Can the configuration be stored into `pyproject.toml`](https://github.com/PyCQA/flake8/issues/234)? Not yet it seems.
- [x] Open follow-up ticket to handle complexity: #427
- [x] Apply changes
- [x] line length. Find compromise with `black`’s line length: 100 lines, 80 lines for black0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/418Introduce insert-license pre-commit hook into the CI2022-04-20T18:54:00+02:00MoulIntroduce insert-license pre-commit hook into the CI- [x] Introduce common `pre-commit:hooks` job to gather/group minors hooks
Using one `pre-commit` hooks job, is more convenient when adding new hooks, since one place need to be touched but, for readability, we directly know which hook/...- [x] Introduce common `pre-commit:hooks` job to gather/group minors hooks
Using one `pre-commit` hooks job, is more convenient when adding new hooks, since one place need to be touched but, for readability, we directly know which hook/problem is happening. Most likely the complete job is faster, or not :smile:0.11.0MoulMoulhttps://git.duniter.org/clients/python/silkaj/-/issues/408Change workflow by changing from 'master' and default 'dev' branches to a sin...2022-04-19T22:25:57+02:00MoulChange workflow by changing from 'master' and default 'dev' branches to a single 'main' branch- [x] In `.gitlab-ci.yml` switch from `master` and `dev` branches to `$CI_DEFAULT_BRANCH` branch
- [x] Update documentation about the new workflow
- Switch references to `master` and `dev` branches into URLs to `main`
- [x] releases ...- [x] In `.gitlab-ci.yml` switch from `master` and `dev` branches to `$CI_DEFAULT_BRANCH` branch
- [x] Update documentation about the new workflow
- Switch references to `master` and `dev` branches into URLs to `main`
- [x] releases notes on the forum
- [x] Push `main` branch forked from `dev` branch
- [x] protect it
- [x] set it as default
- [x] Switch badges to `main`
- [x] Switch target branch of open MRs to `main` branch
- [x] Switch pipeline schedule
- [ ] Unprotect and delete `dev` and `master` branches to avoid any confusion. (done for `master`).
- Unfortunately, we need to keep `dev` branch, since there is links to it from PyPI v0.10.0 release0.11.0MoulMoul