From 102f08cd2807e0e664064f118a66b0c974c43c0e Mon Sep 17 00:00:00 2001 From: jvoisin Date: Wed, 3 Sep 2025 16:18:52 +0200 Subject: Switch the project from 0xacab to github While the folks running 0xacab are much more lovely than the github ones, this project has outgrown the former: - Github offers beefy continuous integration, make it easier to run the testsuite on every python version, instead of using a weird docker-based contraption. Moreover, I'd rather burn some Microsoft money than 0xacab one. - Opening an account on 0xacab is non-trivial (by design), making it tedious for people to report issues and contribute to mat2. - Gitlab is becoming unbearably slow and convoluted, even compared to Github's awful Copilot/AI push. It's a sad state of affairs, but it's a pragmatic decision. People who don't have a Github account can still report issues and send patches by sending me an email. --- .github/workflows/builds.yaml | 45 +++++++++++++++++ .gitlab-ci.yml | 109 ------------------------------------------ .pylintrc | 18 ------- CONTRIBUTING.md | 16 +++---- README.md | 2 +- doc/comparison_to_others.md | 8 ++-- doc/mat2.1 | 2 +- pyproject.toml | 6 +-- setup.py | 4 +- 9 files changed, 64 insertions(+), 146 deletions(-) create mode 100644 .github/workflows/builds.yaml delete mode 100644 .gitlab-ci.yml delete mode 100644 .pylintrc diff --git a/.github/workflows/builds.yaml b/.github/workflows/builds.yaml new file mode 100644 index 0000000..f6a62d0 --- /dev/null +++ b/.github/workflows/builds.yaml @@ -0,0 +1,45 @@ +name: CI for Python versions +on: + pull_request: + push: + schedule: + - cron: '0 16 * * 5' + +jobs: + linting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-python@v5 + - run: pip install ruff + - run: | + ruff check . + build: + needs: linting + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14.0-rc.2"] + steps: + - uses: actions/checkout@v5 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + sudo apt-get install --no-install-recommends --no-install-suggests --yes \ + ffmpeg \ + gir1.2-gdkpixbuf-2.0 \ + gir1.2-poppler-0.18 \ + gir1.2-rsvg-2.0 \ + libimage-exiftool-perl \ + python3-gi-cairo \ + libcairo2-dev \ + libgirepository-2.0-dev \ + libgirepository1.0-dev \ + gobject-introspection \ + python3-mutagen + pip install . + - name: Build and run the testsuite + run: python3 -m unittest discover -v diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index c3b78a0..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,109 +0,0 @@ -variables: - CONTAINER_REGISTRY: $CI_REGISTRY/georg/mat2-ci-images - GIT_DEPTH: "5" - GIT_STRATEGY: clone - -stages: - - linting - - test - -.prepare_env: &prepare_env - before_script: # This is needed to not run the testsuite as root - - useradd --home-dir ${CI_PROJECT_DIR} mat2 - - chown -R mat2 . - -linting:ruff: - image: $CONTAINER_REGISTRY:linting - stage: linting - script: - - apt update - - apt install -qqy --no-install-recommends python3-venv - - python3 -m venv venv - - source venv/bin/activate - - pip3 install ruff - - ruff check . - -tests:archlinux: - image: $CONTAINER_REGISTRY:archlinux - stage: test - script: - - python3 -m unittest discover -v - -tests:debian: - image: $CONTAINER_REGISTRY:debian - stage: test - <<: *prepare_env - script: - - apt-get -qqy purge bubblewrap - - su - mat2 -c "python3-coverage run --branch -m unittest discover -s tests/" - - su - mat2 -c "python3-coverage report --fail-under=95 -m --include 'libmat2/*'" - -tests:debian_with_bubblewrap: - image: $CONTAINER_REGISTRY:debian - stage: test - allow_failure: true - <<: *prepare_env - script: - - apt-get -qqy install bubblewrap - - python3 -m unittest discover -v - -tests:fedora: - image: $CONTAINER_REGISTRY:fedora - stage: test - script: - - python3 -m unittest discover -v - -tests:gentoo: - image: $CONTAINER_REGISTRY:gentoo - stage: test - <<: *prepare_env - script: - - su - mat2 -c "python3 -m unittest discover -v" - -tests:python3.7: - image: $CONTAINER_REGISTRY:python3.7 - stage: test - script: - - python3 -m unittest discover -v - -tests:python3.8: - image: $CONTAINER_REGISTRY:python3.8 - stage: test - script: - - python3 -m unittest discover -v - -tests:python3.9: - image: $CONTAINER_REGISTRY:python3.9 - stage: test - script: - - python3 -m unittest discover -v - -tests:python3.10: - image: $CONTAINER_REGISTRY:python3.10 - stage: test - script: - - python3 -m unittest discover -v - -tests:python3.11: - image: $CONTAINER_REGISTRY:python3.11 - stage: test - script: - - python3 -m unittest discover -v - -tests:python3.12: - image: $CONTAINER_REGISTRY:python3.12 - stage: test - script: - - python3 -m unittest discover -v - -tests:python3.13: - image: $CONTAINER_REGISTRY:python3.13 - stage: test - script: - - python3 -m unittest discover -v - -tests:python3.14: - image: $CONTAINER_REGISTRY:python3.14 - stage: test - script: - - python3 -m unittest discover -v diff --git a/.pylintrc b/.pylintrc deleted file mode 100644 index 41b3795..0000000 --- a/.pylintrc +++ /dev/null @@ -1,18 +0,0 @@ -[FORMAT] -good-names=e,f,i,x,s -max-locals=20 - -[MESSAGES CONTROL] -disable= - fixme, - invalid-name, - duplicate-code, - missing-docstring, - protected-access, - abstract-method, - wrong-import-position, - catching-non-exception, - cell-var-from-loop, - locally-disabled, - raise-missing-from, - invalid-sequence-index, # pylint doesn't like things like `Tuple[int, bytes]` in type annotation diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 69146e7..1e663a7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,9 @@ # Contributing to mat2 -The main repository for mat2 is on [0xacab]( https://0xacab.org/jvoisin/mat2 ), +The main repository for mat2 is on [github]( https://github.com/jvoisin/mat2 ), but you can send patches to jvoisin by [email](https://dustri.org/) if you prefer. -Do feel free to pick up [an issue]( https://0xacab.org/jvoisin/mat2/issues ) +Do feel free to pick up [an issue]( https://github.com/jvoisin/mat2/issues ) and to send a pull-request. Before sending the pull-request, please do check that everything is fine by @@ -27,11 +27,11 @@ Since mat2 is written in Python3, please conform as much as possible to the # Doing a release -1. Update the [changelog](https://0xacab.org/jvoisin/mat2/blob/master/CHANGELOG.md) -2. Update the version in the [mat2](https://0xacab.org/jvoisin/mat2/blob/master/mat2) file -3. Update the version in the [setup.py](https://0xacab.org/jvoisin/mat2/blob/master/setup.py) file -4. Update the version in the [pyproject.toml](https://0xacab.org/jvoisin/mat2/blob/master/yproject.toml) file -5. Update the version and date in the [man page](https://0xacab.org/jvoisin/mat2/blob/master/doc/mat2.1) +1. Update the [changelog](https://github.com/jvoisin/mat2/blob/master/CHANGELOG.md) +2. Update the version in the [mat2](https://github.com/jvoisin/mat2/blob/master/mat2) file +3. Update the version in the [setup.py](https://github.com/jvoisin/mat2/blob/master/setup.py) file +4. Update the version in the [pyproject.toml](https://github.com/jvoisin/mat2/blob/master/yproject.toml) file +5. Update the version and date in the [man page](https://github.com/jvoisin/mat2/blob/master/doc/mat2.1) 6. Commit the modified files 7. Create a tag with `git tag -s $VERSION` 8. Push the commit with `git push origin master` @@ -39,7 +39,7 @@ Since mat2 is written in Python3, please conform as much as possible to the 10. Download the gitlab archive of the release 11. Diff it against the local copy 12. If there is no difference, sign the archive with `gpg --armor --detach-sign mat2-$VERSION.tar.xz` -13. Upload the signature on Gitlab's [tag page](https://0xacab.org/jvoisin/mat2/tags) and add the changelog there +13. Upload the signature on Gitlab's [tag page](https://github.com/jvoisin/mat2/tags) and add the changelog there 14. Announce the release on the [mailing list](https://mailman.boum.org/listinfo/mat-dev) 15. Sign'n'upload the new version on pypi with `python3 setup.py sdist bdist_wheel` then `twine upload -s dist/*` 16. Do the secret release dance diff --git a/README.md b/README.md index bf4c4ac..45a24f1 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ of the guarantee that mat2 won't modify the data of their files, there is the # Contact -If possible, use the [issues system](https://0xacab.org/jvoisin/mat2/issues) +If possible, use the [issues system](https://github.com/jvoisin/mat2/issues) or the [mailing list](https://www.autistici.org/mailman/listinfo/mat-dev) Should a more private contact be needed (eg. for reporting security issues), you can email Julien (jvoisin) Voisin at `julien.voisin+mat2@dustri.org`, diff --git a/doc/comparison_to_others.md b/doc/comparison_to_others.md index 8939009..02648bd 100644 --- a/doc/comparison_to_others.md +++ b/doc/comparison_to_others.md @@ -19,14 +19,14 @@ details. # jpegoptim, optipng, … While designed to reduce as much as possible the size of pictures, -those software can be used to remove metadata. They usually have very good +those software can be used to remove metadata. They usually have excellent support for a single picture format, and can be used in place of mat2 for them. # PDF Redact Tools [PDF Redact Tools](https://github.com/firstlookmedia/pdf-redact-tools) is -a software developed by the people from [First Look +software developed by the people from [First Look Media](https://firstlook.media/), the entity behind, amongst other things, [The Intercept](https://theintercept.com/). @@ -34,13 +34,13 @@ The tool uses roughly the same approach than mat2 to deal with PDF, which is unfortunately the only fileformat that it does support. It's interesting to note that it has counter-measures against [yellow dots](https://en.wikipedia.org/wiki/Machine_Identification_Code), -a capacity that mat2 [doesn't possess yet](https://0xacab.org/jvoisin/mat2/issues/43). +a capacity that mat2 doesn't have. # Exiv2 [Exiv2](https://www.exiv2.org/) was considered for mat2, -but it currently [misses a lot of metadata](https://0xacab.org/jvoisin/mat2/issues/85) +but it currently misses a lot of metadata. # Others non open source software/online service diff --git a/doc/mat2.1 b/doc/mat2.1 index 1e70262..951d45c 100644 --- a/doc/mat2.1 +++ b/doc/mat2.1 @@ -84,7 +84,7 @@ but keep in mind by doing so, some metadata \fBwon't be cleaned\fR. While mat2 does its very best to remove every single metadata, it's still in beta, and \fBsome\fR might remain. Should you encounter -some issues, check the bugtracker: https://0xacab.org/jvoisin/mat2/issues +some issues, check the bugtracker: https://github.com/jvoisin/mat2/issues .PP Please use accordingly and be careful. diff --git a/pyproject.toml b/pyproject.toml index 62912b1..b5f9c0d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,9 +11,9 @@ dependencies = [ 'pycairo', ] [project.urls] -Repository = "https://0xacab.org/jvoisin/mat2" -Issues = "https://0xacab.org/jvoisin/mat2/-/issues" -Changelog = "https://0xacab.org/jvoisin/mat2/-/blob/master/CHANGELOG.md" +Repository = "https://github.com/jvoisin/mat2" +Issues = "https://github.com/jvoisin/mat2/issues" +Changelog = "https://github.com/jvoisin/mat2/blob/master/CHANGELOG.md" [tool.ruff] target-version = "py39" diff --git a/setup.py b/setup.py index d8972fd..7f96ab6 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ setuptools.setup( description="A handy tool to trash your metadata", long_description=long_description, long_description_content_type="text/markdown", - url="https://0xacab.org/jvoisin/mat2", + url="https://github.com/jvoisin/mat2", python_requires = '>=3.5.0', scripts=['mat2'], install_requires=[ @@ -31,6 +31,6 @@ setuptools.setup( "Intended Audience :: End Users/Desktop", ], project_urls={ - 'bugtacker': 'https://0xacab.org/jvoisin/mat2/issues', + 'bugtacker': 'https://github.com/jvoisin/mat2/issues', }, ) -- cgit v1.3