Browse Source

import of project template

pull/1/head
Holger Frey 5 years ago
commit
967ccfc0ed
  1. 64
      .gitignore
  2. 38
      .pre-commit-config.yaml
  3. 4
      CHANGES.md
  4. 117
      CONTRIBUTING.md
  5. 10
      LICENSE
  6. 84
      Makefile
  7. 26
      README.md
  8. 65
      pyproject.toml
  9. 6
      superx_budget/__init__.py
  10. 5
      tests/test_superx_budget.py
  11. 14
      tox.ini

64
.gitignore vendored

@ -0,0 +1,64 @@
# ---> Python
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
.venv
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# 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/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
# Translations
*.mo
*.pot
# Django stuff:
*.log
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Mac Stuff
.DS_Store

38
.pre-commit-config.yaml

@ -0,0 +1,38 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
hooks:
- id: check-added-large-files
- id: check-byte-order-marker
- id: check-json
- id: check-merge-conflict
- id: check-toml
- id: debug-statements
- id: detect-private-key
- repo: local
hooks:
- id: isort-project
name: isort_project
entry: isort -rc superx_budget
language: system
pass_filenames: false
- id: isort-test
name: isort_test
entry: isort -rc tests
language: system
pass_filenames: false
- id: black
name: black
entry: black superx_budget tests
language: system
pass_filenames: false
- id: flake8
name: flake8
entry: flake8 superx_budget tests
language: system
pass_filenames: false
- id: pytest
name: pytest
entry: pytest tests
pass_filenames: false
language: system

4
CHANGES.md

@ -0,0 +1,4 @@
0.0.1 - first version
----------------------
- setting up the project

117
CONTRIBUTING.md

@ -0,0 +1,117 @@
Contributing
============
Contributions are welcome, and they are greatly appreciated! Every little bit
helps, and credit will always be given.
You can contribute in many ways:
Types of Contributions
----------------------
### Report Bugs
Report bugs at https://github.com/holgi/superx_budget/issues.
If you are reporting a bug, please include:
* Your operating system name and version.
* Any details about your local setup that might be helpful in troubleshooting.
* Detailed steps to reproduce the bug.
### Fix Bugs
Look through the GitHub issues for bugs. Anything tagged with "bug" and "help
wanted" is open to whoever wants to implement it.
### Implement Features
Look through the GitHub issues for features. Anything tagged with "enhancement"
and "help wanted" is open to whoever wants to implement it.
### Write Documentation
superx_budget could always use more documentation, whether as part of the
official superx_budget docs, in docstrings, or even on the web in blog posts,
articles, and such.
### Submit Feedback
The best way to send feedback is to file an issue at https://github.com/holgi/superx_budget/issues.
If you are proposing a feature:
* Explain in detail how it would work.
* Keep the scope as narrow as possible, to make it easier to implement.
* Remember that this is a volunteer-driven project, and that contributions
are welcome :)
Get Started!
------------
Ready to contribute? Here's how to set up `superx_budget` for local development.
1. Fork the `superx_budget` repo on GitHub.
2. Clone your fork locally::
`$ git clone git@github.com:your_name_here/superx_budget.git`
3. Install your local copy into a virtualenv.
`$ cd superx_budget/`
`$ make devenv`
4. Create a branch for local development::
`$ git checkout -b name-of-your-bugfix-or-feature`
Now you can make your changes locally.
5. When you're done making changes, check that your changes passes the linters and the
tests, including testing other Python versions with tox::
```
$ make lint
$ make coverage
$ make tox
```
6. Commit your changes and push your branch to GitHub::
```
$ git add .
$ git commit -m "Your detailed description of your changes."
$ git push origin name-of-your-bugfix-or-feature
```
7. Submit a pull request through the GitHub website.
Pull Request Guidelines
-----------------------
Before you submit a pull request, check that it meets these guidelines:
1. The pull request should include tests.
2. If the pull request adds functionality, the docs should be updated. Put
your new functionality into a function with a docstring, and add the
feature to the list in README.md and CHANGES.md
Tips
----
To run a quick set of tests without coverage report
$ make test
Deploying
---------
A reminder for the maintainers on how to deploy.
Bump the version in `superx_budget/__init__.py` and
make sure all your changes are committed (including an entry in CHANGES.md).
$ git tag <new version>
$ git push
$ git push --tags
$ flit publish

10
LICENSE

@ -0,0 +1,10 @@
/*
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
* frey@imtek.de wrote this file. As long as you retain this notice you
* can do whatever you want with this stuff. If we meet some day, and you think
* this stuff is worth it, you can buy me a beer in return. Holger Frey
* ----------------------------------------------------------------------------
*/

84
Makefile

@ -0,0 +1,84 @@
.PHONY: clean clean-test clean-pyc clean-build docs help
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
try:
from urllib import pathname2url
except:
from urllib.request import pathname2url
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
define PRINT_HELP_PYSCRIPT
import re, sys
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
help:
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
clean-build: ## remove build artifacts
rm -fr build/
rm -fr dist/
rm -fr .eggs/
find . -name '*.egg-info' -exec rm -fr {} +
find . -name '*.egg' -exec rm -f {} +
clean-pyc: ## remove Python file artifacts
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-test: ## remove test and coverage artifacts
rm -fr .pytest_cache/
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
lint: ## reformat with black and check style with flake8
isort -rc superx_budget
isort -rc tests
black superx_budget tests
flake8 superx_budget tests
test: lint ## run tests quickly with the default Python
pytest tests -x --disable-warnings -m "not app"
coverage: lint ## full test suite, check code coverage and open coverage report
pytest tests --cov=superx_budget
coverage html
$(BROWSER) htmlcov/index.html
tox: ## run fully isolated tests with tox
tox
install: ## install updated project.toml with flint
flit install --pth-file
devenv: ## setup development environment
python3 -m venv --prompt superx_budget .venv
.venv/bin/pip3 install --upgrade pip
.venv/bin/pip3 install flit
.venv/bin/flit install --pth-file
repo: devenv ## complete project setup with development environment and git repo
git init .
git add .
git commit -m "import of project template"
.venv/bin/pre-commit install --install-hooks

26
README.md

@ -0,0 +1,26 @@
superx_budget
=============
Creating a budget overview from a SuperX export
## Example:
```python
import superx_budget
superx_budget.run()
```
## Development
To install the development version of superx_budget:
git clone https://github.com/holgi/superx_budget.git
# create a virtual environment and install all required dev dependencies
cd superx_budget
make devenv
To run the tests, use `make tests` or `make coverage` for a complete report.

65
pyproject.toml

@ -0,0 +1,65 @@
[build-system]
requires = ["flit"]
build-backend = "flit.buildapi"
[tool.flit.metadata]
module = "superx_budget"
dist-name = "superx_budget"
author = "Holger Frey"
author-email = "frey@imtek.de"
home-page = "https://github.com/holgi/superx_budget"
description-file = "README.md"
license = "Beerware"
# see https://pypi.org/classifiers/
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3 :: Only",
"License :: Freely Distributable",
]
requires = [
]
requires-python = ">=3.7"
[tool.flit.metadata.requires-extra]
test = [
"pytest >=4.0.0",
"pytest-cov",
"pytest-mock",
"tox",
]
dev = [
"black",
"flake8",
"flake8-comprehensions",
"isort",
"keyring",
"pre-commit",
]
[tool.black]
line-length = 79
py37 = true
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.tox
| \.venv
| build
| dist
)/
'''
[tool.isort]
line_length=79
multi_line_output=3
length_sort="True"
include_trailing_comma="True"

6
superx_budget/__init__.py

@ -0,0 +1,6 @@
""" superx_budget
Creating a budget overview from a SuperX export
"""
__version__ = "0.0.1"

5
tests/test_superx_budget.py

@ -0,0 +1,5 @@
""" Stub file for testing the project """
def test_dummy():
assert True

14
tox.ini

@ -0,0 +1,14 @@
[tox]
envlist = py37
isolated_build = True
[testenv]
deps =
pytest
pytest-cov
pytest-mock
setuptools>=41.2.0
pip>=20.0.2
changedir = {toxinidir}/tests
commands = pytest --cov=superx_budget
Loading…
Cancel
Save