forked from toluaina/pgsync
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Tolu Aina
committed
Sep 19, 2019
1 parent
31ed4b9
commit 784cde6
Showing
43 changed files
with
1,483 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
======= | ||
Credits | ||
======= | ||
|
||
Development Lead | ||
---------------- | ||
|
||
* Tolu Aina <[email protected]> | ||
|
||
Contributors | ||
------------ | ||
|
||
None yet. Why not be the first? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
.. _changelog: | ||
|
||
Changelog | ||
========= | ||
|
||
1.0.0 (2019-09-19) | ||
------------------ | ||
|
||
* initial release |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
.. highlight:: shell | ||
|
||
============ | ||
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/toluaina/essync/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 | ||
~~~~~~~~~~~~~~~~~~~ | ||
|
||
pgsync could always use more documentation, whether as part of the | ||
official pgsync 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/toluaina/pgsync/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 `pgsync` for local development. | ||
|
||
1. Fork the `pgsync` repo on GitHub. | ||
2. Clone your fork locally:: | ||
|
||
$ git clone [email protected]:toluaina/pgsync.git | ||
|
||
3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:: | ||
|
||
$ mkvirtualenv pgsync | ||
$ cd pgsync/ | ||
$ python setup.py develop | ||
|
||
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 pass flake8 and the | ||
tests, including testing other Python versions with tox:: | ||
|
||
$ flake8 pgsync tests | ||
$ python setup.py test or py.test | ||
$ tox | ||
|
||
To get flake8 and tox, just pip install them into your virtualenv. | ||
|
||
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.rst. | ||
3. The pull request should work for Python 3.6 and 3.7, and for PyPy. Check | ||
https://github.com/toluaina/pgsync/pulls | ||
and make sure that the tests pass for all supported Python versions. | ||
|
||
Tips | ||
---- | ||
|
||
To run a subset of tests:: | ||
|
||
$ py.test tests.test_pgsync | ||
|
||
|
||
Deploying | ||
--------- | ||
|
||
A reminder for the maintainers on how to deploy. | ||
Make sure all your changes are committed (including an entry in HISTORY.rst). | ||
Then run:: | ||
|
||
$ bumpversion patch # possible: major / minor / patch | ||
$ git push | ||
$ git push --tags | ||
|
||
Github CI will then deploy to PyPI if tests pass. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
FROM python:3.7-alpine | ||
|
||
ENV PYTHONUNBUFFERED 1 | ||
|
||
ENV PYTHONDONTWRITEBYTECODE 1 | ||
|
||
RUN apk add --no-cache \ | ||
build-base \ | ||
git \ | ||
libffi-dev \ | ||
openssh-client \ | ||
openssl-dev \ | ||
python-dev | ||
|
||
# Required for building psycopg2-binary: https://github.com/psycopg/psycopg2/issues/684 | ||
RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev | ||
|
||
# Install requirements | ||
COPY requirements.txt /requirements.txt | ||
RUN pip install --upgrade pip \ | ||
&& pip install --upgrade setuptools \ | ||
&& pip install --upgrade -r /requirements.txt \ | ||
&& rm -r /root/.cache | ||
|
||
ARG WORKDIR=/code | ||
|
||
RUN mkdir $WORKDIR | ||
|
||
ADD ./.env.sample $WORKDIR/.env | ||
ADD ./codecov.yml $WORKDIR/codecov.yml | ||
ADD ./bin/ $WORKDIR/bin | ||
ADD ./pgsync/ $WORKDIR/pgsync | ||
ADD ./tests/ $WORKDIR/tests | ||
ADD ./examples/ $WORKDIR/examples | ||
ADD ./supervisor/ $WORKDIR/supervisor | ||
ADD ./requirements.in $WORKDIR/requirements.in | ||
ADD ./requirements.txt $WORKDIR/requirements.txt | ||
|
||
WORKDIR $WORKDIR | ||
|
||
ENV PYTHONPATH=$WORKDIR/pgsync | ||
ENV PATH=$PATH:$WORKDIR/bin | ||
ENV SCHEMA=$WORKDIR/examples/airbnb/schema.json | ||
ENV LOG_LEVEL=debug | ||
|
||
COPY supervisor/supervisord.conf /etc/supervisor/supervisord.conf | ||
COPY supervisor/pgsync.conf /etc/supervisor/conf.d/ | ||
ENTRYPOINT ["/bin/sh", "supervisor/supervisord_entrypoint.sh"] | ||
CMD ["-c", "/etc/supervisor/supervisord.conf"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
======= | ||
History | ||
======= | ||
|
||
0.1.0 (2019-01-22) | ||
------------------ | ||
|
||
* First release on PyPI. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
include AUTHORS.rst | ||
include CONTRIBUTING.rst | ||
include HISTORY.rst | ||
include LICENSE | ||
include README.md | ||
|
||
recursive-include tests * | ||
recursive-exclude * __pycache__ | ||
recursive-exclude * *.py[co] | ||
|
||
recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
.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 .tox/ | ||
rm -f .coverage | ||
rm -fr htmlcov/ | ||
rm -fr .pytest_cache | ||
|
||
lint: ## check style with flake8 | ||
flake8 pgsync tests | ||
|
||
test: ## run tests quickly with the default Python | ||
py.test | ||
|
||
test-all: ## run tests on every Python version with tox | ||
tox | ||
|
||
coverage: ## check code coverage quickly with the default Python | ||
coverage run --source pgsync -m pytest | ||
coverage report -m | ||
coverage html | ||
$(BROWSER) htmlcov/index.html | ||
|
||
docs: ## generate Sphinx HTML documentation, including API docs | ||
rm -f docs/pgsync.rst | ||
rm -f docs/modules.rst | ||
sphinx-apidoc -o docs/ pgsync | ||
$(MAKE) -C docs clean | ||
$(MAKE) -C docs html | ||
$(BROWSER) docs/_build/html/index.html | ||
|
||
servedocs: docs ## compile the docs watching for changes | ||
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . | ||
|
||
release: dist ## package and upload a release | ||
twine upload dist/* | ||
|
||
dist: clean ## builds source and wheel package | ||
python setup.py sdist | ||
python setup.py bdist_wheel | ||
ls -l dist | ||
|
||
install: clean ## install the package to the active Python's site-packages | ||
python setup.py install |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
PGSync | ||
|
||
Copyright (c) 2019, Tolu Aina. | ||
|
||
This product includes software developed at PGSync (https://www.pgsync.com). |
Oops, something went wrong.