From cbfac0d0afc183e885148c79f03a5f352ff680df Mon Sep 17 00:00:00 2001 From: Peter Kruse Date: Sun, 5 Mar 2023 09:49:14 +0100 Subject: [PATCH 1/2] modernize repository Introduction of src-layout Replaced `setup.py` with `pyproject.toml` (including all dynamic parts) Fix package `__init__.py` import to work properly in src-layout Fix test import to assume an installed local version of the module Add `build` dependency for local building Add package README.md to root README.md Breaking changes: Running tests requires installing the package locally. While this is an additional (potentially annoying) step, it ensures we're testing exactly the package as it will be delivered to users. Warning: Automatic dicovery of modules is a BETA-feature of `pyproject.toml`. https://setuptools.pypa.io/en/latest/userguide/package_discovery.html --- README.md | 26 +++++++++++++ app/README.md | 21 ---------- app/idgenerator/src/__init__.py | 0 app/idgenerator/test/__init__.py | 0 pyproject.toml | 38 +++++++++++++++++++ setup.py | 28 -------------- {app => src}/idgenerator/__init__.py | 2 +- .../src => src/idgenerator}/idgenerator.py | 0 .../src => src/idgenerator}/utils.py | 0 {app => tests}/__init__.py | 0 .../test => tests}/test_idgenerator.py | 4 +- 11 files changed, 67 insertions(+), 52 deletions(-) delete mode 100644 app/README.md delete mode 100644 app/idgenerator/src/__init__.py delete mode 100644 app/idgenerator/test/__init__.py create mode 100644 pyproject.toml delete mode 100644 setup.py rename {app => src}/idgenerator/__init__.py (76%) rename {app/idgenerator/src => src/idgenerator}/idgenerator.py (100%) rename {app/idgenerator/src => src/idgenerator}/utils.py (100%) rename {app => tests}/__init__.py (100%) rename {app/idgenerator/test => tests}/test_idgenerator.py (96%) diff --git a/README.md b/README.md index 7c245d4..0fcca7a 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,29 @@ Do you want to know how to build a complete Python package? Well, look no further! This video will take you step-by-step through the entire process, from creating your project to publishing it on PyPI. Video: https://youtu.be/5KEObONUkik. + + +--- +*The below section is the actual content of the README.md file if this repository wouldn't exist as the basis of a youtube video.* + +# ID Generator +A package used to generate random ids of variable lengths and types. + +## How to use +_After installing the package use following import:_
+ +**from idgenerator import generate_password,generate_guid,generate_credit_card_number, + generate_pin_number, + generate_object_id** + +_Then use following commands:_ + +**password = generate_password(length= 'your_desired_length')
** + +**guid = generate_guid()
** + +**credit_card_number = generate_credit_card_number(length='your_desired_length')
** + +**pin = generate_pin_number(length='your_desired_length')
** + +**objid = generate_object_id()
** diff --git a/app/README.md b/app/README.md deleted file mode 100644 index 62b12fd..0000000 --- a/app/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# ID Generator -A package used to generate random ids of variable lengths and types. - -## How to use -_After installing the package use following import:_
- -**from idgenerator import generate_password,generate_guid,generate_credit_card_number, - generate_pin_number, - generate_object_id** - -_Then use following commands:_ - -**password = generate_password(length= 'your_desired_length')
** - -**guid = generate_guid()
** - -**credit_card_number = generate_credit_card_number(length='your_desired_length')
** - -**pin = generate_pin_number(length='your_desired_length')
** - -**objid = generate_object_id()
** \ No newline at end of file diff --git a/app/idgenerator/src/__init__.py b/app/idgenerator/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/app/idgenerator/test/__init__.py b/app/idgenerator/test/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..c6e174d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,38 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[project] +name = "idgenerator" +version = "0.0.10" +description = "An id generator that generated various types and lengths ids" +readme = {file = "README.md", content-type = "text/markdown"} +authors = [ + {name = "ArjanCodes", email = "arjan@arjancodes.com"}, +] +license = {text = "MIT"} +classifiers = [ + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3.10", + "Operating System :: OS Independent", +] +dependencies = [ + "bson >= 0.5.10", +] +requires-python = ">=3.10" + +# BETA-feature "Automatic discovery" +# Leaving out any information about the package structure to enable automatic discovery. src-layout works out of the box +# https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#automatic-discovery + +[project.urls] +homepage = "https://www.youtube.com/@ArjanCodes" +documentation = "https://github.com/ArjanCodes/2023-package" +repository = "https://github.com/ArjanCodes/2023-package" + +[project.optional-dependencies] +dev = [ + "pytest>=7.0", + "twine>=4.0.2", + "build", +] diff --git a/setup.py b/setup.py deleted file mode 100644 index 5db450c..0000000 --- a/setup.py +++ /dev/null @@ -1,28 +0,0 @@ -from setuptools import find_packages, setup - -with open("app/Readme.md", "r") as f: - long_description = f.read() - -setup( - name="idgenerator", - version="0.0.10", - description="An id generator that generated various types and lengths ids", - package_dir={"": "app"}, - packages=find_packages(where="app"), - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/ArjanCodes/2023-package", - author="ArjanCodes", - author_email="arjan@arjancodes.com", - license="MIT", - classifiers=[ - "License :: OSI Approved :: MIT License", - "Programming Language :: Python :: 3.10", - "Operating System :: OS Independent", - ], - install_requires=["bson >= 0.5.10"], - extras_require={ - "dev": ["pytest>=7.0", "twine>=4.0.2"], - }, - python_requires=">=3.10", -) diff --git a/app/idgenerator/__init__.py b/src/idgenerator/__init__.py similarity index 76% rename from app/idgenerator/__init__.py rename to src/idgenerator/__init__.py index 53de1e3..146b15f 100644 --- a/app/idgenerator/__init__.py +++ b/src/idgenerator/__init__.py @@ -1,4 +1,4 @@ -from .src.idgenerator import ( +from idgenerator.idgenerator import ( generate_password, generate_guid, generate_object_id, diff --git a/app/idgenerator/src/idgenerator.py b/src/idgenerator/idgenerator.py similarity index 100% rename from app/idgenerator/src/idgenerator.py rename to src/idgenerator/idgenerator.py diff --git a/app/idgenerator/src/utils.py b/src/idgenerator/utils.py similarity index 100% rename from app/idgenerator/src/utils.py rename to src/idgenerator/utils.py diff --git a/app/__init__.py b/tests/__init__.py similarity index 100% rename from app/__init__.py rename to tests/__init__.py diff --git a/app/idgenerator/test/test_idgenerator.py b/tests/test_idgenerator.py similarity index 96% rename from app/idgenerator/test/test_idgenerator.py rename to tests/test_idgenerator.py index 2203af6..d0c84ac 100644 --- a/app/idgenerator/test/test_idgenerator.py +++ b/tests/test_idgenerator.py @@ -1,13 +1,13 @@ import unittest import string -from ..src.idgenerator import ( +from idgenerator import ( generate_password, generate_guid, generate_credit_card_number, generate_object_id, generate_pin_number, ) -from ..src.utils import luhn_checksum +from idgenerator.utils import luhn_checksum class GeneratorTest(unittest.TestCase): From 63ebbf23ea7a2c7be7c3dfa7e7ee60c214c3e55d Mon Sep 17 00:00:00 2001 From: Peter Kruse Date: Sun, 5 Mar 2023 09:49:28 +0100 Subject: [PATCH 2/2] add minimal .gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7ae4c1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +__pycache__/ +build/ +dist/ +env*/ + +*.egg-info