Skip to content

Commit

Permalink
Public release (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmf-mordis committed Sep 25, 2019
1 parent d955f4d commit 0413de2
Show file tree
Hide file tree
Showing 224 changed files with 11,311 additions and 2 deletions.
79 changes: 79 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
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/
.flake8
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/
reports
.pytest_cache

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# pyenv python configuration file
.python-version

# Virtual environments
virtualenv

# IDE config
.idea
.vscode

.env

docs/apidoc

# Sonarqube
.scannerwork
26 changes: 26 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
language: python
services:
- docker
# The default distribution (ubuntu 14.04) don't support Python 3.7.
dist: xenial
python:
- "3.6"
- "3.7"
install:
- pip install -r requirements_dev.txt
script: make test && make linters
notifications:
email:
- opensource@system73.com
deploy:
provider: pypi
user:
secure: "nHCsrwNg0eqwzx1hhbR4prX2pP2AhIPVp1Gtb4OY41FK5xLC8n1YE+/+6qj8E6OiepgaGTkxCAmqfy7ldgI3JXylEvynoJ/gav7EoW7OpXA3G+9ns9BLd6x5jHAIlAntEkVPU4oBghgq29Iv7D8jVXnrhAVV8CP5PV22idjDtxwWPwCHk6nSBy5FdsB3pI6hex+zWRrx5WMU4PjtNXOaZ2wTkFb2NHrHXxWGOLTyZ/7TXE5aAqBYdU602pMk9m2zI8lq4KwybAVGGuAIBDOaNHA4ST4u4BQx1CdiW04REBtTsoS7yltX6pnexCom2ibA/It6HZyJ6GrFgUM6PEBm3TQbB5NGkPYHy50SJ6RwR3+71KZZw7b3sl5ZNpU0GQKn4/lTU5pcveYiPLWVXdk8HWfUqmvZnGuLuipXFqWdomT1tW+9B0cgKkxkh7Kf6pUyxkWF6It76eHETLgZnit1DSgt29e53+TTZ/iZB4f9/vcXV27RMNEuJAlHkC13Pu2iEzo88kYiLU4jMn2t7DeQ/Cf1fz5RQllbmxJxejZmTXxJCi7+MINOCweP8D2odxJqeiVbOHE0GDb6ZYs8p6cSk4gCjtI53uxkT6HKNKgTGDrAeCU+683i95von4BlMCuIKlzHCEQvQWiJFiV/LGdQbwNA67lRd4cf+gLJn5RLS9E="
password:
secure: "nXYdB/bF2Vfxo3ZbAVRBufIQ/j76ipW6OFAHzux04R2AtlYDr2ozbYy4E8v+bGwp7U52dxEOXQhEgWqUHcUyjquIEk6FwP3Q25d0ekG8NrMC11gOkE+mqzhiu4PZTExK3xxGsasNN5ovM4azAREyF2Vv/DzWzq1fK1dSF2vcLd+UEZc0VfhOfpDSP1dQNRUUFw9UUOQci78n5l5SOBTQNptWdE7UK0kDXsunE7KHqMr9vG3/87p7UJMMtVQVPopI3ehfW0/u/fSc7+MFNqGRRDMe+MJgTXm/9XUxy8S3yNv8gT6Ng4jeCP9ng2cl4h3jAAe+3e++HiCMnTMGC1nxBNYKh7spYYNiK7wTgkeoasWst9rRNWbR7V2rSFLJy1nH2HZ6LWvxH+PCLpWZMrlFZDg0RjzrN1Sp3+IU3kzt5rvQAseCFv/aR9N9kw1MQrwJs8geL5lcOmNTWZj80QoldHhOkVp8xK2FqHrbomhqOGfEMYuWDOlnHQ3zqxOuuAAXa1bry1ALXZoYXt8feXKmXEog34ptM2w2VgTUfwNuT4JkQdC0qm/nifkMkWvLGk4d8sITsYCunlPOvXDilUkGmiNaMRowsiKMG/tZfdfh9lruJUALVr7y/Okbz/+E61IVx1LLekFWgKJw5juRjhl2aVDFjmCWXcNVky7CRcZ6k4I="
# Necessary when the build has more than one job (Travis uses one job per Python version).
# With this setting only the first job upload the package to pypi, preventing the others from failing.
skip_existing: true
on:
tags: true
branch: master
21 changes: 21 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Tamarco is written and maintained by the System73 Engineering Team.

# Core Team

* Alexis Lopez
* Ayoze Fernández @ay0o
* Elena Curbelo @ecurbelo
* Jesus Rubio @barrenao
* José Melero @jmf-mordis
* Victor Pérez @ivictorpd


# Previous members of the core team

* Raul Marrero @rulox
* Sara Báez @Syrka
* Sergio Medina, main design of the framework @lumasepa


# Contributors

5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Changelog

### 0.1.0

* Public release
76 changes: 76 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [opensource@system73.com](opensource@system73.com).
All complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
41 changes: 41 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Contribution guide
Welcome to the project!! First of all we want to thank you, we would like to have new collaborators and contributions.

This project is governed by the Tamarco [Code of Conduct](https://github.com/system73/tamarco/blob/master/CODE_OF_CONDUCT.md) and we expect that all our members follow them.

## Your first contribution

There are so many ways to help, improve the documentation, write tutorials or examples, improve the docstrings, make
tests, report bugs, etc.

You can take a look at the tickets with the tag `good first issue`.

## Running tests and linters

All the contributions must have at least unit tests.

Make sure that the test are in the correct place. We have separated the tests in two categories, the unit tests
(`test/unit`) and the functional tests (`test/functional`). Inside each folder the test should follow the same structure
than the main package. For example, a unit test of `tamarco/core/microservice.py` should be placed in
`tests/unit/core/test_microservice.py`.

Functional tests are considered those that do some kind of I/O, such as those that need third party services (AMQP,
Kafka, Postgres, ...), open servers (http and websocket resource), manage files or wait for an event. The goal is
maintain unit tests that can be passed quickly during development.

Most of the functional tests need docker and docker-compose installed in the system to use some third party services.

Before summit a pull request, please check that all the tests and linters are passing.

```
make test
make linters
```

## Code review process

The project maintainers will leave the feedback.

* You need at least two approvals from core developers.
* The tests and linters should pass in the CI.
* The code must have at least the 80% of coverage.
21 changes: 21 additions & 0 deletions LICENCE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License

Copyright (c) 2019-present System73

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
12 changes: 12 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

include HISTORY.md
include README.md

recursive-include tests *
recursive-include tamarco *
recursive-include examples *
recursive-include docs *
recursive-exclude * __pycache__
recursive-exclude * *.py[co]

recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif
91 changes: 91 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
.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

BROWSER := python -c "$$BROWSER_PYSCRIPT"

help: Makefile
@echo
@echo " Choose a command run in "$(PROJECT_NAME)":"
@echo
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'
@echo

## clean: remove all build, test, coverage and Python artifacts
clean: clean-build clean-pyc clean-test

## clean-build: remove build artifacts
clean-build:
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
clean-pyc:
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 tes: and coverage artifacts
clean-test:
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
rm -fr reports/
rm -fr .pytest_cache
rm -fr .cache
rm -fr .coverage.*

## setup-test: setup the current environment to run the tests
setup-test: clean
mkdir -p reports

## test: run the tests
test: setup-test
pytest -vv --junit-xml=reports/test.xml

## test-coverage: run the tests with coverage
test-coverage: setup-test
coverage run -m pytest tests -vv --junit-xml=reports/test.xml
coverage combine && coverage xml && coverage html

## linters: run flake 8
linters:
python -m flake8 . && python -m black . --check

## docs: generate Sphinx HTML documentation, including API docs
docs:
rm -rf docs/apidoc/
$sphinx-apidoc -o docs/apidoc tamarco
$(MAKE) -C docs clean
$(MAKE) -C docs html
$(BROWSER) docs/_build/html/index.html

## servedocs: compile the docs watching for changes and open the doc in the browser
servedocs: docs
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .

## dist: build the package
dist: clean
python setup.py sdist
ls -l dist

## install: install the package to the active Python's site-packages
install: clean
python setup.py install

## format-code: formats the code with a code formatter
format-code:
black .
Loading

0 comments on commit 0413de2

Please sign in to comment.