Shut is an opinionated tool to simplify publishing pure Python packages.

Overview

Welcome to Shut

Shut is an opinionated tool to simplify publishing pure Python packages.

What can Shut do for you?

  • Generate setup files (setup.py, MANIFEST.in, LICENSE.txt)
  • Sanity check your package configuration
  • Build and publish source/wheel distributions
  • Execute unit tests and static type checks
  • and more

Installation

Shut requires Python 3.7+ and can be installed from PyPI:

$ pip install shut

Quickstart

Initialize a new Python package:

$ shut pkg new --name my.package .
write .gitignore
write README.md
write package.yml
write src/my/package/__init__.py
write src/my/__init__.py

Generate setuptools files:

$ shut pkg update
write setup.py
write MANIFEST.in

Create a changelog entry and commit:

$ shut changelog --add feature --for cli -cm 'Added some useful options.'

Sanity-check the package configuration:

shut pkg checks

  ✔️   classifiers
  ⚠️   license: not specified
  ✔️   namespace files
  ✔️   package-author
  ⚠️   package-url: missing
  ✔️   package-version
  ✔️   readme
  ✔️   up to date

ran 8 checks for package my.package in 0.003s

Commit the current status:

$ git add . && git commit -m 'bootstrapped package'

Release a new version:

$ shut pkg bump --tag --push

figuring bump mode from changelog
  1 feature → minor

bumping 3 version reference(s)
  package.yml: 0.0.0 → 0.1.0
  setup.py: 0.0.0 → 0.1.0
  src/my/package/__init__.py: 0.0.0 → 0.1.0

release staged changelog
  .changelog/_unreleased.yml → .changelog/0.1.0.yml

updating files
  write setup.py
  write MANIFEST.in

tagging 0.1.0
[master ec1e9b3] (my.package) bump version to 0.1.0
 4 files changed, 4 insertions(+), 4 deletions(-)
 rename .changelog/{_unreleased.yml => 0.1.0.yml} (78%)
Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 8 threads
Compressing objects: 100% (17/17), done.
Writing objects: 100% (24/24), 3.87 KiB | 566.00 KiB/s, done.
Total 24 (delta 4), reused 0 (delta 0)
To https://github.com/me/my-package
 * [new branch]      master -> master
 * [new tag]         0.1.0 -> 0.1.0

Publish the release to PyPI:

$ shut pkg publish warehouse:pypi

building setuptools:sdist
  :: build/my.package-0.1.0.tar.gz

building setuptools:wheel
  :: build/my.package-0.1.0-py3-none-any.whl

publishing warehouse:pypi
  :: build/my.package-0.1.0.tar.gz
  :: build/my.package-0.1.0-py3-none-any.whl

Shut also makes it easy to publish from within CI jobs. For more information on this, check out the Publishing Guide.


Copyright © 2021 Niklas Rosenstein

Give you a better view of your Docker registry disk usage.

registry-du Give you a better view of your Docker registry disk usage. This small tool will analysis your Docker registry(vanilla or Harbor both work)

Nova Kwok 16 Jan 07, 2023
Find version automatically based on git tags and commit messages.

GIT-CONVENTIONAL-VERSION Find version automatically based on git tags and commit messages. The tool is very specific in its function, so it is very fl

0 Nov 07, 2021
Application for easy configuration of swap file and swappiness priority in slackware and others linux distributions.

Swap File Program created with the objective of assisting in the configuration of swap file in Distributions such as Slackware. Required packages: pyt

Mauricio Ferrari 3 Aug 06, 2022
Python program for Linux users to change any url to any domain name they want.

URLMask Python program for Linux users to change a URL to ANY domain. A program than can take any url and mask it to any domain name you like. E.g. ne

2 Jun 20, 2022
A string to hashtags module

A string to hashtags module

Fayas Noushad 4 Dec 01, 2021
A python module to update the console without flashing.

A python module to update the console without flashing.

Matthias 112 Dec 19, 2022
A simple package for handling variables in string.

A simple package for handling string variables. Welcome! This is a simple package for handling variables in string, You can add or remove variables wi

1 Dec 31, 2021
✨ Une calculatrice totalement faite en Python par moi, et en français.

Calculatrice ❗ Une calculatrice totalement faite en Python par moi, et en français. 🔮 Voici une calculatrice qui vous permet de faire vos additions,

MrGabin 3 Jun 06, 2021
A Python class for checking the status of an enabled Minecraft server

mcstatus provides an easy way to query Minecraft servers for any information they can expose. It provides three modes of access (query, status and ping), the differences of which are listed below in

Nathan Adams 1.1k Jan 06, 2023
This script allows you to retrieve all functions / variables names of a Python code, and the variables values.

Memory Extractor This script allows you to retrieve all functions / variables names of a Python code, and the variables values. How to use it ? The si

Venax 2 Dec 26, 2021
A toolkit for writing and executing automation scripts for Final Fantasy XIV

XIV Scripter This is a tool for scripting out series of actions in FFXIV. It allows for custom actions to be defined in config.yaml as well as custom

Jacob Beel 1 Dec 09, 2021
Creates a C array from a hex-string or a stream of binary data.

hex2array-c Creates a C array from a hex-string. Usage Usage: python3 hex2array_c.py HEX_STRING [-h|--help] Use '-' to read the hex string from STDIN.

John Doe 3 Nov 24, 2022
Blender 2.93 addon for loading Quake II MD2 files

io_mesh_md2 is a Blender 2.93 addon for importing Quake II MD2 files.

Joshua Skelton 11 Aug 31, 2022
Helpful functions for use alongside the rich Python library.

🔧 Rich Tools A python package with helpful functions for use alongside with the rich python library. 󠀠󠀠 The current features are: Convert a Pandas

Avi Perl 14 Oct 14, 2022
Writing Alfred copy/paste scripts in Python

Writing Alfred copy/paste scripts in Python This repository shows how to create Alfred scripts in Python. It assumes that you using pyenv for Python v

Will Fitzgerald 2 Oct 26, 2021
Color box that provides various colors‘ rgb decimal code.

colorbox Color box that provides various colors‘ rgb decimal code

1 Dec 07, 2021
A simple tool to move and rename Nvidia Share recordings to a more sensible format.

A simple tool to move and rename Nvidia Share recordings to a more sensible format.

Jasper Rebane 8 Dec 23, 2022
Abby's Left Hand Modifiers Dictionary

Abby's Left Hand Modifiers Dictionary Design This dictionary is inspired by and

12 Dec 08, 2022
Dill_tils is a package that has my commonly used functions inside it for ease of use.

DilllonB07 Utilities Dill_tils is a package that has my commonly used functions inside it for ease of use. Installation Anyone can use this package by

Dillon Barnes 2 Dec 05, 2021
BOLT12 Lightning Address Format

BOLT12 Address Support (DRAFT!) Inspired by the awesome lightningaddress.com, except for BOLT12: Supports BOLT12 Allows BOLT12 vendor string authentic

Rusty Russell 28 Sep 14, 2022