Project skeleton with cookiecutter-pylibrary.
commit
905da70079
@ -0,0 +1,13 @@
|
||||
[bumpversion]
|
||||
current_version = 0.1.0
|
||||
commit = True
|
||||
tag = True
|
||||
|
||||
[bumpversion:file:setup.py]
|
||||
|
||||
[bumpversion:file:README.rst]
|
||||
|
||||
[bumpversion:file:docs/conf.py]
|
||||
|
||||
[bumpversion:file:src/qutescript/__init__.py]
|
||||
|
@ -0,0 +1,49 @@
|
||||
# This file exists so you can easily regenerate your project.
|
||||
#
|
||||
# `cookiepatcher` is a convenient shim around `cookiecutter`
|
||||
# for regenerating projects (it will generate a .cookiecutterrc
|
||||
# automatically for any template). To use it:
|
||||
#
|
||||
# pip install cookiepatcher
|
||||
# cookiepatcher gh:ionelmc/cookiecutter-pylibrary project-path
|
||||
#
|
||||
# See:
|
||||
# https://pypi.python.org/pypi/cookiepatcher
|
||||
#
|
||||
# Alternatively, you can run:
|
||||
#
|
||||
# cookiecutter --overwrite-if-exists --config-file=project-path/.cookiecutterrc gh:ionelmc/cookiecutter-pylibrary
|
||||
|
||||
default_context:
|
||||
|
||||
appveyor: 'no'
|
||||
c_extension_cython: 'no'
|
||||
c_extension_optional: 'no'
|
||||
c_extension_support: 'no'
|
||||
codacy: 'no'
|
||||
codeclimate: 'no'
|
||||
codecov: 'no'
|
||||
command_line_interface: 'argparse'
|
||||
command_line_interface_bin_name: 'qutescript'
|
||||
coveralls: 'no'
|
||||
distribution_name: 'qutescript'
|
||||
email: 'harshad@sharma.io'
|
||||
full_name: 'Harshad Sharma'
|
||||
github_username: 'hiway'
|
||||
landscape: 'no'
|
||||
package_name: 'qutescript'
|
||||
project_name: 'qutescript'
|
||||
project_short_description: 'Painless userscripts for qutebrowser.'
|
||||
release_date: 'today'
|
||||
repo_name: 'python-qutescript'
|
||||
requiresio: 'no'
|
||||
scrutinizer: 'no'
|
||||
sphinx_doctest: 'no'
|
||||
sphinx_theme: 'sphinx-rtd-theme'
|
||||
test_matrix_configurator: 'no'
|
||||
test_matrix_separate_coverage: 'no'
|
||||
test_runner: 'pytest'
|
||||
travis: 'yes'
|
||||
version: '0.1.0'
|
||||
website: 'https://github.com/hiway/'
|
||||
year: 'now'
|
@ -0,0 +1,16 @@
|
||||
[paths]
|
||||
source =
|
||||
src/qutescript
|
||||
*/site-packages/qutescript
|
||||
|
||||
[run]
|
||||
branch = true
|
||||
source =
|
||||
qutescript
|
||||
tests
|
||||
parallel = true
|
||||
|
||||
[report]
|
||||
show_missing = true
|
||||
precision = 2
|
||||
omit = *migrations*
|
@ -0,0 +1,13 @@
|
||||
# see http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
charset = utf-8
|
||||
|
||||
[*.{bat,cmd,ps1}]
|
||||
end_of_line = crlf
|
@ -0,0 +1,64 @@
|
||||
*.py[cod]
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Packages
|
||||
*.egg
|
||||
*.egg-info
|
||||
dist
|
||||
build
|
||||
eggs
|
||||
.eggs
|
||||
parts
|
||||
bin
|
||||
var
|
||||
sdist
|
||||
wheelhouse
|
||||
develop-eggs
|
||||
.installed.cfg
|
||||
lib
|
||||
lib64
|
||||
venv*/
|
||||
pyvenv*/
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
.coverage
|
||||
.tox
|
||||
.coverage.*
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
htmlcov
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
|
||||
# Mr Developer
|
||||
.mr.developer.cfg
|
||||
.project
|
||||
.pydevproject
|
||||
.idea
|
||||
*.iml
|
||||
*.komodoproject
|
||||
|
||||
# Complexity
|
||||
output/*.html
|
||||
output/*/index.html
|
||||
|
||||
# Sphinx
|
||||
docs/_build
|
||||
|
||||
.DS_Store
|
||||
*~
|
||||
.*.sw[po]
|
||||
.build
|
||||
.ve
|
||||
.env
|
||||
.cache
|
||||
.pytest
|
||||
.bootstrap
|
||||
.appveyor.token
|
||||
*.bak
|
@ -0,0 +1,49 @@
|
||||
language: python
|
||||
sudo: false
|
||||
cache: pip
|
||||
env:
|
||||
global:
|
||||
- LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
|
||||
- SEGFAULT_SIGNALS=all
|
||||
matrix:
|
||||
- TOXENV=check
|
||||
- TOXENV=docs
|
||||
matrix:
|
||||
include:
|
||||
- python: '2.7'
|
||||
env:
|
||||
- TOXENV=py27,report
|
||||
- python: '3.3'
|
||||
env:
|
||||
- TOXENV=py33,report
|
||||
- python: '3.4'
|
||||
env:
|
||||
- TOXENV=py34,report
|
||||
- python: '3.5'
|
||||
env:
|
||||
- TOXENV=py35,report
|
||||
- python: '3.6'
|
||||
env:
|
||||
- TOXENV=py36,report
|
||||
- python: 'pypy-5.4'
|
||||
env:
|
||||
- TOXENV=pypy,report
|
||||
before_install:
|
||||
- python --version
|
||||
- uname -a
|
||||
- lsb_release -a
|
||||
install:
|
||||
- pip install tox
|
||||
- virtualenv --version
|
||||
- easy_install --version
|
||||
- pip --version
|
||||
- tox --version
|
||||
script:
|
||||
- tox -v
|
||||
after_failure:
|
||||
- more .tox/log/* | cat
|
||||
- more .tox/*/log/* | cat
|
||||
notifications:
|
||||
email:
|
||||
on_success: never
|
||||
on_failure: always
|
@ -0,0 +1,5 @@
|
||||
|
||||
Authors
|
||||
=======
|
||||
|
||||
* Harshad Sharma - https://github.com/hiway/
|
@ -0,0 +1,8 @@
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
0.1.0 (2017-06-16)
|
||||
------------------
|
||||
|
||||
* First release on PyPI.
|
@ -0,0 +1,90 @@
|
||||
============
|
||||
Contributing
|
||||
============
|
||||
|
||||
Contributions are welcome, and they are greatly appreciated! Every
|
||||
little bit helps, and credit will always be given.
|
||||
|
||||
Bug reports
|
||||
===========
|
||||
|
||||
When `reporting a bug <https://github.com/hiway/python-qutescript/issues>`_ 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.
|
||||
|
||||
Documentation improvements
|
||||
==========================
|
||||
|
||||
qutescript could always use more documentation, whether as part of the
|
||||
official qutescript docs, in docstrings, or even on the web in blog posts,
|
||||
articles, and such.
|
||||
|
||||
Feature requests and feedback
|
||||
=============================
|
||||
|
||||
The best way to send feedback is to file an issue at https://github.com/hiway/python-qutescript/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 code contributions are welcome :)
|
||||
|
||||
Development
|
||||
===========
|
||||
|
||||
To set up `python-qutescript` for local development:
|
||||
|
||||
1. Fork `python-qutescript <https://github.com/hiway/python-qutescript>`_
|
||||
(look for the "Fork" button).
|
||||
2. Clone your fork locally::
|
||||
|
||||
git clone git@github.com:your_name_here/python-qutescript.git
|
||||
|
||||
3. Create a branch for local development::
|
||||
|
||||
git checkout -b name-of-your-bugfix-or-feature
|
||||
|
||||
Now you can make your changes locally.
|
||||
|
||||
4. When you're done making changes, run all the checks, doc builder and spell checker with `tox <http://tox.readthedocs.io/en/latest/install.html>`_ one command::
|
||||
|
||||
tox
|
||||
|
||||
5. 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
|
||||
|
||||
6. Submit a pull request through the GitHub website.
|
||||
|
||||
Pull Request Guidelines
|
||||
-----------------------
|
||||
|
||||
If you need some code review or feedback while you're developing the code just make the pull request.
|
||||
|
||||
For merging, you should:
|
||||
|
||||
1. Include passing tests (run ``tox``) [1]_.
|
||||
2. Update documentation when there's new API, functionality etc.
|
||||
3. Add a note to ``CHANGELOG.rst`` about the changes.
|
||||
4. Add yourself to ``AUTHORS.rst``.
|
||||
|
||||
.. [1] If you don't have all the necessary python versions available locally you can rely on Travis - it will
|
||||
`run the tests <https://travis-ci.org/hiway/python-qutescript/pull_requests>`_ for each change you add in the pull request.
|
||||
|
||||
It will be slower though ...
|
||||
|
||||
Tips
|
||||
----
|
||||
|
||||
To run a subset of tests::
|
||||
|
||||
tox -e envname -- py.test -k test_myfeature
|
||||
|
||||
To run all the test environments in *parallel* (you need to ``pip install detox``)::
|
||||
|
||||
detox
|
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2017, Harshad Sharma
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
||||
following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
||||
disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,21 @@
|
||||
graft docs
|
||||
graft examples
|
||||
graft src
|
||||
graft ci
|
||||
graft tests
|
||||
|
||||
include .bumpversion.cfg
|
||||
include .coveragerc
|
||||
include .cookiecutterrc
|
||||
include .editorconfig
|
||||
include .isort.cfg
|
||||
|
||||
include AUTHORS.rst
|
||||
include CHANGELOG.rst
|
||||
include CONTRIBUTING.rst
|
||||
include LICENSE
|
||||
include README.rst
|
||||
|
||||
include tox.ini .travis.yml appveyor.yml
|
||||
|
||||
global-exclude *.py[cod] __pycache__ *.so *.dylib
|
@ -0,0 +1,88 @@
|
||||
========
|
||||
Overview
|
||||
========
|
||||
|
||||
.. start-badges
|
||||
|
||||
.. list-table::
|
||||
:stub-columns: 1
|
||||
|
||||
* - docs
|
||||
- |docs|
|
||||
* - tests
|
||||
- | |travis|
|
||||
|
|
||||
* - package
|
||||
- | |version| |wheel| |supported-versions| |supported-implementations|
|
||||
| |commits-since|
|
||||
|
||||
.. |docs| image:: https://readthedocs.org/projects/python-qutescript/badge/?style=flat
|
||||
:target: https://readthedocs.org/projects/python-qutescript
|
||||
:alt: Documentation Status
|
||||
|
||||
.. |travis| image:: https://travis-ci.org/hiway/python-qutescript.svg?branch=master
|
||||
:alt: Travis-CI Build Status
|
||||
:target: https://travis-ci.org/hiway/python-qutescript
|
||||
|
||||
.. |version| image:: https://img.shields.io/pypi/v/qutescript.svg
|
||||
:alt: PyPI Package latest release
|
||||
:target: https://pypi.python.org/pypi/qutescript
|
||||
|
||||
.. |commits-since| image:: https://img.shields.io/github/commits-since/hiway/python-qutescript/v0.1.0.svg
|
||||
:alt: Commits since latest release
|
||||
:target: https://github.com/hiway/python-qutescript/compare/v0.1.0...master
|
||||
|
||||
.. |wheel| image:: https://img.shields.io/pypi/wheel/qutescript.svg
|
||||
:alt: PyPI Wheel
|
||||
:target: https://pypi.python.org/pypi/qutescript
|
||||
|
||||
.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/qutescript.svg
|
||||
:alt: Supported versions
|
||||
:target: https://pypi.python.org/pypi/qutescript
|
||||
|
||||
.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/qutescript.svg
|
||||
:alt: Supported implementations
|
||||
:target: https://pypi.python.org/pypi/qutescript
|
||||
|
||||
|
||||
.. end-badges
|
||||
|
||||
Painless userscripts for qutebrowser.
|
||||
|
||||
* Free software: BSD license
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
::
|
||||
|
||||
pip install qutescript
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
https://python-qutescript.readthedocs.io/
|
||||
|
||||
Development
|
||||
===========
|
||||
|
||||
To run the all tests run::
|
||||
|
||||
tox
|
||||
|
||||
Note, to combine the coverage data from all the tox environments run:
|
||||
|
||||
.. list-table::
|
||||
:widths: 10 90
|
||||
:stub-columns: 1
|
||||
|
||||
- - Windows
|
||||
- ::
|
||||
|
||||
set PYTEST_ADDOPTS=--cov-append
|
||||
tox
|
||||
|
||||
- - Other
|
||||
- ::
|
||||
|
||||
PYTEST_ADDOPTS=--cov-append tox
|
@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import os
|
||||
import sys
|
||||
from os.path import abspath
|
||||
from os.path import dirname
|
||||
from os.path import exists
|
||||
from os.path import join
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
base_path = dirname(dirname(abspath(__file__)))
|
||||
print("Project path: {0}".format(base_path))
|
||||
env_path = join(base_path, ".tox", "bootstrap")
|
||||
if sys.platform == "win32":
|
||||
bin_path = join(env_path, "Scripts")
|
||||
else:
|
||||
bin_path = join(env_path, "bin")
|
||||
if not exists(env_path):
|
||||
import subprocess
|
||||
|
||||
print("Making bootstrap env in: {0} ...".format(env_path))
|
||||
try:
|
||||
subprocess.check_call(["virtualenv", env_path])
|
||||
except subprocess.CalledProcessError:
|
||||
subprocess.check_call([sys.executable, "-m", "virtualenv", env_path])
|
||||
print("Installing `jinja2` into bootstrap environment...")
|
||||
subprocess.check_call([join(bin_path, "pip"), "install", "jinja2"])
|
||||
activate = join(bin_path, "activate_this.py")
|
||||
# noinspection PyCompatibility
|
||||
exec(compile(open(activate, "rb").read(), activate, "exec"), dict(__file__=activate))
|
||||
|
||||
import jinja2
|
||||
|
||||
import subprocess
|
||||
|
||||
jinja = jinja2.Environment(
|
||||
loader=jinja2.FileSystemLoader(join(base_path, "ci", "templates")),
|
||||
trim_blocks=True,
|
||||
lstrip_blocks=True,
|
||||
keep_trailing_newline=True
|
||||
)
|
||||
|
||||
tox_environments = [
|
||||
line.strip()
|
||||
# WARNING: 'tox' must be installed globally or in the project's virtualenv
|
||||
for line in subprocess.check_output(['tox', '--listenvs'], universal_newlines=True).splitlines()
|
||||
]
|
||||
tox_environments = [line for line in tox_environments if line not in ['clean', 'report', 'docs', 'check']]
|
||||
|
||||
for name in os.listdir(join("ci", "templates")):
|
||||
with open(join(base_path, name), "w") as fh:
|
||||
fh.write(jinja.get_template(name).render(tox_environments=tox_environments))
|
||||
print("Wrote {}".format(name))
|
||||
print("DONE.")
|
@ -0,0 +1,36 @@
|
||||
language: python
|
||||
sudo: false
|
||||
cache: pip
|
||||
env:
|
||||
global:
|
||||
- LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
|
||||
- SEGFAULT_SIGNALS=all
|
||||
matrix:
|
||||
- TOXENV=check
|
||||
- TOXENV=docs
|
||||
matrix:
|
||||
include:
|
||||
{%- for env in tox_environments %}{{ '' }}
|
||||
- python: '{{ '{0[0]}-5.4'.format(env.split('-')) if env.startswith('pypy') else '{0[2]}.{0[3]}'.format(env) }}'
|
||||
env:
|
||||
- TOXENV={{ env }},report
|
||||
{%- endfor %}{{ '' }}
|
||||
before_install:
|
||||
- python --version
|
||||
- uname -a
|
||||
- lsb_release -a
|
||||
install:
|
||||
- pip install tox
|
||||
- virtualenv --version
|
||||
- easy_install --version
|
||||
- pip --version
|
||||
- tox --version
|
||||
script:
|
||||
- tox -v
|
||||
after_failure:
|
||||
- more .tox/log/* | cat
|
||||
- more .tox/*/log/* | cat
|
||||
notifications:
|
||||
email:
|
||||
on_success: never
|
||||
on_failure: always
|
@ -0,0 +1 @@
|
||||
.. include:: ../AUTHORS.rst
|
@ -0,0 +1 @@
|
||||
.. include:: ../CHANGELOG.rst
|
@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
|
||||
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx.ext.autosummary',
|
||||
'sphinx.ext.coverage',
|
||||
'sphinx.ext.doctest',
|
||||
'sphinx.ext.extlinks',
|
||||
'sphinx.ext.ifconfig',
|
||||
'sphinx.ext.napoleon',
|
||||
'sphinx.ext.todo',
|
||||
'sphinx.ext.viewcode',
|
||||
]
|
||||
if os.getenv('SPELLCHECK'):
|
||||
extensions += 'sphinxcontrib.spelling',
|
||||
spelling_show_suggestions = True
|
||||
spelling_lang = 'en_US'
|
||||
|
||||
source_suffix = '.rst'
|
||||
master_doc = 'index'
|
||||
project = 'qutescript'
|
||||
year = '2017'
|
||||
author = 'Harshad Sharma'
|
||||
copyright = '{0}, {1}'.format(year, author)
|
||||
version = release = '0.1.0'
|
||||
|
||||
pygments_style = 'trac'
|
||||
templates_path = ['.']
|
||||
extlinks = {
|
||||
'issue': ('https://github.com/hiway/python-qutescript/issues/%s', '#'),
|
||||
'pr': ('https://github.com/hiway/python-qutescript/pull/%s', 'PR #'),
|
||||
}
|
||||
# on_rtd is whether we are on readthedocs.org
|
||||
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
|
||||
|
||||
if not on_rtd: # only set the theme if we're building docs locally
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
|
||||
html_use_smartypants = True
|
||||
html_last_updated_fmt = '%b %d, %Y'
|
||||
html_split_index = False
|
||||
html_sidebars = {
|
||||
'**': ['searchbox.html', 'globaltoc.html', 'sourcelink.html'],
|
||||
}
|
||||
html_short_title = '%s-%s' % (project, version)
|
||||
|
||||
napoleon_use_ivar = True
|
||||
napoleon_use_rtype = False
|
||||
napoleon_use_param = False
|
@ -0,0 +1 @@
|
||||
.. include:: ../CONTRIBUTING.rst
|
@ -0,0 +1,22 @@
|
||||
========
|
||||
Contents
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
readme
|
||||
installation
|
||||
usage
|
||||
reference/index
|
||||
contributing
|
||||
authors
|
||||
changelog
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
||||
|
@ -0,0 +1,7 @@
|
||||
============
|
||||
Installation
|
||||
============
|
||||
|
||||
At the command line::
|
||||
|
||||
pip install qutescript
|
@ -0,0 +1 @@
|
||||
.. include:: ../README.rst
|
@ -0,0 +1,7 @@
|
||||
Reference
|
||||
=========
|
||||
|
||||
.. toctree::
|
||||
:glob:
|
||||
|
||||
qutescript*
|
@ -0,0 +1,9 @@
|
||||
qutescript
|
||||
==========
|
||||
|
||||
.. testsetup::
|
||||
|
||||
from qutescript import *
|
||||
|
||||
.. automodule:: qutescript
|
||||
:members:
|
@ -0,0 +1,3 @@
|
||||
sphinx>=1.3
|
||||
sphinx-rtd-theme
|
||||
-e .
|
@ -0,0 +1,11 @@
|
||||
builtin
|
||||
builtins
|
||||
classmethod
|
||||
staticmethod
|
||||
classmethods
|
||||
staticmethods
|
||||
args
|
||||
kwargs
|
||||
callstack
|
||||
Changelog
|
||||
Indices
|
@ -0,0 +1,7 @@
|
||||
=====
|
||||
Usage
|
||||
=====
|
||||
|
||||
To use qutescript in a project::
|
||||
|
||||
import qutescript
|
@ -0,0 +1,35 @@
|
||||
[bdist_wheel]
|
||||
universal = 1
|
||||
|
||||
[flake8]
|
||||
max-line-length = 140
|
||||
exclude = tests/*,*/migrations/*,*/south_migrations/*
|
||||
|
||||
[tool:pytest]
|
||||
norecursedirs =
|
||||
.git
|
||||
.tox
|
||||
.env
|
||||
dist
|
||||
build
|
||||
south_migrations
|
||||
migrations
|
||||
python_files =
|
||||
test_*.py
|
||||
*_test.py
|
||||
tests.py
|
||||
addopts =
|
||||
-rxEfsw
|
||||
--strict
|
||||
--doctest-modules
|
||||
--doctest-glob=\*.rst
|
||||
--tb=short
|
||||
|
||||
[isort]
|
||||
force_single_line = True
|
||||
line_length = 120
|
||||
known_first_party = qutescript
|
||||
default_section = THIRDPARTY
|
||||
forced_separate = test_qutescript
|
||||
not_skip = __init__.py
|
||||
skip = migrations, south_migrations
|
@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- encoding: utf-8 -*-
|
||||
from __future__ import absolute_import
|
||||
from __future__ import print_function
|
||||
|
||||
import io
|
||||
import re
|
||||
from glob import glob
|
||||
from os.path import basename
|
||||
from os.path import dirname
|
||||
from os.path import join
|
||||
from os.path import splitext
|
||||
|
||||
from setuptools import find_packages
|
||||
from setuptools import setup
|
||||
|
||||
|
||||
def read(*names, **kwargs):
|
||||
return io.open(
|
||||
join(dirname(__file__), *names),
|
||||
encoding=kwargs.get('encoding', 'utf8')
|
||||
).read()
|
||||
|
||||
|
||||
setup(
|
||||
name='qutescript',
|
||||
version='0.1.0',
|
||||
license='BSD',
|
||||
description='Painless userscripts for qutebrowser.',
|
||||
long_description='%s\n%s' % (
|
||||
re.compile('^.. start-badges.*^.. end-badges', re.M | re.S).sub('', read('README.rst')),
|
||||
re.sub(':[a-z]+:`~?(.*?)`', r'``\1``', read('CHANGELOG.rst'))
|
||||
),
|
||||
author='Harshad Sharma',
|
||||
author_email='harshad@sharma.io',
|
||||
url='https://github.com/hiway/python-qutescript',
|
||||
packages=find_packages('src'),
|
||||
package_dir={'': 'src'},
|
||||
py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')],
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
classifiers=[
|
||||
# complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'Intended Audience :: Developers',
|
||||
'License :: OSI Approved :: BSD License',
|
||||
'Operating System :: Unix',
|
||||
'Operating System :: POSIX',
|
||||
'Operating System :: Microsoft :: Windows',
|
||||
'Programming Language :: Python',
|
||||
'Programming Language :: Python :: 2.7',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.3',
|
||||
'Programming Language :: Python :: 3.4',
|
||||
'Programming Language :: Python :: 3.5',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
'Programming Language :: Python :: Implementation :: CPython',
|
||||
'Programming Language :: Python :: Implementation :: PyPy',
|
||||
# uncomment if you test on these interpreters:
|
||||
# 'Programming Language :: Python :: Implementation :: IronPython',
|
||||
# 'Programming Language :: Python :: Implementation :: Jython',
|
||||
# 'Programming Language :: Python :: Implementation :: Stackless',
|
||||
'Topic :: Utilities',
|
||||
],
|
||||
keywords=[
|
||||
# eg: 'keyword1', 'keyword2', 'keyword3',
|
||||
],
|
||||
install_requires=[
|
||||
# eg: 'aspectlib==1.1.1', 'six>=1.7',
|
||||
],
|
||||
extras_require={
|
||||
# eg:
|
||||
# 'rst': ['docutils>=0.11'],
|
||||
# ':python_version=="2.6"': ['argparse'],
|
||||
},
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'qutescript = qutescript.cli:main',
|
||||
]
|
||||
},
|
||||
)
|
@ -0,0 +1 @@
|
||||
__version__ = "0.1.0"
|
@ -0,0 +1,14 @@
|
||||
"""
|
||||
Entrypoint module, in case you use `python -mqutescript`.
|
||||
|
||||
|
||||
Why does this file exist, and why __main__? For more info, read:
|
||||
|
||||
- https://www.python.org/dev/peps/pep-0338/
|
||||
- https://docs.python.org/2/using/cmdline.html#cmdoption-m
|
||||
- https://docs.python.org/3/using/cmdline.html#cmdoption-m
|
||||
"""
|
||||
from qutescript.cli import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -0,0 +1,27 @@
|
||||
"""
|
||||
Module that contains the command line app.
|
||||
|
||||
Why does this file exist, and why not put this in __main__?
|
||||
|
||||
You might be tempted to import things from __main__ later, but that will cause
|
||||
problems: the code will get executed twice:
|
||||
|
||||
- When you run `python -mqutescript` python will execute
|
||||
``__main__.py`` as a script. That means there won't be any
|
||||
``qutescript.__main__`` in ``sys.modules``.
|
||||
- When you import __main__ it will get executed again (as a module) because
|
||||
there's no ``qutescript.__main__`` in ``sys.modules``.
|
||||
|
||||
Also see (1) from http://click.pocoo.org/5/setuptools/#setuptools-integration
|
||||
"""
|
||||
import argparse
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(description='Command description.')
|
||||
parser.add_argument('names', metavar='NAME', nargs=argparse.ZERO_OR_MORE,
|
||||
help="A name of something.")
|
||||
|
||||
|
||||
def main(args=None):
|
||||
args = parser.parse_args(args=args)
|
||||
print(args.names)
|
@ -0,0 +1,6 @@
|
||||
|
||||
from qutescript.cli import main
|
||||
|
||||
|
||||
def test_main():
|
||||
main([])
|
@ -0,0 +1,104 @@
|
||||
; a generative tox configuration, see: https://testrun.org/tox/latest/config.html#generative-envlist
|
||||
|
||||
[tox]
|
||||
envlist =
|
||||
clean,
|
||||
check,
|
||||
{py27,py33,py34,py35,py36,pypy},
|
||||
report,
|
||||
docs
|
||||
|
||||
[testenv]
|
||||
basepython =
|
||||
pypy: {env:TOXPYTHON:pypy}
|
||||
{py27,docs,spell}: {env:TOXPYTHON:python2.7}
|
||||
py33: {env:TOXPYTHON:python3.3}
|
||||
py34: {env:TOXPYTHON:python3.4}
|
||||
py35: {env:TOXPYTHON:python3.5}
|
||||
py36: {env:TOXPYTHON:python3.6}
|
||||
{bootstrap,clean,check,report,coveralls,codecov}: {env:TOXPYTHON:python3}
|
||||
setenv =
|
||||
PYTHONPATH={toxinidir}/tests
|
||||
PYTHONUNBUFFERED=yes
|
||||
passenv =
|
||||
*
|
||||
usedevelop = false
|
||||
deps =
|
||||
pytest
|
||||
pytest-travis-fold
|
||||
pytest-cov
|
||||
commands =
|
||||
{posargs:py.test --cov --cov-report=term-missing -vv tests}
|
||||
|
||||
[testenv:bootstrap]
|
||||
deps =
|
||||
jinja2
|
||||
matrix
|
||||
skip_install = true
|
||||
commands =
|
||||
python ci/bootstrap.py
|
||||
passenv =
|
||||
*
|
||||
|
||||
[testenv:spell]
|
||||
setenv =
|
||||
SPELLCHECK=1
|
||||
commands =
|
||||
sphinx-build -b spelling docs dist/docs
|
||||
skip_install = true
|
||||
deps =
|
||||
-r{toxinidir}/docs/requirements.txt
|
||||
sphinxcontrib-spelling
|
||||
pyenchant
|
||||
|
||||
[testenv:docs]
|
||||
deps =
|
||||
-r{toxinidir}/docs/requirements.txt
|
||||
commands =
|
||||
sphinx-build {posargs:-E} -b html docs dist/docs
|
||||
sphinx-build -b linkcheck docs dist/docs
|
||||
|
||||
[testenv:check]
|
||||
deps =
|
||||
docutils
|
||||
check-manifest
|
||||
flake8
|
||||
readme-renderer
|
||||
pygments
|
||||
isort
|
||||
skip_install = true
|
||||
commands =
|
||||
python setup.py check --strict --metadata --restructuredtext
|
||||
check-manifest {toxinidir}
|
||||
flake8 src tests setup.py
|
||||
isort --verbose --check-only --diff --recursive src tests setup.py
|
||||
|
||||
[testenv:coveralls]
|
||||
deps =
|
||||
coveralls
|
||||
skip_install = true
|
||||
commands =
|
||||
coveralls []
|
||||
|
||||
[testenv:codecov]
|
||||
deps =
|
||||
codecov
|
||||
skip_install = true
|
||||
commands =
|
||||
coverage xml --ignore-errors
|
||||
codecov []
|
||||
|
||||
|
||||
[testenv:report]
|
||||
deps = coverage
|
||||
skip_install = true
|
||||
commands =
|
||||
coverage combine --append
|
||||
coverage report
|
||||
coverage html
|
||||
|
||||
[testenv:clean]
|
||||
commands = coverage erase
|
||||
skip_install = true
|
||||
deps = coverage
|
||||
|
Loading…
Reference in New Issue