diff --git a/.idea/misc.xml b/.idea/misc.xml index 176ab1b..bccba34 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/.idea/spark-cookiecutter.iml b/.idea/spark-cookiecutter.iml index 22a8a86..233ca13 100644 --- a/.idea/spark-cookiecutter.iml +++ b/.idea/spark-cookiecutter.iml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/cookiecutter.json b/cookiecutter.json index affa97f..d7c13e3 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -1,6 +1,6 @@ { "project_name": "new-project", - "package_name": "{{cookiecutter.project_name|lower|replace(' ', '_')|replace('-', '_')}}", + "package_name": "{{cookiecutter.project_name.lower().replace(' ', '_').replace('-', '_')}}", "project_version": "0.1.0", "full_name": "Your Name", "email": "Your Email", diff --git a/tests/test_create_template.py b/tests/test_create_template.py index 4cf8b63..c0dadec 100644 --- a/tests/test_create_template.py +++ b/tests/test_create_template.py @@ -33,6 +33,22 @@ def test_run_cookiecutter_result(cookies): assert "project_name" not in readme +def test_run_cookiecutter_result_with_hyphen_in_projectname(cookies): + """Runs cookiecutter and checks if the appropriate package names are initialized""" + project_name = "random-project" + package_name = "random_project" + result = cookies.bake( + extra_context={"project_name": project_name} + + ) + project_path_tests = result.project_path/"tests"/"test_transformations.py" + assert project_path_tests.is_file() + with open(project_path_tests,"r") as f: + test_transformations =f.read() + assert project_name not in test_transformations + assert package_name in test_transformations + + def test_cookiecutter_generated_files(cookies): """tests the generated files names make sense""" re_bad = re.compile(r"{{\s?cookiecutter\..*?}}") @@ -43,7 +59,6 @@ def test_cookiecutter_generated_files(cookies): for file_path in result.project_path.glob("*") ) - def test_cookiecutter_make_qa(cookies): """runs tests on the generated dir""" result = cookies.bake() diff --git a/{{cookiecutter.project_name}}/.gitignore b/{{cookiecutter.project_name}}/.gitignore index 37b72a9..88e97c3 100644 --- a/{{cookiecutter.project_name}}/.gitignore +++ b/{{cookiecutter.project_name}}/.gitignore @@ -1,8 +1,189 @@ +### Python ### # Byte-compiled / optimized / DLL files __pycache__/ -tests/__pycache__/*.pyc *.py[cod] +*$py.class -.pytest_cache/ +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ dist/ -angelou.egg-info/ \ No newline at end of file +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +# Support for Project snippet scope +.vscode/*.code-snippets + +# Ignore code-workspaces +*.code-workspace + +# Idea +.idea \ No newline at end of file diff --git a/{{cookiecutter.project_name}}/tests/test_transformations.py b/{{cookiecutter.project_name}}/tests/test_transformations.py index 1516124..781ed48 100644 --- a/{{cookiecutter.project_name}}/tests/test_transformations.py +++ b/{{cookiecutter.project_name}}/tests/test_transformations.py @@ -3,8 +3,8 @@ from pyspark.sql.types import * from quinn.extensions import * -import {{cookiecutter.project_name}}.sparksession as S -import {{cookiecutter.project_name}}.transformations as T +import {{cookiecutter.package_name}}.sparksession as S +import {{cookiecutter.package_name}}.transformations as T import chispa diff --git a/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py b/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py index 712069d..28c2622 100644 --- a/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py +++ b/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py @@ -1,4 +1,4 @@ -from {{cookiecutter.project_name}} import __version__ +from {{cookiecutter.package_name}} import __version__ def test_version():