Ready to clone and code.

This commit is contained in:
simon 2024-11-09 16:23:02 +00:00 committed by github-actions[bot]
parent 7dcf36df6d
commit e4f251f138
17 changed files with 54 additions and 55 deletions

View File

@ -16,10 +16,10 @@ echo "Description: $description";
echo "Renaming project..."
original_author="author_name"
original_name="project_name"
original_urlname="project_urlname"
original_description="project_description"
original_author="Templates"
original_name="python"
original_urlname="Python"
original_description="Awesome python created by Templates"
# for filename in $(find . -name "*.*")
for filename in $(git ls-files)
do
@ -30,7 +30,7 @@ do
echo "Renamed $filename"
done
mv project_name $name
mv python $name
# This command runs only once on GHA!
rm -rf .gitea/template.yml

View File

@ -1 +0,0 @@
author: rochacbruno

View File

@ -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
├── project_name # The main python package for the project
├── python # 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 project_name/VERSION` will get the project version without harming
e.g: `cat python/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?

View File

@ -1,6 +1,6 @@
# How to develop on this project
project_name welcomes contributions from the community.
python 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/project_urlname.git`
- Enter the directory `cd project_urlname`
- Add upstream repo `git remote add upstream https://github.com/author_name/project_urlname`
- 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`
## Setting up your own virtual environment

View File

@ -2,4 +2,4 @@ FROM python:3.7-slim
COPY . /app
WORKDIR /app
RUN pip install .
CMD ["project_name"]
CMD ["python"]

View File

@ -2,4 +2,4 @@ include LICENSE
include HISTORY.md
include Containerfile
graft tests
graft project_name
graft python

View File

@ -26,20 +26,20 @@ install: ## Install the project in dev mode.
.PHONY: fmt
fmt: ## Format code using black & isort.
$(ENV_PREFIX)isort project_name/
$(ENV_PREFIX)black -l 79 project_name/
$(ENV_PREFIX)isort python/
$(ENV_PREFIX)black -l 79 python/
$(ENV_PREFIX)black -l 79 tests/
.PHONY: lint
lint: ## Run pep8, black, mypy linters.
$(ENV_PREFIX)flake8 project_name/
$(ENV_PREFIX)black -l 79 --check project_name/
$(ENV_PREFIX)flake8 python/
$(ENV_PREFIX)black -l 79 --check python/
$(ENV_PREFIX)black -l 79 --check tests/
$(ENV_PREFIX)mypy --ignore-missing-imports project_name/
$(ENV_PREFIX)mypy --ignore-missing-imports python/
.PHONY: test
test: lint ## Run tests and generate coverage report.
$(ENV_PREFIX)pytest -v --cov-config .coveragerc --cov=project_name -l --tb=short --maxfail=1 tests/
$(ENV_PREFIX)pytest -v --cov-config .coveragerc --cov=python -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}" > project_name/VERSION
@echo "$${TAG}" > python/VERSION
@$(ENV_PREFIX)gitchangelog > HISTORY.md
@git add project_name/VERSION HISTORY.md
@git add python/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 "project_name = 'project_name.__main__:main'" >> pyproject.toml
@echo "python = 'python.__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 project_name'"
@echo "Please run 'poetry shell' or 'poetry run python'"
.PHONY: init
init: ## Initialize the project based on an application template.

View File

@ -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 "project_name" in this repo with your new name
2. Replace all text instances of "python" 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 <project_name>` or `$ project_name` with basic CLI argument parsing.
- 🎯 Entry points to execute your program using `python -m <python>` or `$ python` 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
<!-- DELETE THE LINES ABOVE THIS AND WRITE YOUR PROJECT README BELOW -->
---
# project_name
# python
project_description
Awesome python created by Templates
## Install it from PyPI
```bash
pip install project_name
pip install python
```
## Usage
```py
from project_name import BaseClass
from project_name import base_function
from python import BaseClass
from python import base_function
BaseClass().base_method()
base_function()
```
```bash
$ python -m project_name
$ python -m python
#or
$ project_name
$ python
```
## Development

View File

@ -1,2 +1,2 @@
site_name: project_name
site_name: python
theme: readthedocs

View File

@ -1,6 +0,0 @@
"""Entry point for project_name."""
from project_name.cli import main # pragma: no cover
if __name__ == "__main__": # pragma: no cover
main()

6
python/__main__.py Normal file
View File

@ -0,0 +1,6 @@
"""Entry point for python."""
from python.cli import main # pragma: no cover
if __name__ == "__main__": # pragma: no cover
main()

View File

@ -1,7 +1,7 @@
"""
project_name base module.
python base module.
This is the principal module of the project_name project.
This is the principal module of the python 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 = "project_name"
NAME = "python"

View File

@ -1,4 +1,4 @@
"""CLI interface for project_name project.
"""CLI interface for python 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 project_name` and `$ project_name `.
`python -m python` and `$ python `.
This is your program's entry point.

View File

@ -1,4 +1,4 @@
"""Python setup.py for project_name package"""
"""Python setup.py for python 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("project_name", "VERSION")
>>> read("python", "VERSION")
'0.1.0'
>>> read("README.md")
...
@ -30,17 +30,17 @@ def read_requirements(path):
setup(
name="project_name",
version=read("project_name", "VERSION"),
description="project_description",
url="https://git.disi.dev/author_name/project_urlname/",
name="python",
version=read("python", "VERSION"),
description="Awesome python created by Templates",
url="https://git.disi.dev/Templates/Python/",
long_description=read("README.md"),
long_description_content_type="text/markdown",
author="author_name",
author="Templates",
packages=find_packages(exclude=["tests", ".gitea"]),
install_requires=read_requirements("requirements.txt"),
entry_points={
"console_scripts": ["project_name = project_name.__main__:main"]
"console_scripts": ["python = python.__main__:main"]
},
extras_require={"test": read_requirements("requirements-test.txt")},
)

View File

@ -1,5 +1,5 @@
from project_name.base import NAME
from python.base import NAME
def test_base():
assert NAME == "project_name"
assert NAME == "python"