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

API Rate Limit Decorator

ratelimit APIs are a very common way to interact with web services. As the need to consume data grows, so does the number of API calls necessary to re

Tomas Basham 575 Jan 05, 2023
PyHook is an offensive API hooking tool written in python designed to catch various credentials within the API call.

PyHook is the python implementation of my SharpHook project, It uses various API hooks in order to give us the desired credentials. PyHook Uses

Ilan Kalendarov 158 Dec 22, 2022
A script copies movie and TV files to your GD drive, or create Hard Link in a seperate dir, in Emby-happy struct.

torcp A script copies movie and TV files to your GD drive, or create Hard Link in a seperate dir, in Emby-happy struct. Usage: python3 torcp.py -h Exa

ccf2012 105 Dec 22, 2022
A Python package implementing various colour checker detection algorithms and related utilities.

A Python package implementing various colour checker detection algorithms and related utilities.

colour-science 147 Dec 29, 2022
Set of scripts for some automation during Magic Lantern development

~kitor Magic Lantern scripts A few automation scripts I wrote to automate some things in my ML development efforts. Used only on Debian running over W

Kajetan Krykwiński 1 Jan 03, 2022
A Tool that provides automatic kerning for ligature based OpenType fonts in Microsoft Volt

Kerning A Tool that provides automatic kerning for ligature based OpenType fonts in Microsoft Volt There are three stages of the algorithm. The first

Sayed Zeeshan Asghar 6 Aug 01, 2022
Python based tool to extract forensic info from EventTranscript.db (Windows Diagnostic Data)

EventTranscriptParser EventTranscriptParser is python based tool to extract forensically useful details from EventTranscript.db (Windows Diagnostic Da

P. Abhiram Kumar 24 Nov 18, 2022
.bvh to .mcfunction file converter.

bvh-to-mcf .bvh file to .mcfunction converter

Hanmin Kim 28 Nov 21, 2022
A small python tool to get relevant values from SRI invoices

SriInvoiceProcessing A small python tool to get relevant values from SRI invoices Some useful info to run the tool Login into your SRI account and ret

Wladymir Brborich 2 Jan 07, 2022
Pyfunctools is a module that provides functions, methods and classes that help in the creation of projects in python

Pyfunctools Pyfunctools is a module that provides functions, methods and classes that help in the creation of projects in python, bringing functional

Natanael dos Santos Feitosa 5 Dec 22, 2022
Aggregating gridded data (xarray) to polygons

A package to aggregate gridded data in xarray to polygons in geopandas using area-weighting from the relative area overlaps between pixels and polygons.

Kevin Schwarzwald 42 Nov 09, 2022
convert a dict-list object from / to a typed object(class instance with type annotation)

objtyping 带类型定义的对象转换器 由来 Python不是强类型语言,开发人员没有给数据定义类型的习惯。这样虽然灵活,但处理复杂业务逻辑的时候却不够方便——缺乏类型检查可能导致很难发现错误,在IDE里编码时也没

Song Hui 15 Dec 22, 2022
Data Utilities e.g. for importing files to onetask

Use this repository to easily convert your source files (csv, txt, excel, json, html) into record-oriented JSON files that can be uploaded into onetask.

onetask.ai 1 Jul 18, 2022
Skywater 130nm Klayout Device Generators PDK

Skywaters 130nm Technology for KLayout Device Generators Mabrains is excited to share with you our Device Generator Library for Skywater 130nm PDK. It

Mabrains 18 Dec 14, 2022
Program to extract signatures from documents.

Extracting Signatures from Bank Checks Introduction Ahmed et al. [1] suggest a connected components-based method for segmenting signatures in document

Muhammad Saif Ullah Khan 9 Jan 26, 2022
A simulator for xkcd 2529's weirdly concrete problem

What is this? This is a quick hack implementation of a simulator for xkcd 2529's weirdly concrete problem. This is barely tested and I suck at computa

Reuben Steenekamp 6 Oct 27, 2021
This two python programs can convert km to miles and miles to km

km-to-miles These two little python programs can convert kilometers to miles and miles to kilometers Needed Python3 or a online python compiler with t

Chandula Janith 3 Jan 30, 2022
A simple tool to extract python code from a Jupyter notebook, and then run pylint on it for static analysis.

Jupyter Pylinter A simple tool to extract python code from a Jupyter notebook, and then run pylint on it for static analysis. If you find this tool us

Edmund Goodman 10 Oct 13, 2022
Handy Tool to check the availability of onion site and to extract the title of submitted onion links.

This tool helps is to quickly investigate a huge set of onion sites based by checking its availability which helps to filter out the inactive sites and collect the site title that might helps us to c

Balaji 13 Nov 25, 2022
Retrying is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just about anything.

Retrying Retrying is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just

Ray Holder 1.9k Dec 29, 2022