diff --git a/.gitea/rename_project.sh b/.gitea/rename_project.sh index b1b11bc..b5ede16 100755 --- a/.gitea/rename_project.sh +++ b/.gitea/rename_project.sh @@ -16,10 +16,10 @@ echo "Description: $description"; echo "Renaming project..." -original_author="Templates" -original_name="python" -original_urlname="Python" -original_description="Awesome python created by Templates" +original_author="author_name" +original_name="project_name" +original_urlname="project_urlname" +original_description="project_description" # for filename in $(find . -name "*.*") for filename in $(git ls-files) do @@ -30,7 +30,7 @@ do echo "Renamed $filename" done -mv python $name +mv project_name $name # This command runs only once on GHA! rm -rf .gitea/template.yml diff --git a/.gitea/template.yml b/.gitea/template.yml new file mode 100644 index 0000000..3386bee --- /dev/null +++ b/.gitea/template.yml @@ -0,0 +1 @@ +author: rochacbruno diff --git a/ABOUT_THIS_TEMPLATE.md b/ABOUT_THIS_TEMPLATE.md index 15ad690..b5db2cc 100644 --- a/ABOUT_THIS_TEMPLATE.md +++ b/ABOUT_THIS_TEMPLATE.md @@ -32,7 +32,7 @@ Lets take a look at the structure of this template: ├── Makefile # A collection of utilities to manage the project ├── MANIFEST.in # A list of files to include in a package ├── mkdocs.yml # Configuration for documentation site -├── python # The main python package for the project +├── project_name # The main python package for the project │   ├── base.py # The base module for the project │   ├── __init__.py # This tells Python that this is a package │   ├── __main__.py # The entry point for the project @@ -109,7 +109,7 @@ I had to do some tricks to read that version variable inside the setuptools I decided to keep the version in a static file because it is easier to read from wherever I want without the need to install the package. -e.g: `cat python/VERSION` will get the project version without harming +e.g: `cat project_name/VERSION` will get the project version without harming with module imports or anything else, it is useful for CI, logs and debugging. ### Why to include `tests`, `history` and `Containerfile` as part of the release? diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f0e9e07..0d0dd72 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # How to develop on this project -python welcomes contributions from the community. +project_name welcomes contributions from the community. **You need PYTHON3!** @@ -8,9 +8,9 @@ This instructions are for linux base systems. (Linux, MacOS, BSD, etc.) ## Setting up your own fork of this repo. - On github interface click on `Fork` button. -- Clone your fork of this repo. `git clone git@github.com:YOUR_GIT_USERNAME/Python.git` -- Enter the directory `cd Python` -- Add upstream repo `git remote add upstream https://github.com/Templates/Python` +- Clone your fork of this repo. `git clone git@github.com:YOUR_GIT_USERNAME/project_urlname.git` +- Enter the directory `cd project_urlname` +- Add upstream repo `git remote add upstream https://github.com/author_name/project_urlname` ## Setting up your own virtual environment diff --git a/Containerfile b/Containerfile index 3f20213..83bb605 100644 --- a/Containerfile +++ b/Containerfile @@ -2,4 +2,4 @@ FROM python:3.7-slim COPY . /app WORKDIR /app RUN pip install . -CMD ["python"] +CMD ["project_name"] diff --git a/MANIFEST.in b/MANIFEST.in index 35eed1c..ef198d6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,4 +2,4 @@ include LICENSE include HISTORY.md include Containerfile graft tests -graft python +graft project_name diff --git a/Makefile b/Makefile index e45b3d0..6e2897e 100644 --- a/Makefile +++ b/Makefile @@ -26,20 +26,20 @@ install: ## Install the project in dev mode. .PHONY: fmt fmt: ## Format code using black & isort. - $(ENV_PREFIX)isort python/ - $(ENV_PREFIX)black -l 79 python/ + $(ENV_PREFIX)isort project_name/ + $(ENV_PREFIX)black -l 79 project_name/ $(ENV_PREFIX)black -l 79 tests/ .PHONY: lint lint: ## Run pep8, black, mypy linters. - $(ENV_PREFIX)flake8 python/ - $(ENV_PREFIX)black -l 79 --check python/ + $(ENV_PREFIX)flake8 project_name/ + $(ENV_PREFIX)black -l 79 --check project_name/ $(ENV_PREFIX)black -l 79 --check tests/ - $(ENV_PREFIX)mypy --ignore-missing-imports python/ + $(ENV_PREFIX)mypy --ignore-missing-imports project_name/ .PHONY: test test: lint ## Run tests and generate coverage report. - $(ENV_PREFIX)pytest -v --cov-config .coveragerc --cov=python -l --tb=short --maxfail=1 tests/ + $(ENV_PREFIX)pytest -v --cov-config .coveragerc --cov=project_name -l --tb=short --maxfail=1 tests/ $(ENV_PREFIX)coverage xml $(ENV_PREFIX)coverage html @@ -78,9 +78,9 @@ virtualenv: ## Create a virtual environment. release: ## Create a new tag for release. @echo "WARNING: This operation will create s version tag and push to github" @read -p "Version? (provide the next x.y.z semver) : " TAG - @echo "$${TAG}" > python/VERSION + @echo "$${TAG}" > project_name/VERSION @$(ENV_PREFIX)gitchangelog > HISTORY.md - @git add python/VERSION HISTORY.md + @git add project_name/VERSION HISTORY.md @git commit -m "release: version $${TAG} 🚀" @echo "creating git tag : $${TAG}" @git tag $${TAG} @@ -101,7 +101,7 @@ switch-to-poetry: ## Switch to poetry package manager. @poetry init --no-interaction --name=a_flask_test --author=rochacbruno @echo "" >> pyproject.toml @echo "[tool.poetry.scripts]" >> pyproject.toml - @echo "python = 'python.__main__:main'" >> pyproject.toml + @echo "project_name = 'project_name.__main__:main'" >> pyproject.toml @cat requirements.txt | while read in; do poetry add --no-interaction "$${in}"; done @cat requirements-test.txt | while read in; do poetry add --no-interaction "$${in}" --dev; done @poetry install --no-interaction @@ -109,7 +109,7 @@ switch-to-poetry: ## Switch to poetry package manager. @mv requirements* .gitea/backup @mv setup.py .gitea/backup @echo "You have switched to https://python-poetry.org/ package manager." - @echo "Please run 'poetry shell' or 'poetry run python'" + @echo "Please run 'poetry shell' or 'poetry run project_name'" .PHONY: init init: ## Initialize the project based on an application template. diff --git a/README.md b/README.md index 9d781ce..27ed1b0 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ See also 1. Choose a name for your project (e.g. `my_awesome_project` recommendation is to use all lowercase and underscores separation for repo names.) -2. Replace all text instances of "python" in this repo with your new name +2. Replace all text instances of "project_name" in this repo with your new name 3. If you want Automatic Release to [PyPI](https://pypi.org) On the new repository `settings->secrets` add your `PYPI_API_TOKEN` (get the tokens on PyPI website) 4. Read the file [CONTRIBUTING.md](CONTRIBUTING.md) @@ -35,7 +35,7 @@ See also - 🧪 Testing structure using [pytest](https://docs.pytest.org/en/latest/) - ✅ Code linting using [flake8](https://flake8.pycqa.org/en/latest/) - 🛳️ Automatic release to [PyPI](https://pypi.org) using [twine](https://twine.readthedocs.io/en/latest/) and github actions. -- 🎯 Entry points to execute your program using `python -m ` or `$ python` with basic CLI argument parsing. +- 🎯 Entry points to execute your program using `python -m ` or `$ project_name` with basic CLI argument parsing. - 🔄 Continuous integration using [Github Actions](.gitea/workflows/) with jobs to lint, test and release your project on Linux, Mac and Windows environments. > Curious about architectural decisions on this template? read [ABOUT_THIS_TEMPLATE.md](ABOUT_THIS_TEMPLATE.md) @@ -46,30 +46,30 @@ See also --- -# python +# project_name -Awesome python created by Templates +project_description ## Install it from PyPI ```bash -pip install python +pip install project_name ``` ## Usage ```py -from python import BaseClass -from python import base_function +from project_name import BaseClass +from project_name import base_function BaseClass().base_method() base_function() ``` ```bash -$ python -m python +$ python -m project_name #or -$ python +$ project_name ``` ## Development diff --git a/mkdocs.yml b/mkdocs.yml index b1371ed..33a69ca 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,2 +1,2 @@ -site_name: python +site_name: project_name theme: readthedocs diff --git a/python/VERSION b/project_name/VERSION similarity index 100% rename from python/VERSION rename to project_name/VERSION diff --git a/python/__init__.py b/project_name/__init__.py similarity index 100% rename from python/__init__.py rename to project_name/__init__.py diff --git a/project_name/__main__.py b/project_name/__main__.py new file mode 100644 index 0000000..2ba8b18 --- /dev/null +++ b/project_name/__main__.py @@ -0,0 +1,6 @@ +"""Entry point for project_name.""" + +from project_name.cli import main # pragma: no cover + +if __name__ == "__main__": # pragma: no cover + main() diff --git a/python/base.py b/project_name/base.py similarity index 68% rename from python/base.py rename to project_name/base.py index c2f8410..ac590b9 100644 --- a/python/base.py +++ b/project_name/base.py @@ -1,7 +1,7 @@ """ -python base module. +project_name base module. -This is the principal module of the python project. +This is the principal module of the project_name project. here you put your main classes and objects. Be creative! do whatever you want! @@ -14,4 +14,4 @@ and then choose `flask` as template. """ # example constant variable -NAME = "python" +NAME = "project_name" diff --git a/python/cli.py b/project_name/cli.py similarity index 87% rename from python/cli.py rename to project_name/cli.py index 32b5b5e..66e9ca1 100644 --- a/python/cli.py +++ b/project_name/cli.py @@ -1,4 +1,4 @@ -"""CLI interface for python project. +"""CLI interface for project_name project. Be creative! do whatever you want! @@ -12,7 +12,7 @@ Be creative! do whatever you want! def main(): # pragma: no cover """ The main function executes on commands: - `python -m python` and `$ python `. + `python -m project_name` and `$ project_name `. This is your program's entry point. diff --git a/python/__main__.py b/python/__main__.py deleted file mode 100644 index 0507c95..0000000 --- a/python/__main__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""Entry point for python.""" - -from python.cli import main # pragma: no cover - -if __name__ == "__main__": # pragma: no cover - main() diff --git a/setup.py b/setup.py index 809cb02..6d0388b 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -"""Python setup.py for python package""" +"""Python setup.py for project_name package""" import io import os from setuptools import find_packages, setup @@ -6,7 +6,7 @@ from setuptools import find_packages, setup def read(*paths, **kwargs): """Read the contents of a text file safely. - >>> read("python", "VERSION") + >>> read("project_name", "VERSION") '0.1.0' >>> read("README.md") ... @@ -30,17 +30,17 @@ def read_requirements(path): setup( - name="python", - version=read("python", "VERSION"), - description="Awesome python created by Templates", - url="https://git.disi.dev/Templates/Python/", + name="project_name", + version=read("project_name", "VERSION"), + description="project_description", + url="https://git.disi.dev/author_name/project_urlname/", long_description=read("README.md"), long_description_content_type="text/markdown", - author="Templates", + author="author_name", packages=find_packages(exclude=["tests", ".gitea"]), install_requires=read_requirements("requirements.txt"), entry_points={ - "console_scripts": ["python = python.__main__:main"] + "console_scripts": ["project_name = project_name.__main__:main"] }, extras_require={"test": read_requirements("requirements-test.txt")}, ) diff --git a/tests/test_base.py b/tests/test_base.py index 58b2aa4..f1b765f 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -1,5 +1,5 @@ -from python.base import NAME +from project_name.base import NAME def test_base(): - assert NAME == "python" + assert NAME == "project_name"