1
0
mirror of https://github.com/arsenetar/send2trash.git synced 2026-01-25 16:11:39 +00:00

7 Commits

Author SHA1 Message Date
32d3391b1a ci: Add ability to use trusted-publishing for PyPI
- Add Publish workflow to run on release tags to upload package to PyPI
- Add Build of packages to end of Default CI/CD workflow when on master
  branch.
2026-01-14 07:08:02 +00:00
2109d6e518 doc: Update changelog for 2.1.0 2026-01-14 06:15:16 +00:00
Andrey Efremov
0b6b2fe5b0 Replace elif with else (#104) 2026-01-01 00:55:45 -06:00
9615b7e4f8 build: Move to pyproject.toml over setup.cfg
Convert to the more modern and preferred pyproject.toml configuration
for the project.

- Add the majority of the configuration to pyproject.toml.
- Remove setup.cfg as it is no longer needed.
- Update tox.ini to remove a lingering testenv for Python 2.7 which is
  no longer used.

NOTE: Manifest.in is left as the files it includes are outside of the
package directories.
2026-01-01 02:07:30 +00:00
34c0ddaa88 Merge pull request #106 from mgorny/sdist-conftest
Add `conftest.py` to source distribution
2025-12-31 19:06:04 -06:00
8cc111a446 ci: Update default workflow triggers 2026-01-01 01:01:42 +00:00
Michał Górny
f8a40143f6 Add conftest.py to source distribution
Fixes #105

Signed-off-by: Michał Górny <mgorny@gentoo.org>
2025-12-31 08:22:59 +01:00
8 changed files with 115 additions and 59 deletions

View File

@@ -2,7 +2,11 @@
name: Default CI/CD
on: push
on:
push:
branches: ["**"]
pull_request:
branches: [master]
jobs:
lint:
@@ -70,3 +74,25 @@ jobs:
- name: Run tests
run: |
pytest
build:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Set up Python 3.x
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: 3.x
- name: Install build dependencies
run: |
python -m pip install --upgrade pip setuptools build
- name: Build package
run: |
python -m build
- name: Upload build artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: dist
path: dist/
if-no-files-found: error

32
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: Publish
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
jobs:
pypi-publish:
name: Upload to PyPI
runs-on: ubuntu-latest
environment: pypi
permissions:
# IMPORTANT: this permission is mandatory for Trusted Publishing
id-token: write
steps:
- name: Get artifact run
id: get_artifact_run
run: |
RUN_ID=$(gh run list --workflow "Default CI/CD" --branch master --commit "${{ github.sha }}" --status completed --limit 1 --json databaseId --jq ".[].databaseId")
if [ -z "$RUN_ID" ]; then
echo "No completed workflow run found for commit ${{ github.sha }}"
exit 1
fi
echo "run=$RUN_ID" >> $GITHUB_OUTPUT
- name: Fetch build artifacts
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: dist
run-id: ${{ steps.get_artifact_run.outputs.run }}
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0

View File

@@ -1,5 +1,11 @@
Changes
=======
Version 2.1.0 -- 2026/01/14
---------------------------
* Add `conftest.py` to source distribution by @mgorny in https://github.com/arsenetar/send2trash/pull/106
* Replacing elif, which is always True, with else by @PalmtopTiger in https://github.com/arsenetar/send2trash/pull/104
* Migrate to pyproject.toml from setup.cfg
Version 2.0.0 -- 2025/12/30
---------------------------
* Drop suport for Python 2

View File

@@ -1 +1 @@
include CHANGES.rst LICENSE
include CHANGES.rst LICENSE tests/conftest.py

View File

@@ -2,5 +2,53 @@
requires = ["setuptools >= 75.3.1"]
build-backend = "setuptools.build_meta"
[project]
name = "Send2Trash"
version = "2.1.0"
description = "Send file to trash natively under Mac OS X, Windows and Linux"
readme = "README.rst"
license = "BSD-3-Clause"
license-files = ["LICENSE"]
authors = [
{name = "Andrew Senetar", email = "arsenetar@voltaicideas.net"},
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Desktop Environment :: File Managers"
]
requires-python = ">=3.8"
[project.urls]
Homepage = "https://github.com/arsenetar/send2trash"
Repository = "https://github.com/arsenetar/send2trash.git"
Issues = "https://github.com/arsenetar/send2trash/issues"
[project.scripts]
send2trash = "send2trash.__main__:main"
[project.optional-dependencies]
test = [
"pytest >= 8",
]
nativelib = [
"pywin32 >= 305; sys_platform == 'win32'",
"pyobjc >= 9.0; sys_platform == 'darwin'",
]
[tool.black]
line-length = 120
[tool.isort]
profile = "black"

View File

@@ -12,7 +12,7 @@ import collections.abc
def preprocess_paths(paths):
if isinstance(paths, collections.abc.Iterable) and not isinstance(paths, (str, bytes)):
paths = list(paths)
elif not isinstance(paths, list):
else:
paths = [paths]
# Convert items such as pathlib paths to strings
return [os.fspath(path) for path in paths]

View File

@@ -1,51 +0,0 @@
[metadata]
name = Send2Trash
version = 2.0.0
url = https://github.com/arsenetar/send2trash
project_urls =
Bug Reports = https://github.com/arsenetar/send2trash/issues
author = Andrew Senetar
author_email = arsenetar@voltaicideas.net
license = BSD License
license_files = LICENSE
description = Send file to trash natively under Mac OS X, Windows and Linux
long_description = file:README.rst
long_description_content_type = text/x-rst
classifiers =
Development Status :: 5 - Production/Stable
Intended Audience :: Developers
License :: OSI Approved :: BSD License
Operating System :: MacOS :: MacOS X
Operating System :: Microsoft :: Windows
Operating System :: POSIX
Programming Language :: Python :: 3
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
Programming Language :: Python :: 3.13
Programming Language :: Python :: 3.14
Topic :: Desktop Environment :: File Managers
[options]
packages = find:
tests_require = pytest
python_requires = !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*
[options.packages.find]
include=
send2trash*
[options.extras_require]
win32 =
pywin32; sys_platform == "win32"
objc =
pyobjc-framework-Cocoa; sys_platform == "darwin"
nativeLib =
pywin32; sys_platform == "win32"
pyobjc-framework-Cocoa; sys_platform == "darwin"
[options.entry_points]
console_scripts =
send2trash = send2trash.__main__:main

View File

@@ -13,11 +13,6 @@ commands =
flake8
pytest
[testenv:py27]
deps =
configparser
{[testenv]deps}
[flake8]
exclude = .tox,env,build
max-line-length = 120