[Python-modules-commits] [python-jira] 01/02: New upstream version 1.0.10

Sophie Brun sbrun-guest at moszumanska.debian.org
Thu Oct 26 13:06:31 UTC 2017


This is an automated email from the git hooks/post-receive script.

sbrun-guest pushed a commit to branch debian/master
in repository python-jira.

commit 01eb974867961334a03ab345ee156c0d7576a0ac
Author: Sophie Brun <sophie at freexian.com>
Date:   Thu Oct 26 11:03:09 2017 +0200

    New upstream version 1.0.10
---
 .coveragerc                 |   14 +
 .coveralls.yml              |    1 +
 .gitchangelog.rc            |  180 +++
 .gitignore                  |   28 +
 .gitreview                  |    5 +
 .travis.yml                 |   70 +
 AUTHORS.rst                 |   12 +
 LICENSE                     |   19 +
 MANIFEST.in                 |    5 +
 Makefile                    |  124 ++
 README.rst                  |  125 ++
 build/.gitignore            |    4 +
 dist/.gitignore             |    4 +
 docs/Makefile               |  153 +++
 docs/_static/.placeholder   |    0
 docs/_static/python-16.png  |  Bin 0 -> 1404 bytes
 docs/_static/python-256.png |  Bin 0 -> 11455 bytes
 docs/_static/python-32.png  |  Bin 0 -> 1374 bytes
 docs/_static/python-64.png  |  Bin 0 -> 2596 bytes
 docs/advanced.rst           |   29 +
 docs/api.rst                |   37 +
 docs/conf.py                |  248 ++++
 docs/contributing.rst       |   17 +
 docs/examples.rst           |  353 +++++
 docs/extra/jira.xml         |    4 +
 docs/index.rst              |   40 +
 docs/installation.rst       |   40 +
 docs/jirashell.rst          |   63 +
 docs/templates/.placeholder |    0
 examples/basic_auth.py      |   22 +
 examples/basic_use.py       |   50 +
 examples/greenhopper.py     |   27 +
 hooks/pre-commit            |    4 +
 jira/__init__.py            |   36 +
 jira/client.py              | 3079 +++++++++++++++++++++++++++++++++++++++++++
 jira/config.py              |   98 ++
 jira/exceptions.py          |   62 +
 jira/jirashell.py           |  261 ++++
 jira/resilientsession.py    |  168 +++
 jira/resources.py           |  904 +++++++++++++
 jira/utils/LICENSE          |   27 +
 jira/utils/__init__.py      |   84 ++
 jira/utils/lru_cache.py     |  170 +++
 jira/utils/version.py       |   82 ++
 pytest.ini                  |   19 +
 release.sh                  |   61 +
 requirements-all.txt        |    3 +
 requirements-dev.txt        |   27 +
 requirements-opt.txt        |    9 +
 requirements.txt            |   13 +
 setup.cfg                   |   85 ++
 setup.py                    |   37 +
 test.local                  |   18 +
 tests/icon.png              |  Bin 0 -> 13123 bytes
 tests/id_rsa                |   51 +
 tests/id_rsa.pub            |    1 +
 tests/start-jira.sh         |   12 +
 tests/stop-jira.sh          |    5 +
 tests/test_client.py        |  129 ++
 tests/tests.py              | 2119 +++++++++++++++++++++++++++++
 tox.ini                     |   38 +
 61 files changed, 9276 insertions(+)

diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 0000000..c2ac531
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,14 @@
+[run]
+data_file = .coverage
+source = jira
+branch = True
+
+[report]
+exclude_lines =
+    pragma: no cover
+    def __repr__
+    raise AssertionError
+    raise NotImplementedError
+    if __name__ == .__main__.:
+
+ignore_errors = True
diff --git a/.coveralls.yml b/.coveralls.yml
new file mode 100644
index 0000000..56ddab6
--- /dev/null
+++ b/.coveralls.yml
@@ -0,0 +1 @@
+repo_token: TagM2COnwKYL3YaS7He9DkBPA7GFDQwsH
diff --git a/.gitchangelog.rc b/.gitchangelog.rc
new file mode 100644
index 0000000..4bda93d
--- /dev/null
+++ b/.gitchangelog.rc
@@ -0,0 +1,180 @@
+##
+## Format
+##
+##   ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
+##
+## Description
+##
+##   ACTION is one of 'chg', 'fix', 'new'
+##
+##       Is WHAT the change is about.
+##
+##       'chg' is for refactor, small improvement, cosmetic changes...
+##       'fix' is for bug fixes
+##       'new' is for new features, big improvement
+##
+##   AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
+##
+##       Is WHO is concerned by the change.
+##
+##       'dev'  is for developpers (API changes, refactors...)
+##       'usr'  is for final users (UI changes)
+##       'pkg'  is for packagers   (packaging changes)
+##       'test' is for testers     (test only related changes)
+##       'doc'  is for doc guys    (doc only changes)
+##
+##   COMMIT_MSG is ... well ... the commit message itself.
+##
+##   TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
+##
+##       They are preceded with a '!' or a '@' (prefer the former, as the
+##       latter is wrongly interpreted in github.) Commonly used tags are:
+##
+##       'refactor' is obviously for refactoring code only
+##       'minor' is for a very meaningless change (a typo, adding a comment)
+##       'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
+##       'wip' is for partial functionality but complete subfunctionality.
+##
+## Example:
+##
+##   new: usr: support of bazaar implemented
+##   chg: re-indentend some lines !cosmetic
+##   new: dev: updated code to be compatible with last version of killer lib.
+##   fix: pkg: updated year of licence coverage.
+##   new: test: added a bunch of test around user usability of feature X.
+##   fix: typo in spelling my name in comment. !minor
+##
+##   Please note that multi-line commit message are supported, and only the
+##   first line will be considered as the "summary" of the commit message. So
+##   tags, and other rules only applies to the summary.  The body of the commit
+##   message will be displayed in the changelog without reformatting.
+
+
+##
+## ``ignore_regexps`` is a line of regexps
+##
+## Any commit having its full commit message matching any regexp listed here
+## will be ignored and won't be reported in the changelog.
+##
+ignore_regexps = [
+    # ignore trivial fixes
+    r'Auto-generating.*',
+    r'spelling|typo',
+    r'bump.*version',
+    # all merged commits in the PR will appear in changelog anyway so
+    # the PR merge commit is not needed.
+    r'Merge pull request #\d+ from.*'
+]
+
+
+## ``section_regexps`` is a list of 2-tuples associating a string label and a
+## list of regexp
+##
+## Commit messages will be classified in sections thanks to this. Section
+## titles are the label, and a commit is classified under this section if any
+## of the regexps associated is matching.
+##
+section_regexps = [
+    ('Other', None),  ## Match all lines
+]
+
+
+## ``body_process`` is a callable
+##
+## This callable will be given the original body and result will
+## be used in the changelog.
+##
+## Available constructs are:
+##
+##   - any python callable that take one txt argument and return txt argument.
+##
+##   - ReSub(pattern, replacement): will apply regexp substitution.
+##
+##   - Indent(chars="  "): will indent the text with the prefix
+##     Please remember that template engines gets also to modify the text and
+##     will usually indent themselves the text if needed.
+##
+##   - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
+##
+##   - noop: do nothing
+##
+##   - ucfirst: ensure the first letter is uppercase.
+##     (usually used in the ``subject_process`` pipeline)
+##
+##   - final_dot: ensure text finishes with a dot
+##     (usually used in the ``subject_process`` pipeline)
+##
+##   - strip: remove any spaces before or after the content of the string
+##
+## Additionally, you can `pipe` the provided filters, for instance:
+#body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars="  ")
+#body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
+#body_process = noop
+empty_string = lambda _: ''
+body_process = empty_string
+
+
+## ``subject_process`` is a callable
+##
+## This callable will be given the original subject and result will
+## be used in the changelog.
+##
+## Available constructs are those listed in ``body_process`` doc.
+subject_process = (strip |
+    ReSub(r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$', r'\4') |
+    ucfirst | final_dot)
+
+
+## ``tag_filter_regexp`` is a regexp
+##
+## Tags that will be used for the changelog must match this regexp.
+##
+tag_filter_regexp = r'^[0-9]+\.[0-9]+(\.[0-9]+)?$'
+
+
+## ``unreleased_version_label`` is a string
+##
+## This label will be used as the changelog Title of the last set of changes
+## between last valid tag and HEAD if any.
+unreleased_version_label = "Upcoming release (unreleased changes)"
+
+
+## ``output_engine`` is a callable
+##
+## This will change the output format of the generated changelog file
+##
+## Available choices are:
+##
+##   - rest_py
+##
+##        Legacy pure python engine, outputs ReSTructured text.
+##        This is the default.
+##
+##   - mustache(<template_name>)
+##
+##        Template name could be any of the available templates in
+##        ``templates/mustache/*.tpl``.
+##        Requires python package ``pystache``.
+##        Examples:
+##           - mustache("markdown")
+##           - mustache("restructuredtext")
+##
+##   - makotemplate(<template_name>)
+##
+##        Template name could be any of the available templates in
+##        ``templates/mako/*.tpl``.
+##        Requires python package ``mako``.
+##        Examples:
+##           - makotemplate("restructuredtext")
+##
+output_engine = rest_py
+#output_engine = mustache("restructuredtext")
+#output_engine = mustache("markdown")
+#output_engine = makotemplate("restructuredtext")
+
+
+## ``include_merge`` is a boolean
+##
+## This option tells git-log whether to include merge commits in the log.
+## The default is to include them.
+include_merge = True
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..73124ac
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,28 @@
+.idea/
+*.bak
+*.egg
+*.egg-info/
+*.pyc
+.cache/
+.coverage
+.coverage.*
+.eggs/
+.tox/
+amps-standalone
+coverage.xml
+docs/_build
+docs/build
+encrypt-credentials.sh
+reports
+reports/
+setenv.sh
+settings.py
+test-quick
+tests/settings.py
+tests/test-reports-*/*
+**/*.log
+/.python-version
+/CHANGELOG
+/ChangeLog
+/AUTHORS
+/tests/build
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..168150f
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=review.gerrithub.io
+port=29418
+project=pycontribs/jira.git
+defaultbranch=develop
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..0579639
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,70 @@
+language: python
+sudo: false
+matrix:
+  fast_finish: false
+os:
+- linux
+python:
+- '2.7'
+- '3.4'
+- '3.5'
+- '3.6'
+install:
+- pip -q --log dist/pip.log install --upgrade pip setuptools tox-travis py wheel
+- python setup.py sdist bdist_wheel install
+- pip install ./dist/jira-*.whl
+- pip --version
+script:
+- export PACKAGE_NAME=$(python setup.py --name)
+- export PACKAGE_VERSION=$(python setup.py --version)
+- python setup.py --version
+- tox --installpkg ./dist/jira-*.whl --travis-after
+# validates that the build source distribution is installable using the old easy_install
+- pip uninstall -y jira && easy_install ./dist/jira-*.tar.gz
+after_success:
+- coveralls
+- bash <(curl -s https://codecov.io/bash)
+- requires.io update-site -t ac3bbcca32ae03237a6aae2b02eb9411045489bb -r
+notifications:
+  email:
+  - pycontribs at googlegroups.com
+  - sorin.sbarnea at gmail.com
+deploy:
+- provider: releases
+  api_key:
+    secure: gr9iOcQjdoAyUAim6FWKzJI9MBaJo9XKfGQGu7wdPXUFhg80Rp6GLJsowP+aU94NjXM1UQlVHDAy627WtjBlLH2SvmVEIIr7+UKBopBYuXG5jJ1m3wOZE+4f1Pqe9bqFc1DxgucqE8qF0sC24fIbNM2ToeyYrxrS6RoL2gRrX2I=
+  file:
+  - dist/$PACKAGE_NAME-$PACKAGE_VERSION*
+  - ChangeLog
+  skip_cleanup: true
+  on:
+    tags: false
+    python: 2.7
+    condition: $TOXENV != docs
+- provider: pypi
+  user: sorin
+  password:
+    secure: E0cjANF7SLBdYrsnWLK8X/xWznqkF0JrP/DVfDazPzUYH6ynFeneyofzNJQPLTLsqe1eKXhuUJ/Sbl+RHFB0ySo/j/7NfYd/9pm8hpUkGCvR09IwtvMLgWKp3k10NWab03o2GOkSJSrLvZofyZBGR40wwu2O9uXPCb2rvucCGbw=
+  distributions: sdist bdist_wheel
+  skip_cleanup: true
+  on:
+    tags: true
+    python: 2.7
+    condition: $TOXENV != docs
+    branch: master
+- provider: pypi
+  server: https://testpypi.python.org/pypi
+  user: sorins
+  password:
+    secure: E0cjANF7SLBdYrsnWLK8X/xWznqkF0JrP/DVfDazPzUYH6ynFeneyofzNJQPLTLsqe1eKXhuUJ/Sbl+RHFB0ySo/j/7NfYd/9pm8hpUkGCvR09IwtvMLgWKp3k10NWab03o2GOkSJSrLvZofyZBGR40wwu2O9uXPCb2rvucCGbw=
+  distributions: sdist bdist_wheel
+  skip_cleanup: true
+  on:
+    tags: false
+    python: 2.7
+    condition: $TOXENV != docs
+    branch: develop
+env:
+  global:
+  - secure: fuXwQL+KHQ96XkAFl2uQc8eK8dAjrgkup46tck/UGjVpdv1PT/yHmBKrvpFjDa50ueGbtBwTdKAwhyAmYuiZCk2IYHzdvBylCZBBji2FSpaTM59CVwgkVT6tx3HHO83X0mEX6ih9TJvZD5XhX+YUjopnseRXRq3ey3JZJXWN4RM=
+  - secure: "pGQGM5YmHvOgaKihOyzb3k6bdqLQnZQ2OXO9QrfXlXwtop3zvZQi80Q+01l230x2psDWlwvqWTknAjAt1w463fYXPwpoSvKVCsLSSbjrf2l56nrDqnoir+n0CBy288+eIdaGEfzcxDiuULeKjlg08zrqjcjLjW0bDbBrlTXsb5U="
diff --git a/AUTHORS.rst b/AUTHORS.rst
new file mode 100644
index 0000000..8d2a106
--- /dev/null
+++ b/AUTHORS.rst
@@ -0,0 +1,12 @@
+If you are a contributor, and you are not listed here, feel free to add your name via a pull request.
+
+Development Team (PyContribs)
+`````````````````````````````
+- Ben Speakmon <ben.speakmon at gmail.com> - Original Author
+- Sorin Sbarnea <sorin.sbarnea at gmail.com> _ Current Maintainer
+
+Patches and Suggestions
+```````````````````````
+- ... and many others.
+
+Thank you!
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..3cd17f7
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2012, Atlassian Pty Ltd.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+disclaimer.
+
+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.
\ No newline at end of file
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..ef01a05
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,5 @@
+include LICENSE README.rst
+include requirements.txt
+include requirements-dev.txt
+include requirements-opt.txt
+prune tests
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..10afc3f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,124 @@
+all: info clean flake8 test docs upload release
+.PHONY: all docs upload info req
+
+PACKAGE_NAME := $(shell python setup.py --name)
+PACKAGE_VERSION := $(shell python setup.py --version)
+PYTHON_PATH := $(shell which python)
+PLATFORM := $(shell uname -s | awk '{print tolower($0)}')
+DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
+PYTHON_VERSION := $(shell python3 -c "import sys; print('py%s%s' % sys.version_info[0:2] + ('-conda' if 'conda' in sys.version or 'Continuum' in sys.version else ''))")
+PYENV_HOME := $(DIR)/.tox/$(PYTHON_VERSION)-$(PLATFORM)/
+ifneq (,$(findstring conda,$(PYTHON_VERSION)))
+CONDA:=1
+endif
+
+ifndef GIT_BRANCH
+GIT_BRANCH=$(shell git branch | sed -n '/\* /s///p')
+endif
+
+info:
+	@echo "INFO:	Building $(PACKAGE_NAME):$(PACKAGE_VERSION) on $(GIT_BRANCH) branch"
+	@echo "INFO:	Python $(PYTHON_VERSION) from $(PYENV_HOME) [$(CONDA)]"
+
+clean:
+	@find . -name "*.pyc" -delete
+	@rm -rf .tox/*-$(PLATFORM) .tox/docs dist/* .tox/dist .tox/log docs/build/*
+
+package:
+	python setup.py sdist bdist_wheel build_sphinx
+
+req:
+	@$(PYENV_HOME)/bin/requires.io update-site -t ac3bbcca32ae03237a6aae2b02eb9411045489bb -r $(PACKAGE_NAME)
+
+install: prepare
+	$(PYENV_HOME)/bin/pip install .
+
+install-sdk:
+	# https://developer.atlassian.com/docs/getting-started/set-up-the-atlassian-plugin-sdk-and-build-a-project/install-the-atlassian-sdk-on-a-linux-or-mac-system#InstalltheAtlassianSDKonaLinuxorMacsystem-Homebrew
+	which atlas-run-standalone || brew tap atlassian/tap && brew install atlassian/tap/atlassian-plugin-sdk
+
+uninstall:
+	$(PYENV_HOME)/bin/pip uninstall -y $(PACKAGE_NAME)
+
+venv: $(PYENV_HOME)/bin/activate
+
+# virtual environment depends on requriements files
+$(PYENV_HOME)/bin/activate: requirements*.txt
+	@echo "INFO:	(Re)creating virtual environment..."
+ifdef CONDA
+	test -e $(PYENV_HOME)/bin/activate || conda create -y --prefix $(PYENV_HOME) pip
+else
+	test -e $(PYENV_HOME)/bin/activate || virtualenv --python=$(PYTHON_PATH) --system-site-packages $(PYENV_HOME)
+endif
+	$(PYENV_HOME)/bin/pip install -q -r requirements.txt -r requirements-opt.txt -r requirements-dev.txt
+	touch $(PYENV_HOME)/bin/activate
+
+prepare: venv
+	pyenv install -s 2.7.13
+	pyenv install -s 3.4.5
+	pyenv install -s 3.5.2
+	pyenv install -s 3.6.0
+	pyenv local 2.7.13 3.4.5 3.5.2 3.6.0
+	@echo "INFO:	=== Prearing to run for package:$(PACKAGE_NAME) platform:$(PLATFORM) py:$(PYTHON_VERSION) dir:$(DIR) ==="
+	if [ -f ${HOME}/testspace/testspace ]; then ${HOME}/testspace/testspace config url ${TESTSPACE_TOKEN}@pycontribs.testspace.com/jira/tests ; fi;
+
+testspace:
+	${HOME}/testspace/testspace publish build/results.xml
+
+flake8: venv
+	@echo "INFO:	flake8"
+	$(PYENV_HOME)/bin/python -m flake8
+	$(PYENV_HOME)/bin/python -m flake8 --install-hook 2>/dev/null || true
+
+test: prepare flake8
+	@echo "INFO:	test"
+	$(PYENV_HOME)/bin/python setup.py build test build_sphinx sdist bdist_wheel check --restructuredtext --strict
+
+test-cli:
+	$(PYENV_HOME)/bin/ipython -c "import jira; j = jira.JIRA('https://pycontribs.atlassian.net'); j.server_info()" -i
+
+test-all:
+	@echo "INFO:	test-all (extended/matrix tests)"
+	# tox should not run inside virtualenv because it does create and use multiple virtualenvs
+	pip install -q tox tox-pyenv
+	python -m tox --skip-missing-interpreters true
+
+
+docs:
+	@echo "INFO:	Building the docs"
+	$(PYENV_HOME)/bin/pip install sphinx
+	$(PYENV_HOME)/bin/python setup.py build_sphinx
+	@mkdir -p docs/build/docset
+	@mkdir -p docs/build/html/docset
+# cannot put doc2dash into requirements.txt file because is using pinned requirements
+#	@DOC2DASH_OPTS=$(shell [ -d "$HOME/Library/Application Support/doc2dash/DocSets" ] && echo '--add-to-global')
+#	doc2dash --force --name jira docs/build/html --destination docs/build/docset --icon docs/_static/python-32.png --online-redirect-url https://jira.readthedocs.io/en/stable/ $(DOC2DASH_OPTS)
+#	cd docs/build/docset && tar --exclude='.DS_Store' -czf ../html/docset/jira.tgz jira.docset
+#	# TODO: publish the docs
+
+tag:
+	bumpversion --feature --no-input
+	git push origin master
+	git push --tags
+
+release: req
+ifeq ($(GIT_BRANCH),master)
+	tag
+else
+	upload
+	web
+
+	@echo "INFO:	Skipping release on this branch."
+endif
+
+upload:
+ifeq ($(GIT_BRANCH),develop)
+	@echo "INFO:	Upload package to testpypi.python.org"
+	$(PYENV_HOME)/bin/python setup.py check --restructuredtext --strict
+	$(PYENV_HOME)/bin/python setup.py sdist bdist_wheel upload -r https://testpypi.python.org/pypi
+endif
+ifeq ($(GIT_BRANCH),master)
+	@echo "INFO:	Upload package to pypi.python.org"
+	$(PYENV_HOME)/bin/python setup.py check --restructuredtext --strict
+	$(PYENV_HOME)/bin/python setup.py sdist bdist_wheel upload
+endif
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..7658627
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,125 @@
+===================
+JIRA Python Library
+===================
+
+.. image:: https://img.shields.io/pypi/v/jira.svg
+        :target: https://pypi.python.org/pypi/jira/
+
+.. image:: https://img.shields.io/pypi/l/jira.svg
+        :target: https://pypi.python.org/pypi/jira/
+
+.. image:: https://img.shields.io/pypi/dm/jira.svg
+        :target: https://pypi.python.org/pypi/jira/
+
+.. image:: https://img.shields.io/pypi/wheel/Django.svg
+        :target: https://pypi.python.org/pypi/jira/
+
+------------
+
+.. image:: https://readthedocs.org/projects/jira/badge/?version=master
+        :target: http://jira.readthedocs.io
+
+.. image:: https://api.travis-ci.org/pycontribs/jira.svg?branch=master
+        :target: https://travis-ci.org/pycontribs/jira
+
+.. image:: https://img.shields.io/pypi/status/jira.svg
+        :target: https://pypi.python.org/pypi/jira/
+
+.. image:: https://codecov.io/gh/pycontribs/jira/branch/develop/graph/badge.svg
+        :target: https://codecov.io/gh/pycontribs/jira
+
+.. image:: https://img.shields.io/bountysource/team/pycontribs/activity.svg
+        :target: https://www.bountysource.com/teams/pycontribs/issues?tracker_ids=3650997
+
+.. image:: https://requires.io/github/pycontribs/jira/requirements.svg?branch=master
+        :target: https://requires.io/github/pycontribs/jira/requirements/?branch=master
+        :alt: Requirements Status
+
+
+This library eases the use of the JIRA REST API from Python and it has been used in production for years.
+
+As this is an open-source project that is community maintained, do not be surprised if some bugs or features are not implemented quickly enough. You are always welcomed to use BountySource_ to motivate others to help.
+
+.. _BountySource: https://www.bountysource.com/teams/pycontribs/issues?tracker_ids=3650997
+
+
+Quickstart
+----------
+
+Feeling impatient? I like your style.
+
+.. code-block:: python
+
+        from jira import JIRA
+
+        jira = JIRA('https://jira.atlassian.com')
+
+        issue = jira.issue('JRA-9')
+        print issue.fields.project.key             # 'JRA'
+        print issue.fields.issuetype.name          # 'New Feature'
+        print issue.fields.reporter.displayName    # 'Mike Cannon-Brookes [Atlassian]'
+
+
+Installation
+~~~~~~~~~~~~
+
+Download and install using ``pip install jira`` or ``easy_install jira``
+
+You can also try ``pip install --user --upgrade jira`` which will install or
+upgrade jira to your user directory. Or maybe you ARE using a virtualenv_
+right?
+
+.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
+
+
+Usage
+~~~~~
+
+See the documentation_ for full details.
+
+.. _documentation: http://jira.readthedocs.org/en/latest/
+
+
+Development
+~~~~~~~~~~~
+
+Development takes place on GitHub_, where the git-flow_ branch structure is used:
+
+* ``master`` - contains the latest released code.
+* ``develop`` - (default branch) is used for development of the next release.
+* ``feature/XXX`` - feature branches are used for development of new features before they are merged to ``develop``.
+
+.. _GitHub: https://github.com/pycontribs/jira
+.. _git-flow: http://nvie.com/posts/a-successful-git-branching-model/
+
+
+Credits
+-------
+
+In additions to all the contributors we would like to thank to these companies:
+
+* Atlassian_ for developing such a powerful issue tracker and for providing a free on-demand JIRA_ instance that we can use for continous integration testing.
+* JetBrains_ for providing us with free licenses of PyCharm_
+* Travis_ for hosting our continous integration
+* Navicat_ for providing us free licenses of their powerful database client GUI tools.
+* Citrix_ for providing maintenance of the library.
+
+.. _Atlassian: https://www.atlassian.com/
+.. _JIRA: https://pycontribs.atlassian.net
+.. _JetBrains: http://www.jetbrains.com
+.. _PyCharm: http://www.jetbrains.com/pycharm/
+.. _Travis: https://travis-ci.org/
+.. _navicat: https://www.navicat.com/
+.. _Citrix: http://www.citrix.com/
+
+.. image:: https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&refresh=3600&resize_h=50&url=https://www.atlassian.com/dms/wac/images/press/Atlassian-logos/logoAtlassianPNG.png
+   :target: http://www.atlassian.com
+
+.. image:: https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&refresh=3600&resize_h=50&url=http://blog.jetbrains.com/pycharm/files/2015/12/PyCharm_400x400_Twitter_logo_white.png
+    :target: http://www.jetbrains.com/
+
+.. image:: https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&refresh=3600&resize_h=50&url=https://upload.wikimedia.org/wikipedia/en/9/90/PremiumSoft_Navicat_Premium_Logo.png
+    :target: http://www.navicat.com/
+
+.. image:: https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&refresh=3600&resize_h=50&url=https://www.citrix.com/content/dam/citrix/en_us/images/logos/citrix/citrix-logo-black.jpg
+    :target: http://www.citrix.com/
diff --git a/build/.gitignore b/build/.gitignore
new file mode 100644
index 0000000..5e7d273
--- /dev/null
+++ b/build/.gitignore
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/dist/.gitignore b/dist/.gitignore
new file mode 100644
index 0000000..5e7d273
--- /dev/null
+++ b/dist/.gitignore
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..0aece53
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,153 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/JIRAPythonClient.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/JIRAPythonClient.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/JIRAPythonClient"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/JIRAPythonClient"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/docs/_static/.placeholder b/docs/_static/.placeholder
new file mode 100644
index 0000000..e69de29
diff --git a/docs/_static/python-16.png b/docs/_static/python-16.png
new file mode 100644
index 0000000..d1c07f0
Binary files /dev/null and b/docs/_static/python-16.png differ
diff --git a/docs/_static/python-256.png b/docs/_static/python-256.png
new file mode 100644
index 0000000..e0d06ff
Binary files /dev/null and b/docs/_static/python-256.png differ
diff --git a/docs/_static/python-32.png b/docs/_static/python-32.png
new file mode 100644
index 0000000..c9a60f3
Binary files /dev/null and b/docs/_static/python-32.png differ
diff --git a/docs/_static/python-64.png b/docs/_static/python-64.png
new file mode 100644
index 0000000..68ec727
Binary files /dev/null and b/docs/_static/python-64.png differ
diff --git a/docs/advanced.rst b/docs/advanced.rst
new file mode 100644
index 0000000..78fc73f
--- /dev/null
+++ b/docs/advanced.rst
@@ -0,0 +1,29 @@
+Advanced
+********
+
+Resource Objects and Properties
+===============================
+
+The library distinguishes between two kinds of data in the JIRA REST API: *resources* and *properties*.
+
+A *resource* is a REST entity that represents the current state of something that the server owns; for example,
+the issue called "ABC-123" is a concept managed by JIRA which can be viewed as a resource obtainable at the URL
+*http://jira-server/rest/api/latest/issue/ABC-123*. All resources have a *self link*: a root-level property called *self*
+which contains the URL the resource originated from. In jira-python, resources are instances of the *Resource* object
+(or one of its subclasses) and can only be obtained from the server using the ``find()`` method. Resources may be
+connected to other resources: the issue *Resource* is connected to a user *Resource* through the ``assignee`` and
+``reporter`` fields, while the project *Resource* is connected to a project lead through another user *Resource*.
+
+.. important::
+    A resource is connected to other resources, and the client preserves this connection. In the above example,
+    the object inside the ``issue`` object at ``issue.fields.assignee`` is not just a dict -- it is a full-fledged
+    user *Resource* object. Whenever a resource contains other resources, the client will attempt to convert them
+    to the proper subclass of *Resource*.
+
+A *properties object* is a collection of values returned by JIRA in response to some query from the REST API. Their
+structure is freeform and modeled as a Python dict. Client methods return this structure for calls that do not
+produce resources. For example, the properties returned from the URL *http://jira-server/rest/api/latest/issue/createmeta*
+are designed to inform users what fields (and what values for those fields) are required to successfully create
+issues in the server's projects. Since these properties are determined by JIRA's configuration, they are not resources.
+
+The JIRA client's methods document whether they will return a *Resource* or a properties object.
diff --git a/docs/api.rst b/docs/api.rst
new file mode 100644
index 0000000..269a9fb
--- /dev/null
+++ b/docs/api.rst
@@ -0,0 +1,37 @@
+API Documentation
+*****************
+
+.. module:: jira
+
+.. contents:: Contents
+   :local:
+
+JIRA
+====
+
+.. autoclass:: JIRA
+
+Priority
+========
+
+.. autoclass:: Priority
+
+Comment
+=======
+
+.. autoclass:: Comment
+
+Worklog
+=======
+
+.. autoclass:: Worklog
+
+Watchers
+========
+
+.. autoclass:: Watchers
+
+JIRAError
+=========
+
+.. autoclass:: JIRAError
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..4a15bb2
--- /dev/null
+++ b/docs/conf.py
... 8697 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-jira.git



More information about the Python-modules-commits mailing list