Skip to main content

A simple pyproject.toml initiator

Project description

tomifier

pyproject.toml is a modern way to create a Pathon package. tomifier is CLI to initialize a simple Python pyproject.toml file and starting code. The starting code is itself a CLI that can launch a FastAPI application.

References:

Installation

pip install tomifier

Usage

Initialize on current Folder:

  • tomifier init

Initialize on target folder:

  • tomifier init -o target_folder/

Initialize with a project name and a target folder:

  • tomifier init --name myproject1 --output target_folder/

Scaffolded files

The CLI will scaffold the following files and folder structure at the current folder or at the given target folder:

.
├── .gitignore
├── LICENSE
├── MANIFEST.in
├── README.md
├── build.sh
├── mypackage1
│   ├── __init__.py
│   ├── cmd
│   │   ├── __init__.py
│   │   ├── root.py
│   │   └── static
│   │       └── index.html
│   └── version.py
├── pyproject.toml
├── requirements.txt
└── setup.py

Sample run

This is what a sample tomifier run looks like:

tomifier init -n my-project1 -o project1
tomifier CLI
Description [My package]: Description for the project1.
Author [Name]: 
Author email [name@email.com]: 
Homepage [https://github/usernane/repo]: 
Comma separated packages (space=None) [click, fastapi, unvicorn[standard]]: 
Creating package myproject1 in folder myproj1 with author Name and email name@email.com
Creating folder myproj1
New project iniatialized at: project1
cd project
To build the project type: sh.build

Note: if you intend to deploy the package to pypi.org, make sure that the name is available. Even if it is available, the name could be too close to another name preventing posting. If you end up having to choose a different name, you will need to rename the package directory and the package name references in the README.md,pyproject.toml and MANIFIST.in files

Sample generated pyproject.toml file

[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[project]
name = "my-project1"
authors = [
  { name="Name", email="name@email.com" },
]
description = "Description for myproject1"
readme = "README.md"
license = { file="LICENSE" }
requires-python = ">=3.10, <3.12"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

dependencies = [
  "click",
  "fastapi",
  "uvicorn[standard]"
]

dynamic = ["version"]

[tool.setuptools]
include-package-data = true

[tool.setuptools.dynamic]
version = {attr = "myproject1.version.VERSION"}
readme = {file = ["README.md"]}

[tool.setuptools.packages.find]
include = ["myproject1*"]
exclude = ["*.tests*"]
namespaces = false

[tool.setuptools.package-data]
"myproject1" = ["*.*"]

[project.urls]
"Homepage" = "https://github/usernane/repo"

[project.scripts]
myproject1 = "myproject1.cmd.root:main"

Note: the pyproject.toml contents of this file can be and most likely will need to be modified further to meet your needs.

Building the project

build.sh is a useful bash script included as part of the scaffolded code to build and deploy the package locally in editable mode.

To run it from a bash terminal type:

sh build.sh

The bash script includes the following commands:

rm -rf dist
pip uninstall <package_name> -y
python -m build
pip install -e .
<package_name> ui

Pushing the file to pypi.org

After building the package, to push the build to pypi.org using twine. Type:

# Verfify that the package name does not exist
# Install twine
pip install twine
# Make sure to get and install pypi.org token
# Publish the package
twine upload dis/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tomifier-0.0.4.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

tomifier-0.0.4-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file tomifier-0.0.4.tar.gz.

File metadata

  • Download URL: tomifier-0.0.4.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for tomifier-0.0.4.tar.gz
Algorithm Hash digest
SHA256 f2f8546c909abdc1b204e9d0d821855be7f4e511e6888acbe8845b0ef77a5c04
MD5 216e498868da14a79ede74583f272125
BLAKE2b-256 fe0a49e2fa518d600a9e0fe3e16c93ef0052af34ca98aaa8d4742933bf4c1c6c

See more details on using hashes here.

File details

Details for the file tomifier-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: tomifier-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for tomifier-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8598331b03964af61db4d6faee597bdb285db1845a2b7196b77c58db21c6867e
MD5 00b6ce24c91aead36e8854c33d3edaab
BLAKE2b-256 333b4c48c236da56494b5fcd15b940f4d4149edb28965c3351392678fb68440c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page