From ae3967a92bb1d3938ac43c5226a391c606362967 Mon Sep 17 00:00:00 2001 From: Fabio Menegazzo Date: Fri, 4 Jul 2014 14:48:54 -0300 Subject: [PATCH] Updating documentation. --- docs/_build/doctrees/api.doctree | Bin 0 -> 64843 bytes docs/_build/doctrees/entities.doctree | Bin 0 -> 96361 bytes docs/_build/doctrees/environment.pickle | Bin 22409 -> 23825 bytes docs/_build/doctrees/getting_started.doctree | Bin 0 -> 11505 bytes docs/_build/doctrees/index.doctree | Bin 175909 -> 15375 bytes .../_modules/travispy/entities/_entity.html | 6 +- .../travispy/entities/_restartable.html | 6 +- .../html/_modules/travispy/travispy.html | 28 +- docs/_build/html/_sources/api.txt | 19 + docs/_build/html/_sources/entities.txt | 43 ++ docs/_build/html/_sources/getting_started.txt | 68 ++ docs/_build/html/_sources/index.txt | 113 +-- docs/_build/html/api.html | 418 ++++++++++ docs/_build/html/entities.html | 384 +++++++++ docs/_build/html/genindex.html | 98 +-- docs/_build/html/getting_started.html | 169 ++++ docs/_build/html/index.html | 729 +----------------- docs/_build/html/objects.inv | Bin 518 -> 510 bytes docs/_build/html/py-modindex.html | 8 +- docs/_build/html/searchindex.js | 2 +- docs/api.rst | 19 + docs/entities.rst | 43 ++ docs/getting_started.rst | 68 ++ docs/index.rst | 113 +-- 24 files changed, 1342 insertions(+), 992 deletions(-) create mode 100644 docs/_build/doctrees/api.doctree create mode 100644 docs/_build/doctrees/entities.doctree create mode 100644 docs/_build/doctrees/getting_started.doctree create mode 100644 docs/_build/html/_sources/api.txt create mode 100644 docs/_build/html/_sources/entities.txt create mode 100644 docs/_build/html/_sources/getting_started.txt create mode 100644 docs/_build/html/api.html create mode 100644 docs/_build/html/entities.html create mode 100644 docs/_build/html/getting_started.html create mode 100644 docs/api.rst create mode 100644 docs/entities.rst create mode 100644 docs/getting_started.rst diff --git a/docs/_build/doctrees/api.doctree b/docs/_build/doctrees/api.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2c6ff6a3f78807ba29362dbd83da0cf06985b380 GIT binary patch literal 64843 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 literal 0 HcmV?d00001 diff --git a/docs/_build/doctrees/entities.doctree b/docs/_build/doctrees/entities.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6c5d5f50c513d3a4b6b1f52cd8baa2f98746420b GIT binary patch literal 96361 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 delta 5855 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 Km&y1okozB`QCiwD|-zG?){%zt=u-yZznv?e;uB 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 literal 175909 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 diff --git a/docs/_build/html/_modules/travispy/entities/_entity.html b/docs/_build/html/_modules/travispy/entities/_entity.html index 1fb1d4b..1b8edb1 100644 --- a/docs/_build/html/_modules/travispy/entities/_entity.html +++ b/docs/_build/html/_modules/travispy/entities/_entity.html @@ -68,7 +68,7 @@

Source code for travispy.entities._entity

 #===================================================================================================
 # Entity
 #===================================================================================================
-
[docs]class Entity(object): +
[docs]class Entity(object): ''' Base class for all |travisci| entities. @@ -90,7 +90,7 @@

Source code for travispy.entities._entity

 
 
     @classmethod
-
[docs] def one(cls): +
[docs] def one(cls): ''' :rtype: str :returns: @@ -101,7 +101,7 @@

Source code for travispy.entities._entity

 
 
@classmethod -
[docs] def many(cls): +
[docs] def many(cls): ''' :rtype: str :returns: diff --git a/docs/_build/html/_modules/travispy/entities/_restartable.html b/docs/_build/html/_modules/travispy/entities/_restartable.html index 64b2213..ad4bc6b 100644 --- a/docs/_build/html/_modules/travispy/entities/_restartable.html +++ b/docs/_build/html/_modules/travispy/entities/_restartable.html @@ -72,12 +72,12 @@

Source code for travispy.entities._restartable

#=================================================================================================== # Restartable #=================================================================================================== -

[docs]class Restartable(Entity): +
[docs]class Restartable(Entity): ''' Base class for restartable entities such as :class:`.Build` and :class:`.Job`. ''' -
[docs] def cancel(self): +
[docs] def cancel(self): ''' Method responsible for canceling current action of this object. @@ -89,7 +89,7 @@

Source code for travispy.entities._restartable

return response.status_code == 204

-
[docs] def restart(self): +
[docs] def restart(self): ''' Method responsible for restarting the last action executed by this action. diff --git a/docs/_build/html/_modules/travispy/travispy.html b/docs/_build/html/_modules/travispy/travispy.html index cbbddf0..489af29 100644 --- a/docs/_build/html/_modules/travispy/travispy.html +++ b/docs/_build/html/_modules/travispy/travispy.html @@ -90,7 +90,7 @@

Source code for travispy.travispy

 #===================================================================================================
 # TravisPy
 #===================================================================================================
-
[docs]class TravisPy: +
[docs]class TravisPy: ''' Instances of this class are responsible for comunicating with |travisci|, sending requests and handling responses properly. You can create as much instances as you want since each one will @@ -126,7 +126,7 @@

Source code for travispy.travispy

 
 
     @classmethod
-
[docs] def github_auth(cls, token, uri=PUBLIC): +
[docs] def github_auth(cls, token, uri=PUBLIC): ''' :param str token: GitHub access token. @@ -143,7 +143,7 @@

Source code for travispy.travispy

 
 
     # Accounts -------------------------------------------------------------------------------------
-
[docs] def accounts(self, all=False): +
[docs] def accounts(self, all=False): ''' :param bool all: Whether or not to include accounts the user does not have admin access to. @@ -159,7 +159,7 @@

Source code for travispy.travispy

         return self._session.find_many(Account, all=all)
 
 
-
[docs] def account(self, account_id): +
[docs] def account(self, account_id): ''' :param int account_id: ID of the account to obtain information. @@ -175,7 +175,7 @@

Source code for travispy.travispy

 
 
     # Broadcasts -----------------------------------------------------------------------------------
-
[docs] def broadcasts(self): +
[docs] def broadcasts(self): ''' :rtype: list(:class:`.Broadcast`) @@ -186,7 +186,7 @@

Source code for travispy.travispy

 
 
     # Builds ---------------------------------------------------------------------------------------
-
[docs] def builds(self, **kwargs): +
[docs] def builds(self, **kwargs): ''' :keyword list(int) ids: List of build ids to fetch. @@ -222,7 +222,7 @@

Source code for travispy.travispy

         return self._session.find_many(Build, **kwargs)
 
 
-
[docs] def build(self, build_id): +
[docs] def build(self, build_id): ''' :param int build_id: ID of the build to obtain information. @@ -233,7 +233,7 @@

Source code for travispy.travispy

 
 
     # Hooks ----------------------------------------------------------------------------------------
-
[docs] def hooks(self): +
[docs] def hooks(self): ''' :rtype: list(:class:`.Hook`) :returns: @@ -246,7 +246,7 @@

Source code for travispy.travispy

 
 
     # Jobs -----------------------------------------------------------------------------------------
-
[docs] def jobs(self, **kwargs): +
[docs] def jobs(self, **kwargs): ''' :keyword list(int) ids: List of jobs IDs. @@ -277,7 +277,7 @@

Source code for travispy.travispy

         return self._session.find_many(Job, **kwargs)
 
 
-
[docs] def job(self, job_id): +
[docs] def job(self, job_id): ''' :param int job_id: ID of the job to obtain information. @@ -288,7 +288,7 @@

Source code for travispy.travispy

 
 
     # Log ------------------------------------------------------------------------------------------
-
[docs] def log(self, log_id): +
[docs] def log(self, log_id): ''' :param int log_id: ID of the log to obtain information. @@ -299,7 +299,7 @@

Source code for travispy.travispy

 
 
     # Repositories ---------------------------------------------------------------------------------
-
[docs] def repos(self, **kwargs): +
[docs] def repos(self, **kwargs): ''' :keyword list(int) ids: List of repository ids to fetch, cannot be combined with other parameters. @@ -327,7 +327,7 @@

Source code for travispy.travispy

         return self._session.find_many(Repo, **kwargs)
 
 
-
[docs] def repo(self, id_or_slug): +
[docs] def repo(self, id_or_slug): ''' :type id_or_slug: int | str :param id_or_slug: @@ -339,7 +339,7 @@

Source code for travispy.travispy

 
 
     # Users ----------------------------------------------------------------------------------------
-
[docs] def user(self): +
[docs] def user(self): ''' :rtype: :class:`.User` :returns: diff --git a/docs/_build/html/_sources/api.txt b/docs/_build/html/_sources/api.txt new file mode 100644 index 0000000..23cd9b8 --- /dev/null +++ b/docs/_build/html/_sources/api.txt @@ -0,0 +1,19 @@ +.. |travispy| replace:: **TravisPy** +.. |travisci| replace:: *Travis CI* +.. |github| replace:: *GitHub* + +.. _official API: http://docs.travis-ci.com/api/ +.. _Ruby: https://github.com/travis-ci/travis.rb#ruby-library +.. _requirement: http://docs.travis-ci.com/api/#external-apis +.. _access token: https://github.com/settings/applications +.. _entities: http://docs.travis-ci.com/api/#entities +.. _open issues: https://github.com/menegazzo/travispy/issues?state=open + +=== +API +=== + +This document brings the public API of |travispy|. + +.. automodule:: travispy.travispy + :no-show-inheritance: diff --git a/docs/_build/html/_sources/entities.txt b/docs/_build/html/_sources/entities.txt new file mode 100644 index 0000000..5e9d17e --- /dev/null +++ b/docs/_build/html/_sources/entities.txt @@ -0,0 +1,43 @@ +.. |travispy| replace:: **TravisPy** +.. |travisci| replace:: *Travis CI* +.. |github| replace:: *GitHub* + +.. _official API: http://docs.travis-ci.com/api/ +.. _Ruby: https://github.com/travis-ci/travis.rb#ruby-library +.. _requirement: http://docs.travis-ci.com/api/#external-apis +.. _access token: https://github.com/settings/applications +.. _entities: http://docs.travis-ci.com/api/#entities +.. _open issues: https://github.com/menegazzo/travispy/issues?state=open + +======== +Entities +======== + +This document brings information about all entities that are used by |travispy| API. + +.. autoclass:: Session + :no-show-inheritance: + +.. module:: travispy.entities._entity +.. autoclass:: Entity + :no-show-inheritance: + +.. module:: travispy.entities._restartable +.. autoclass:: Restartable + +.. module:: travispy.entities +.. autoclass:: Account + +.. autoclass:: Broadcast + +.. autoclass:: Build + +.. autoclass:: Hook + +.. autoclass:: Job + +.. autoclass:: Log + +.. autoclass:: Repo + +.. autoclass:: User diff --git a/docs/_build/html/_sources/getting_started.txt b/docs/_build/html/_sources/getting_started.txt new file mode 100644 index 0000000..7d1d376 --- /dev/null +++ b/docs/_build/html/_sources/getting_started.txt @@ -0,0 +1,68 @@ +.. |travispy| replace:: **TravisPy** +.. |travisci| replace:: *Travis CI* +.. |github| replace:: *GitHub* + +.. _official API: http://docs.travis-ci.com/api/ +.. _Ruby: https://github.com/travis-ci/travis.rb#ruby-library +.. _requirement: http://docs.travis-ci.com/api/#external-apis +.. _access token: https://github.com/settings/applications +.. _entities: http://docs.travis-ci.com/api/#entities +.. _open issues: https://github.com/menegazzo/travispy/issues?state=open + +=============== +Getting started +=============== + +|travispy| works just as |travisci|: it authenticates against |github|. So as a `requirement`_ you +must have a |github| `access token`_ with the following scopes: + +* read:org +* user:email +* repo_deployment +* repo:status +* write:repo_hook + +With your token in hands all is easy:: + + >>> from travispy import TravisPy + >>> t = TravisPy.github_auth() + >>> user = t.user() + >>> user + + +Now you can access information related to user current logged in:: + + >>> user.login + 'travispy' + >>> user['login'] + 'travispy' + +To get the list of repositories that you are member of:: + + >>> repos = t.repos(member=user.login) + >>> len(repos) # Ordered by recent activity + 5 + >>> repos[0] + + >>> repos[0].slug + 'travispy/on_py34' + +Or simply request for repository you want:: + + >>> repo = r.repo('travispy/on_py34') + + +And finally, getting build information:: + + >>> build = t.build(repo.last_build_id) + >>> build + + >>> build.restart() + True + >>> build.cancel() + True + >>> build.cancel() # As build was already cancelled it will return False. + False + +Please refer to the `official API`_ to learn more about which `entities`_ are supported. Soon a +specific and detailed documentation related to this library will be available. diff --git a/docs/_build/html/_sources/index.txt b/docs/_build/html/_sources/index.txt index c3f6164..1b54222 100644 --- a/docs/_build/html/_sources/index.txt +++ b/docs/_build/html/_sources/index.txt @@ -1,8 +1,3 @@ -.. TravisPy documentation master file, created by - sphinx-quickstart on Wed Jul 2 10:35:41 2014. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - .. |travispy| replace:: **TravisPy** .. |travisci| replace:: *Travis CI* .. |github| replace:: *GitHub* @@ -14,8 +9,9 @@ .. _entities: http://docs.travis-ci.com/api/#entities .. _open issues: https://github.com/menegazzo/travispy/issues?state=open -Introduction -============ +======== +TravisPy +======== .. automodule:: travispy @@ -26,102 +22,15 @@ To install |travispy| all it takes is one command line:: pip install travispy -Quick start -=========== - -|travispy| works just as |travisci|: it authenticates against |github|. So as a `requirement`_ you -must have a |github| `access token`_ with the following scopes: - -* read:org -* user:email -* repo_deployment -* repo:status -* write:repo_hook - -With your token in hands all is easy:: - - >>> from travispy import TravisPy - >>> t = TravisPy.github_auth() - >>> user = t.user() - >>> user - - -Now you can access information related to user current logged in:: - - >>> user.login - 'travispy' - >>> user['login'] - 'travispy' - -To get the list of repositories that you are member of:: - - >>> repos = t.repos(member=user.login) - >>> len(repos) # Ordered by recent activity - 5 - >>> repos[0] - - >>> repos[0].slug - 'travispy/on_py34' - -Or simply request for repository you want:: - - >>> repo = r.repo('travispy/on_py34') - - -And finally, getting build information:: - - >>> build = t.build(repo.last_build_id) - >>> build - - >>> build.restart() - True - >>> build.cancel() - True - >>> build.cancel() # As build was already cancelled it will return False. - False - -Please refer to the `official API`_ to learn more about which `entities`_ are supported. Soon a -specific and detailed documentation related to this library will be available. - -Constants -========= - -.. automodule:: travispy.travispy - :no-members: - -Classes -======= - -.. module:: travispy.travispy -.. autoclass:: TravisPy - :no-show-inheritance: - -.. autoclass:: Session - :no-show-inheritance: - -.. module:: travispy.entities._entity -.. autoclass:: Entity - :no-show-inheritance: - -.. module:: travispy.entities._restartable -.. autoclass:: Restartable - -.. module:: travispy.entities -.. autoclass:: Account - -.. autoclass:: Broadcast - -.. autoclass:: Build - -.. autoclass:: Hook - -.. autoclass:: Job - -.. autoclass:: Log - -.. autoclass:: Repo +Documentation +============= -.. autoclass:: User +.. toctree:: + :maxdepth: 2 + + getting_started + api + entities Support ======= diff --git a/docs/_build/html/api.html b/docs/_build/html/api.html new file mode 100644 index 0000000..90cbcdb --- /dev/null +++ b/docs/_build/html/api.html @@ -0,0 +1,418 @@ + + + + + + + + API — TravisPy 0.1.1 documentation + + + + + + + + + + + + + + +
+
+

Previous topic

+

Getting started

+

Next topic

+

Entities

+

This Page

+ + + +
+
+ +
+
+
+
+ +
+

API

+

This document brings the public API of TravisPy.

+
+
+travispy.travispy.PUBLIC = URI for Travis CI free service.
+
+ +
+
+travispy.travispy.PRIVATE = URI for Travis CI paid service for GitHub private repositories.
+
+ +
+
+travispy.travispy.ENTERPRISE = URI template for Travis CI service running under a personal domain. Usage will be +something like ENTERPRISE % {'domain': 'http://travis.example.com'}.
+
+ +
+
+class travispy.travispy.TravisPy(token=None, uri='http://api.travis-ci.org')[source]
+

Instances of this class are responsible for comunicating with Travis CI, sending requests and +handling responses properly. You can create as much instances as you want since each one will +create a separated session.

+ +++ + + + +
Parameters:
    +
  • token (str | None) –

    Travis CI token linked to your GitHub account.

    +

    Even if you have a public repository, some information are related to your user account +and not the repository itself so if token is not provided an error will be returned.

    +

    Required for private and enterprise repositories to access any information.

    +
  • +
  • uri (PUBLIC | PRIVATE | ENTERPRISE | str) – URI where Travis CI service is running.
  • +
+
+
+

Note

+

Do not confuse token with the one found on your profile page.

+
+
+
+account(account_id)[source]
+
+++ + + + + + +
Parameters:account_id (int) – ID of the account to obtain information.
Return type:Account
+
+

Note

+

This request always needs to be authenticated.

+
+
+ +
+
+accounts(all=False)[source]
+
+++ + + + + + + + +
Parameters:all (bool) – Whether or not to include accounts the user does not have admin access to.
Return type:list(Account)
Returns:Information of all accounts that the user might have access.This is usually the account +corresponding to the user directly and one account per GitHub organization.
+
+

Note

+

This request always needs to be authenticated.

+
+
+ +
+
+broadcasts()[source]
+
+++ + + + +
Return type:list(Broadcast)
+
+

Note

+

This request always needs to be authenticated.

+
+
+ +
+
+build(build_id)[source]
+
+++ + + + + + +
Parameters:build_id (int) – ID of the build to obtain information.
Return type:Build
+
+ +
+
+builds(**kwargs)[source]
+
+++ + + + + + +
Parameters:
    +
  • ids (list(int)) – List of build ids to fetch.
  • +
  • repository_id (int) – Repository id the build belongs to.
  • +
  • slug (str) – Repository slug the build belongs to.
  • +
  • number (str) – Filter by build number, requires slug or repository_id.
  • +
  • after_number (str) – List build after a given build number (use for pagination), requires slug or +repository_id.
  • +
  • event_type (str) – Limit build to given event type (push or pull_request).
  • +
+
Return type:

list(Build)

+
+
+

Note

+

You have to supply either ids, repository_id or slug.

+
+
+ +
+
+classmethod github_auth(token, uri='http://api.travis-ci.org')[source]
+
+++ + + + +
Parameters:
    +
  • token (str) – GitHub access token.
  • +
  • uri – See __init__()
  • +
+
+
+ +
+
+hooks()[source]
+
+++ + + + + + +
Return type:list(Hook)
Returns:Returns list of existing hooks that user have access.
+
+

Note

+

This request always needs to be authenticated.

+
+
+ +
+
+job(job_id)[source]
+
+++ + + + + + +
Parameters:job_id (int) – ID of the job to obtain information.
Return type:Job
+
+ +
+
+jobs(**kwargs)[source]
+
+++ + + + + + +
Parameters:
    +
  • ids (list(int)) – List of jobs IDs.
  • +
  • state (str) – Job state to filter by. Possible values are passed, canceled, failed and +errored.
  • +
  • queue (str) – Job queue to filter by.
  • +
+
Return type:

list(Job)

+
+
+

Note

+

You need to provide exactly one of the above parameters. If you provide state or +queue, a maximum of 250 jobs will be returned.

+
+
+ +
+
+log(log_id)[source]
+
+++ + + + + + +
Parameters:log_id (int) – ID of the log to obtain information.
Return type:Log
+
+ +
+
+repo(id_or_slug)[source]
+
+++ + + + + + +
Parameters:id_or_slug (int | str) – ID of slug of repository to obtain information.
Return type:Repo
+
+ +
+
+repos(**kwargs)[source]
+
+++ + + + + + +
Parameters:
    +
  • ids (list(int)) – List of repository ids to fetch, cannot be combined with other parameters.
  • +
  • member (str) – Filter by user that has access to it (GitHub login).
  • +
  • owner_name (str) – Filter by owner name (first segment of slug).
  • +
  • slug (str) – Filter by slug.
  • +
  • search (str) – Filter by search term.
  • +
  • active (bool) – If True, will only return repositories that are enabled. Default is False.
  • +
+
Return type:

list(Repo)

+
+
+

Note

+

If no parameters are given, a list of repositories with recent activity is returned.

+
+
+ +
+
+user()[source]
+
+++ + + + + + +
Return type:User
Returns:Information about user currently logged in.
+
+

Note

+

This request always needs to be authenticated.

+
+
+ +
+ +
+ + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/entities.html b/docs/_build/html/entities.html new file mode 100644 index 0000000..befec7b --- /dev/null +++ b/docs/_build/html/entities.html @@ -0,0 +1,384 @@ + + + + + + + + Entities — TravisPy 0.1.1 documentation + + + + + + + + + + + + + +
+
+

Previous topic

+

API

+

This Page

+ + + +
+
+ +
+
+
+
+ +
+

Entities

+

This document brings information about all entities that are used by TravisPy API.

+
+
+class travispy.entities._entity.Entity(session)[source]
+

Base class for all Travis CI entities.

+ +++ + + + + + +
Parameters:session (Session) – Internet session in which entity information will be requested.
Variables:id (int) – The entity ID.
+
+
+classmethod many()[source]
+
+++ + + + + + +
Return type:str
Returns:String representation for multiple entities. +Example: for Account will be accounts.
+
+ +
+
+classmethod one()[source]
+
+++ + + + + + +
Return type:str
Returns:String representation for a single entity. +Example: for Account will be account.
+
+ +
+ +
+
+class travispy.entities._restartable.Restartable(session)[source]
+

Bases: travispy.entities._entity.Entity

+

Base class for restartable entities such as Build and Job.

+
+
+cancel()[source]
+

Method responsible for canceling current action of this object.

+ +++ + + + + + +
Return type:bool
Returns:True if cancel request was send successfuly to Travis CI.
+
+ +
+
+restart()[source]
+

Method responsible for restarting the last action executed by this action.

+ +++ + + + + + +
Return type:bool
Returns:True if restart request was send successfuly to Travis CI.
+
+ +
+ +
+
+class travispy.entities.Account(session)
+

Bases: travispy.entities._entity.Entity

+

A user might have access to multiple accounts. This is usually the account corresponding to the +user directly and one account per GitHub organization.

+ +++ + + + +
Variables:
    +
  • name (str) – User or organization id.
  • +
  • login (str) – Account name on GitHub.
  • +
  • type (str) – Account login on GitHub.
  • +
  • repos_count (int) – Number of repositories.
  • +
  • subscribed (bool) – Whether or not the account has a valid subscription. +Only available on Travis Pro.
  • +
+
+
+ +
+
+class travispy.entities.Broadcast(session)
+

Bases: travispy.entities._entity.Entity

+ +++ + + + +
Variables:message (str) – Broadcast message.
+
+ +
+
+class travispy.entities.Build(session)
+

Bases: travispy.entities._restartable.Restartable

+ +++ + + + +
Variables:
    +
  • repository_id (int) – Repository ID.
  • +
  • commit_id (str) – Commit ID.
  • +
  • number (str) – Build number.
  • +
  • pull_request (bool) – Whether or not the build comes from a pull request.
  • +
  • pull_request_title (str) – PR title if pull_request is True.
  • +
  • pull_request_number (str) – PR number if pull_request is True.
  • +
  • config (dict) – Build config (secure values and ssh key removed). It comes from .travis.yml file.
  • +
  • state (str) – Build state.
  • +
  • started_at (str) – Time the build was started.
  • +
  • finished_at (str) – Time the build finished.
  • +
  • duration (str) – Build duration. It might not correspond to finished_at - started_at if the +build was restarted at a later point.
  • +
  • job_ids (list(int)) – List of job IDs in the build matrix.
  • +
+
+
+ +
+
+class travispy.entities.Hook(session)
+

Bases: travispy.entities._entity.Entity

+ +++ + + + +
Variables:
    +
  • name (str) – Hook name.
  • +
  • description (str) – Hook description.
  • +
  • owner_name (str) – Owner name.
  • +
  • active (str) – Whether or not the hook is active.
  • +
  • private (str) – Whether or not the hook is private.
  • +
  • admin (bool) – Whether or not current user has administrator privileges.
  • +
+
+
+ +
+
+class travispy.entities.Job(session)
+

Bases: travispy.entities._restartable.Restartable

+ +++ + + + +
Variables:
    +
  • build_id (int) – Build ID.
  • +
  • repository_id (int) – Repository ID.
  • +
  • commit_id (int) – Commit ID.
  • +
  • log_id (int) – Log ID.
  • +
  • number (str) – Job number.
  • +
  • config (dict) – Job config (secure values and ssh key removed). It comes from .travis.yml file.
  • +
  • state (str) – Job state.
  • +
  • started_at (str) – Time the job was started.
  • +
  • finished_at (str) – Time the job finished.
  • +
  • duration (str) – Job duration. It might not correspond to finished_at - started_at if the +job was restarted at a later point.
  • +
  • queue (str) – Job queue.
  • +
  • allow_failure (bool) – Whether or not the job state influences build state.
  • +
  • annotation_ids (list(int)) – List of annotation IDs.
  • +
+
+
+ +
+
+class travispy.entities.Log(session)
+

Bases: travispy.entities._entity.Entity

+ +++ + + + +
Variables:
    +
  • job_id (int) – Jod ID.
  • +
  • body (str) – Log body.
  • +
  • type (str) –
  • +
+
+
+ +
+
+class travispy.entities.Repo(session)
+

Bases: travispy.entities._entity.Entity

+ +++ + + + +
Variables:
    +
  • slug (str) – Repository slug.
  • +
  • description (str) – Description on GitHub.
  • +
  • last_build_id (int) – Build ID of the last executed build.
  • +
  • last_build_number (str) – Build number of the last executed build.
  • +
  • last_build_state (str) – Build state of the last executed build.
  • +
  • last_build_duration (str) – Build duration of the last executed build.
  • +
  • last_build_started_at (str) – Build started at of the last executed build.
  • +
  • last_build_finished_at (str) – Build finished at of the last executed build.
  • +
  • github_language (str) – Language on GitHub.
  • +
  • active (bool) – Whether or not the repository is active on Travis CI.
  • +
+
+
+ +
+
+class travispy.entities.User(session)
+

Bases: travispy.entities._entity.Entity

+ +++ + + + +
Variables:
    +
  • login (str) – User login on GitHub.
  • +
  • name (str) – User name on GitHub.
  • +
  • email (str) – Primary email address on GitHub.
  • +
  • gravatar_id (str) – Avatar ID.
  • +
  • is_syncing (bool) – Whether or not user account is currently being synced.
  • +
  • synced_at (str) – Last synced at.
  • +
  • correct_scopes (bool) – Whether or not GitHub token has the correct scopes.
  • +
  • channels (str) – Pusher channels for this user.
  • +
  • created_at (str) – When account was created.
  • +
  • locale (str) – User main locale.
  • +
+
+
+ +
+ + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index 7b796aa..715f2e8 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -73,7 +73,6 @@

Index

| B | C | E - | F | G | H | J @@ -82,7 +81,6 @@

Index

| O | P | R - | S | T | U @@ -91,17 +89,17 @@

A

@@ -111,25 +109,25 @@

B

-
Account (class in travispy.entities) +
Account (class in travispy.entities)
-
account() (travispy.travispy.TravisPy method) +
account() (travispy.travispy.TravisPy method)
-
accounts() (travispy.travispy.TravisPy method) +
accounts() (travispy.travispy.TravisPy method)
@@ -139,7 +137,7 @@

C

-
Broadcast (class in travispy.entities) +
Broadcast (class in travispy.entities)
-
broadcasts() (travispy.travispy.TravisPy method) +
broadcasts() (travispy.travispy.TravisPy method)
-
Build (class in travispy.entities) +
Build (class in travispy.entities)
-
build() (travispy.travispy.TravisPy method) +
build() (travispy.travispy.TravisPy method)
-
builds() (travispy.travispy.TravisPy method) +
builds() (travispy.travispy.TravisPy method)
@@ -149,29 +147,13 @@

E

-
cancel() (travispy.entities._restartable.Restartable method) +
cancel() (travispy.entities._restartable.Restartable method)
-
-
ENTERPRISE (in module travispy.travispy) +
ENTERPRISE (in module travispy.travispy)
-
Entity (class in travispy.entities._entity) -
- -
- -

F

- - - @@ -181,7 +163,7 @@

G

- -
find_many() (travispy.travispy.Session method) -
- -
- -
find_one() (travispy.travispy.Session method) +
Entity (class in travispy.entities._entity)
@@ -191,13 +173,13 @@

H

-
github_auth() (travispy.travispy.TravisPy class method) +
github_auth() (travispy.travispy.TravisPy class method)
@@ -207,17 +189,17 @@

J

-
Hook (class in travispy.entities) +
Hook (class in travispy.entities)
-
hooks() (travispy.travispy.TravisPy method) +
hooks() (travispy.travispy.TravisPy method)
@@ -227,13 +209,13 @@

L

-
Job (class in travispy.entities) +
Job (class in travispy.entities)
-
job() (travispy.travispy.TravisPy method) +
job() (travispy.travispy.TravisPy method)
-
jobs() (travispy.travispy.TravisPy method) +
jobs() (travispy.travispy.TravisPy method)
@@ -243,7 +225,7 @@

M

-
Log (class in travispy.entities) +
Log (class in travispy.entities)
-
log() (travispy.travispy.TravisPy method) +
log() (travispy.travispy.TravisPy method)
@@ -253,7 +235,7 @@

O

-
many() (travispy.entities._entity.Entity class method) +
many() (travispy.entities._entity.Entity class method)
@@ -263,13 +245,13 @@

P

-
one() (travispy.entities._entity.Entity class method) +
one() (travispy.entities._entity.Entity class method)
@@ -279,35 +261,25 @@

R

-
PRIVATE (in module travispy.travispy) +
PRIVATE (in module travispy.travispy)
-
PUBLIC (in module travispy.travispy) +
PUBLIC (in module travispy.travispy)
-
-
Repo (class in travispy.entities) +
Repo (class in travispy.entities)
-
repo() (travispy.travispy.TravisPy method) +
repo() (travispy.travispy.TravisPy method)
-
repos() (travispy.travispy.TravisPy method) +
repos() (travispy.travispy.TravisPy method)
-
restart() (travispy.entities._restartable.Restartable method) -
- - -
Restartable (class in travispy.entities._restartable) +
restart() (travispy.entities._restartable.Restartable method)
-
- -

S

- - @@ -317,7 +289,7 @@

T

-
Session (class in travispy.travispy) +
Restartable (class in travispy.entities._restartable)
@@ -349,13 +321,13 @@

U

-
TravisPy (class in travispy.travispy) +
TravisPy (class in travispy.travispy)
@@ -325,21 +297,21 @@

T

-
travispy.entities (module) +
travispy.entities (module)
-
travispy.entities._entity (module) +
travispy.entities._entity (module)
-
travispy.entities._restartable (module) +
travispy.entities._restartable (module)
-
travispy.travispy (module), [1] +
travispy.travispy (module)
diff --git a/docs/_build/html/getting_started.html b/docs/_build/html/getting_started.html new file mode 100644 index 0000000..5ba770c --- /dev/null +++ b/docs/_build/html/getting_started.html @@ -0,0 +1,169 @@ + + + + + + + + Getting started — TravisPy 0.1.1 documentation + + + + + + + + + + + + + + +
+
+

Previous topic

+

TravisPy

+

Next topic

+

API

+

This Page

+ + + +
+
+ +
+
+
+
+ +
+

Getting started

+

TravisPy works just as Travis CI: it authenticates against GitHub. So as a requirement you +must have a GitHub access token with the following scopes:

+
    +
  • read:org
  • +
  • user:email
  • +
  • repo_deployment
  • +
  • repo:status
  • +
  • write:repo_hook
  • +
+

With your token in hands all is easy:

+
>>> from travispy import TravisPy
+>>> t = TravisPy.github_auth(<your_github_token>)
+>>> user = t.user()
+>>> user
+<travispy.entities.user.User object at 0x02C26C48>
+
+
+

Now you can access information related to user current logged in:

+
>>> user.login
+'travispy'
+>>> user['login']
+'travispy'
+
+
+

To get the list of repositories that you are member of:

+
>>> repos = t.repos(member=user.login)
+>>> len(repos) # Ordered by recent activity
+5
+>>> repos[0]
+<travispy.entities.repo.Repo object at 0x02C26C49>
+>>> repos[0].slug
+'travispy/on_py34'
+
+
+

Or simply request for repository you want:

+
>>> repo = r.repo('travispy/on_py34')
+<travispy.entities.repo.Repo object at 0x02C26C51>
+
+
+

And finally, getting build information:

+
>>> build = t.build(repo.last_build_id)
+>>> build
+<travispy.entities.build.Build object at 0x02C26C50>
+>>> build.restart()
+True
+>>> build.cancel()
+True
+>>> build.cancel() # As build was already cancelled it will return False.
+False
+
+
+

Please refer to the official API to learn more about which entities are supported. Soon a +specific and detailed documentation related to this library will be available.

+
+ + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index c6a86a4..24826af 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -6,7 +6,7 @@ - Introduction — TravisPy 0.1.1 documentation + TravisPy — TravisPy 0.1.1 documentation @@ -23,7 +23,8 @@ - + + @@ -42,16 +46,19 @@

Navigation

Table Of Contents

+

Next topic

+

Getting started

This Page

  • Quick search
    -

    Introduction

    +

    TravisPy

    TravisPy is a Python API for Travis CI. It follows the official API and is implemented as similar as possible to Ruby implementation.

    Experimental methods will not be supported until they become official.

    @@ -88,711 +95,29 @@

    Quick search

    License Build status Coveralls -
    -

    Install

    +

    Install

    To install TravisPy all it takes is one command line:

    pip install travispy
     
    -
    -

    Quick start

    -

    TravisPy works just as Travis CI: it authenticates against GitHub. So as a requirement you -must have a GitHub access token with the following scopes:

    -
      -
    • read:org
    • -
    • user:email
    • -
    • repo_deployment
    • -
    • repo:status
    • -
    • write:repo_hook
    • -
    -

    With your token in hands all is easy:

    -
    >>> from travispy import TravisPy
    ->>> t = TravisPy.github_auth(<your_github_token>)
    ->>> user = t.user()
    ->>> user
    -<travispy.entities.user.User object at 0x02C26C48>
    -
    -
    -

    Now you can access information related to user current logged in:

    -
    >>> user.login
    -'travispy'
    ->>> user['login']
    -'travispy'
    -
    -
    -

    To get the list of repositories that you are member of:

    -
    >>> repos = t.repos(member=user.login)
    ->>> len(repos) # Ordered by recent activity
    -5
    ->>> repos[0]
    -<travispy.entities.repo.Repo object at 0x02C26C49>
    ->>> repos[0].slug
    -'travispy/on_py34'
    -
    -
    -

    Or simply request for repository you want:

    -
    >>> repo = r.repo('travispy/on_py34')
    -<travispy.entities.repo.Repo object at 0x02C26C51>
    -
    -
    -

    And finally, getting build information:

    -
    >>> build = t.build(repo.last_build_id)
    ->>> build
    -<travispy.entities.build.Build object at 0x02C26C50>
    ->>> build.restart()
    -True
    ->>> build.cancel()
    -True
    ->>> build.cancel() # As build was already cancelled it will return False.
    -False
    -
    -
    -

    Please refer to the official API to learn more about which entities are supported. Soon a -specific and detailed documentation related to this library will be available.

    -
    -
    -

    Constants

    -
    -
    -travispy.travispy.PUBLIC = URI for Travis CI free service.
    -
    - -
    -
    -travispy.travispy.PRIVATE = URI for Travis CI paid service for GitHub private repositories.
    -
    - -
    -
    -travispy.travispy.ENTERPRISE = URI template for Travis CI service running under a personal domain. Usage will be -something like ENTERPRISE % {'domain': 'http://travis.example.com'}.
    -
    - -
    -
    -

    Classes

    -
    -
    -class travispy.travispy.TravisPy(token=None, uri='http://api.travis-ci.org')[source]
    -

    Instances of this class are responsible for comunicating with Travis CI, sending requests and -handling responses properly. You can create as much instances as you want since each one will -create a separated session.

    -
-
User (class in travispy.entities) +
User (class in travispy.entities)
-
user() (travispy.travispy.TravisPy method) +
user() (travispy.travispy.TravisPy method)
--- - - - -
Parameters:
    -
  • token (str | None) –

    Travis CI token linked to your GitHub account.

    -

    Even if you have a public repository, some information are related to your user account -and not the repository itself so if token is not provided an error will be returned.

    -

    Required for private and enterprise repositories to access any information.

    -
  • -
  • uri (PUBLIC | PRIVATE | ENTERPRISE | str) – URI where Travis CI service is running.
  • -
-
-
-

Note

-

Do not confuse token with the one found on your profile page.

-
-
-
-account(account_id)[source]
-
--- - - - - - -
Parameters:account_id (int) – ID of the account to obtain information.
Return type:Account
-
-

Note

-

This request always needs to be authenticated.

-
-
- -
-
-accounts(all=False)[source]
-
--- - - - - - - - -
Parameters:all (bool) – Whether or not to include accounts the user does not have admin access to.
Return type:list(Account)
Returns:Information of all accounts that the user might have access.This is usually the account -corresponding to the user directly and one account per GitHub organization.
-
-

Note

-

This request always needs to be authenticated.

-
-
- -
-
-broadcasts()[source]
-
--- - - - -
Return type:list(Broadcast)
-
-

Note

-

This request always needs to be authenticated.

-
-
- -
-
-build(build_id)[source]
-
--- - - - - - -
Parameters:build_id (int) – ID of the build to obtain information.
Return type:Build
-
- -
-
-builds(**kwargs)[source]
-
--- - - - - - -
Parameters:
    -
  • ids (list(int)) – List of build ids to fetch.
  • -
  • repository_id (int) – Repository id the build belongs to.
  • -
  • slug (str) – Repository slug the build belongs to.
  • -
  • number (str) – Filter by build number, requires slug or repository_id.
  • -
  • after_number (str) – List build after a given build number (use for pagination), requires slug or -repository_id.
  • -
  • event_type (str) – Limit build to given event type (push or pull_request).
  • +
    +

    Documentation

    +
Return type:

list(Build)

-
-
-

Note

-

You have to supply either ids, repository_id or slug.

-
- -
-
-classmethod github_auth(token, uri='http://api.travis-ci.org')[source]
-
--- - - - -
Parameters:
    -
  • token (str) – GitHub access token.
  • -
  • uri – See __init__()
  • -
-
-
- -
-
-hooks()[source]
-
--- - - - - - -
Return type:list(Hook)
Returns:Returns list of existing hooks that user have access.
-
-

Note

-

This request always needs to be authenticated.

-
-
- -
-
-job(job_id)[source]
-
--- - - - - - -
Parameters:job_id (int) – ID of the job to obtain information.
Return type:Job
-
- -
-
-jobs(**kwargs)[source]
-
--- - - - - - -
Parameters:
    -
  • ids (list(int)) – List of jobs IDs.
  • -
  • state (str) – Job state to filter by. Possible values are passed, canceled, failed and -errored.
  • -
  • queue (str) – Job queue to filter by.
  • -
-
Return type:

list(Job)

-
-
-

Note

-

You need to provide exactly one of the above parameters. If you provide state or -queue, a maximum of 250 jobs will be returned.

-
-
- -
-
-log(log_id)[source]
-
--- - - - - - -
Parameters:log_id (int) – ID of the log to obtain information.
Return type:Log
-
- -
-
-repo(id_or_slug)[source]
-
--- - - - - - -
Parameters:id_or_slug (int | str) – ID of slug of repository to obtain information.
Return type:Repo
-
- -
-
-repos(**kwargs)[source]
-
--- - - - - - -
Parameters:
    -
  • ids (list(int)) – List of repository ids to fetch, cannot be combined with other parameters.
  • -
  • member (str) – Filter by user that has access to it (GitHub login).
  • -
  • owner_name (str) – Filter by owner name (first segment of slug).
  • -
  • slug (str) – Filter by slug.
  • -
  • search (str) – Filter by search term.
  • -
  • active (bool) – If True, will only return repositories that are enabled. Default is False.
  • -
-
Return type:

list(Repo)

-
-
-

Note

-

If no parameters are given, a list of repositories with recent activity is returned.

-
-
- -
-
-user()[source]
-
--- - - - - - -
Return type:User
Returns:Information about user currently logged in.
-
-

Note

-

This request always needs to be authenticated.

-
-
- - - -
-
-class travispy.travispy.Session(uri)
-

Internet session created to perform requests to Travis CI.

- --- - - - -
Parameters:uri (str) – URI where session will start.
-
-
-find_many(entity_class, **kwargs)
-

Method responsible for returning as many as possible matches for given entity_class.

- --- - - - - - -
Parameters:entity_class (Entity) – Class of entity that information will be retrieved from Travis CI.
Return type:list(entity_class)
-
- -
-
-find_one(entity_class, entity_id, **kwargs)
-

Method responsible for returning exactly one instance of the given entity_class.

- --- - - - - - -
Parameters:
    -
  • entity_class (Entity) – Class of entity that information will be retrieved from Travis CI.
  • -
  • entity_id (int) – The ID of the entity.
  • -
-
Return type:

entity_class instance

-
-
- -
- -
-
-class travispy.entities._entity.Entity(session)[source]
-

Base class for all Travis CI entities.

- --- - - - - - -
Parameters:session (Session) – Internet session in which entity information will be requested.
Variables:id (int) – The entity ID.
-
-
-classmethod many()[source]
-
--- - - - - - -
Return type:str
Returns:String representation for multiple entities. -Example: for Account will be accounts.
-
- -
-
-classmethod one()[source]
-
--- - - - - - -
Return type:str
Returns:String representation for a single entity. -Example: for Account will be account.
-
- -
- -
-
-class travispy.entities._restartable.Restartable(session)[source]
-

Bases: travispy.entities._entity.Entity

-

Base class for restartable entities such as Build and Job.

-
-
-cancel()[source]
-

Method responsible for canceling current action of this object.

- --- - - - - - -
Return type:bool
Returns:True if cancel request was send successfuly to Travis CI.
-
- -
-
-restart()[source]
-

Method responsible for restarting the last action executed by this action.

- --- - - - - - -
Return type:bool
Returns:True if restart request was send successfuly to Travis CI.
-
- -
- -
-
-class travispy.entities.Account(session)
-

Bases: travispy.entities._entity.Entity

-

A user might have access to multiple accounts. This is usually the account corresponding to the -user directly and one account per GitHub organization.

- --- - - - -
Variables:
    -
  • name (str) – User or organization id.
  • -
  • login (str) – Account name on GitHub.
  • -
  • type (str) – Account login on GitHub.
  • -
  • repos_count (int) – Number of repositories.
  • -
  • subscribed (bool) – Whether or not the account has a valid subscription. -Only available on Travis Pro.
  • -
-
-
- -
-
-class travispy.entities.Broadcast(session)
-

Bases: travispy.entities._entity.Entity

- --- - - - -
Variables:message (str) – Broadcast message.
-
- -
-
-class travispy.entities.Build(session)
-

Bases: travispy.entities._restartable.Restartable

- --- - - - -
Variables:
    -
  • repository_id (int) – Repository ID.
  • -
  • commit_id (str) – Commit ID.
  • -
  • number (str) – Build number.
  • -
  • pull_request (bool) – Whether or not the build comes from a pull request.
  • -
  • pull_request_title (str) – PR title if pull_request is True.
  • -
  • pull_request_number (str) – PR number if pull_request is True.
  • -
  • config (dict) – Build config (secure values and ssh key removed). It comes from .travis.yml file.
  • -
  • state (str) – Build state.
  • -
  • started_at (str) – Time the build was started.
  • -
  • finished_at (str) – Time the build finished.
  • -
  • duration (str) – Build duration. It might not correspond to finished_at - started_at if the -build was restarted at a later point.
  • -
  • job_ids (list(int)) – List of job IDs in the build matrix.
  • -
-
-
- -
-
-class travispy.entities.Hook(session)
-

Bases: travispy.entities._entity.Entity

- --- - - - -
Variables:
    -
  • name (str) – Hook name.
  • -
  • description (str) – Hook description.
  • -
  • owner_name (str) – Owner name.
  • -
  • active (str) – Whether or not the hook is active.
  • -
  • private (str) – Whether or not the hook is private.
  • -
  • admin (bool) – Whether or not current user has administrator privileges.
  • -
-
-
- -
-
-class travispy.entities.Job(session)
-

Bases: travispy.entities._restartable.Restartable

- --- - - - -
Variables:
    -
  • build_id (int) – Build ID.
  • -
  • repository_id (int) – Repository ID.
  • -
  • commit_id (int) – Commit ID.
  • -
  • log_id (int) – Log ID.
  • -
  • number (str) – Job number.
  • -
  • config (dict) – Job config (secure values and ssh key removed). It comes from .travis.yml file.
  • -
  • state (str) – Job state.
  • -
  • started_at (str) – Time the job was started.
  • -
  • finished_at (str) – Time the job finished.
  • -
  • duration (str) – Job duration. It might not correspond to finished_at - started_at if the -job was restarted at a later point.
  • -
  • queue (str) – Job queue.
  • -
  • allow_failure (bool) – Whether or not the job state influences build state.
  • -
  • annotation_ids (list(int)) – List of annotation IDs.
  • -
-
-
- -
-
-class travispy.entities.Log(session)
-

Bases: travispy.entities._entity.Entity

- --- - - - -
Variables:
    -
  • job_id (int) – Jod ID.
  • -
  • body (str) – Log body.
  • -
  • type (str) –
  • -
-
-
- -
-
-class travispy.entities.Repo(session)
-

Bases: travispy.entities._entity.Entity

- --- - - - -
Variables:
    -
  • slug (str) – Repository slug.
  • -
  • description (str) – Description on GitHub.
  • -
  • last_build_id (int) – Build ID of the last executed build.
  • -
  • last_build_number (str) – Build number of the last executed build.
  • -
  • last_build_state (str) – Build state of the last executed build.
  • -
  • last_build_duration (str) – Build duration of the last executed build.
  • -
  • last_build_started_at (str) – Build started at of the last executed build.
  • -
  • last_build_finished_at (str) – Build finished at of the last executed build.
  • -
  • github_language (str) – Language on GitHub.
  • -
  • active (bool) – Whether or not the repository is active on Travis CI.
  • -
-
-
- -
-
-class travispy.entities.User(session)
-

Bases: travispy.entities._entity.Entity

- --- - - - -
Variables:
    -
  • login (str) – User login on GitHub.
  • -
  • name (str) – User name on GitHub.
  • -
  • email (str) – Primary email address on GitHub.
  • -
  • gravatar_id (str) – Avatar ID.
  • -
  • is_syncing (bool) – Whether or not user account is currently being synced.
  • -
  • synced_at (str) – Last synced at.
  • -
  • correct_scopes (bool) – Whether or not GitHub token has the correct scopes.
  • -
  • channels (str) – Pusher channels for this user.
  • -
  • created_at (str) – When account was created.
  • -
  • locale (str) – User main locale.
  • -
-
-
-
-

Support

+

Support

Need help? Click here and open a new issue. You’ll get your answer ASAP.

-

Contribute

+

Contribute

TravisPy is under development, so if you want to join the team, you are welcome.

@@ -824,6 +150,9 @@

Navigation

  • modules |
  • +
  • + next |
  • TravisPy 0.1.1 documentation »
  • diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv index 586dca8a7d65997094a243192071d53306305830..a7ec631f56fbd5599a056bc009c00d1e0c2a3063 100644 GIT binary patch delta 398 zcmV;90df9@1pWh%dVf{HPQx$^z3(d`!L<>)?zW*y3<0XTjqBv5Q5(pbDoGLjd)lTA zD{QRExLJ;${rqAlTEYiYWsP-jpt4>ZL|So*?hup==lZ~Jj3>B7!E6Y`w9rg5s_?$E z#z=d35$*;XMYAHMpHm1*sx(LqNdxm^iI;?ks?aT*a8L@(e}AC=)CPxEA}90_aU37n zy}xUQ>RhDPCL~Z0%BSYD#9S&vhJWD%$jR=U_^pPn{_7oZ%@g+{G#^MXN5*Gj s(8dHrkkMI2i|)rBhY#K!ux{;H^A(>6E$d)7=%b&_PX}&5Uxtb)CZB!ALjV8( delta 406 zcmV;H0crmJ1BL{UdVf|;Z-X!lz4uo{+O9EwU`1Jjp(r2tnWKW z1_)CS``(CJ+9)RbqhMHw%mwPiaIBY?STsot4Hjbp_u5qIBT|06X=TRYflQjR%BGe5 zu5lWg#|e0QP2)$ATt`4~Hog9s$6ewx}S{ zizt|r!E55ky0d4BflQ09fyQUUb|xT#oXzwPython Module Index     - travispy.entities + travispy.entities     - travispy.entities._entity + travispy.entities._entity     - travispy.entities._restartable + travispy.entities._restartable     - travispy.travispy + travispy.travispy diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 273141a..c5b1f28 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({titles:["Introduction"],objects:{"":{travispy:[0,0,0,"-"]},"travispy.entities._entity":{Entity:[0,1,1,""]},"travispy.entities._entity.Entity":{one:[0,4,1,""],many:[0,4,1,""]},"travispy.travispy.Session":{find_many:[0,3,1,""],find_one:[0,3,1,""]},"travispy.entities":{Account:[0,1,1,""],Build:[0,1,1,""],"_restartable":[0,0,0,"-"],Job:[0,1,1,""],Log:[0,1,1,""],Hook:[0,1,1,""],Repo:[0,1,1,""],Broadcast:[0,1,1,""],"_entity":[0,0,0,"-"],User:[0,1,1,""]},"travispy.entities._restartable":{Restartable:[0,1,1,""]},travispy:{travispy:[0,0,0,"-"],entities:[0,0,0,"-"]},"travispy.entities._restartable.Restartable":{cancel:[0,3,1,""],restart:[0,3,1,""]},"travispy.travispy":{TravisPy:[0,1,1,""],Session:[0,1,1,""],ENTERPRISE:[0,2,1,""],PUBLIC:[0,2,1,""],PRIVATE:[0,2,1,""]},"travispy.travispy.TravisPy":{repos:[0,3,1,""],github_auth:[0,4,1,""],log:[0,3,1,""],accounts:[0,3,1,""],account:[0,3,1,""],broadcasts:[0,3,1,""],repo:[0,3,1,""],builds:[0,3,1,""],user:[0,3,1,""],job:[0,3,1,""],jobs:[0,3,1,""],hooks:[0,3,1,""],build:[0,3,1,""]}},objtypes:{"0":"py:module","1":"py:class","2":"py:data","3":"py:method","4":"py:classmethod"},terms:{make:0,usag:0,ssh:0,slug:0,log:0,annotation_id:0,str:0,"0x02c26c50":0,either:0,requir:0,confus:0,email:0,secur:0,config:0,full:0,local:0,"_entiti":0,"public":0,exist:0,implement:0,request:0,singl:0,"_restart":0,see:0,avail:0,your_github_token:0,given:0,test:0,page:0,link:0,under:0,usual:0,user:0,cannot:0,each:0,obtain:0,travi:0,kwarg:0,alwai:0,send:0,exactli:0,session:0,log_id:0,yml:0,belong:0,represent:0,combin:0,just:0,librari:0,scope:0,experiment:0,last_build_started_at:0,execut:0,pull:0,classmethod:0,until:0,github:0,onli:0,pass:0,repository_id:0,action:0,want:0,rubi:0,jod:0,ani:0,limit:0,is_sync:0,match:0,develop:0,feel:0,need:0,profil:0,statu:0,fetch:0,creat:0,where:0,created_at:0,take:0,annot:0,other:0,last:0,now:0,about:0,login:0,properli:0,separ:0,merg:0,"0x02c26c49":0,term:0,perform:0,found:0,inform:0,matrix:0,repos_count:0,python:0,pro:0,someth:0,number:0,includ:0,gravatar_id:0,write:0,asap:0,repo_deploy:0,activ:0,much:0,last_build_st:0,last_build_finished_at:0,queue:0,might:0,sinc:0,read:0,sync:0,must:0,repo_hook:0,correspond:0,becom:0,paramet:0,type:0,com:0,job:0,privat:0,descript:0,issu:0,doe:0,click:0,event:0,handl:0,name:0,last_build_numb:0,whether:0,similar:0,person:0,job_id:0,time:0,follow:0,account:0,after_numb:0,cancel:0,"return":0,synced_at:0,broadcast:0,languag:0,domain:0,main:0,admin:0,hook:0,relat:0,access:0,per:0,offici:0,work:0,document:0,commit_id:0,subscrib:0,pagin:0,paid:0,correct_scop:0,allow_failur:0,owner_nam:0,durat:0,open:0,titl:0,org:0,run:0,http:0,"0x02c26c48":0,respons:0,thei:0,get:0,bodi:0,point:0,provid:0,"int":0,abov:0,"__init__":0,segment:0,last_build_id:0,messag:0,fail:0,pull_request_numb:0,state:0,repo:0,"0x02c26c51":0,restart:0,object:0,none:0,your:0,hand:0,help:0,correct:0,directli:0,channel:0,all:0,have:0,specif:0,bug:0,authent:0,id_or_slug:0,avatar:0,pull_request:0,list:0,alreadi:0,servic:0,join:0,pusher:0,file:0,dict:0,even:0,api:0,primari:0,entity_class:0,on_py34:0,travispi:0,enterpris:0,kei:0,fork:0,maximum:0,enabl:0,later:0,pull_request_titl:0,"new":0,find_mani:0,influenc:0,line:0,you:0,administr:0,account_id:0,some:0,string:0,entity_id:0,first:0,filter:0,chang:0,entiti:0,current:0,retriev:0,github_auth:0,variabl:0,sourc:0,bool:0,finished_at:0,simpli:0,"import":0,valu:0,order:0,against:0,itself:0,fals:0,len:0,pip:0,easi:0,"final":0,internet:0,command:0,gpl:0,instanc:0,exampl:0,refer:0,more:0,mani:0,thi:0,organ:0,templat:0,welcom:0,started_at:0,member:0,come:0,error:0,event_typ:0,valid:0,github_languag:0,pleas:0,"true":0,comun:0,which:0,multipl:0,privileg:0,subscript:0,"default":0,finish:0,base:0,build_id:0,learn:0,free:0,find_on:0,after:0,owner:0,when:0,push:0,from:0,suppli:0,team:0,commit:0,recent:0,search:0,remov:0,last_build_dur:0,address:0,here:0,token:0,successfuli:0,can:0,uri:0,repositori:0,befor:0,detail:0,idea:0,possibl:0,like:0,answer:0,build:0,soon:0,method:0},titleterms:{quick:0,introduct:0,contribut:0,start:0,support:0,instal:0,"class":0,licens:0,constant:0},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","data","Python data"],"3":["py","method","Python method"],"4":["py","classmethod","Python class method"]},envversion:43,filenames:["index"]}) \ No newline at end of file +Search.setIndex({objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:classmethod","4":"py:data"},envversion:43,filenames:["index","entities","api","getting_started"],objects:{"":{travispy:[0,0,0,"-"]},"travispy.entities._entity":{Entity:[1,1,1,""]},"travispy.entities._restartable.Restartable":{cancel:[1,2,1,""],restart:[1,2,1,""]},travispy:{entities:[1,0,0,"-"],travispy:[2,0,0,"-"]},"travispy.travispy":{ENTERPRISE:[2,4,1,""],PRIVATE:[2,4,1,""],PUBLIC:[2,4,1,""],TravisPy:[2,1,1,""]},"travispy.entities":{"_entity":[1,0,0,"-"],Build:[1,1,1,""],Log:[1,1,1,""],Hook:[1,1,1,""],Repo:[1,1,1,""],Job:[1,1,1,""],Account:[1,1,1,""],"_restartable":[1,0,0,"-"],User:[1,1,1,""],Broadcast:[1,1,1,""]},"travispy.entities._entity.Entity":{many:[1,3,1,""],one:[1,3,1,""]},"travispy.travispy.TravisPy":{builds:[2,2,1,""],account:[2,2,1,""],broadcasts:[2,2,1,""],job:[2,2,1,""],log:[2,2,1,""],user:[2,2,1,""],github_auth:[2,3,1,""],hooks:[2,2,1,""],build:[2,2,1,""],accounts:[2,2,1,""],repos:[2,2,1,""],repo:[2,2,1,""],jobs:[2,2,1,""]},"travispy.entities._restartable":{Restartable:[1,1,1,""]}},titleterms:{support:0,api:2,travispi:0,introduct:[],contribut:0,quick:[],constant:[],"class":[],licens:0,instal:0,entiti:1,document:0,start:3,get:3},titles:["TravisPy","Entities","API","Getting started"],terms:{ani:[0,2],match:[],commit:1,itself:2,much:2,first:2,owner_nam:[1,2],entity_class:[],paid:2,synced_at:1,thi:[1,2,3],last_build_id:[1,3],"0x02c26c49":3,combin:2,after:2,confus:2,find_on:[],per:[1,2],gravatar_id:1,exampl:[1,2],object:[1,3],easi:3,scope:[1,3],come:1,provid:2,kei:1,"default":2,channel:1,creat:[0,1,2],sinc:2,domain:2,becom:0,internet:1,last_build_numb:1,follow:[0,3],cannot:2,dict:1,api:[],"return":[1,2,3],test:0,builtin:[],develop:0,bring:[1,2],"_restart":1,page:2,servic:2,run:2,"public":2,later:1,user:[1,2,3],perform:[],help:0,paramet:[1,2],join:0,repo_deploy:3,need:[0,2],send:[1,2],"new":0,befor:0,travispi:[1,3],gpl:0,remov:1,login:[1,2,3],doe:2,repo_hook:3,secur:1,take:0,last_build_finished_at:1,exactli:2,bool:[1,2],alwai:2,each:2,restart:[1,3],person:2,order:3,team:0,simpli:3,now:3,fetch:2,subscrib:1,log_id:[1,2],write:[0,3],idea:0,pagin:2,offici:[0,3],correct_scop:1,properli:2,job:[1,2],influenc:1,yml:1,just:3,like:2,entiti:[],pro:1,"0x02c26c48":3,see:2,represent:1,base:1,work:3,main:1,given:2,annot:1,pull_request_numb:1,even:2,method:[0,1],similar:0,free:[0,2],"_entiti":1,requir:[2,3],descript:1,push:2,request:[0,1,2,3],uri:2,token:[1,2,3],commit_id:1,last_build_dur:1,whether:[1,2],might:[1,2],click:0,list:[1,2,3],cancel:[1,2,3],avatar:1,build:[1,2,3],asap:0,"true":[1,2,3],pleas:[0,3],includ:2,inform:[1,2,3],respons:[1,2],found:2,someth:2,alreadi:3,detail:3,about:[1,2,3],state:[1,2],number:[1,2],address:1,fork:0,all:[0,1,2,3],log:[1,2,3],org:[2,3],some:2,created_at:1,config:1,len:3,last:1,thei:0,classmethod:[1,2],repo:[1,2,3],file:1,your_github_token:3,usag:2,error:2,ssh:1,access:[1,2,3],exist:2,pip:0,"0x02c26c51":3,maximum:2,languag:1,bug:0,on_py34:3,want:[0,2,3],separ:2,enabl:2,librari:3,administr:1,you:[0,2,3],point:1,relat:[0,2,3],until:0,fail:2,must:3,bodi:1,valu:[1,2],last_build_st:1,privileg:1,pass:2,github_auth:[2,3],comun:2,segment:2,python:0,where:2,search:2,primari:1,execut:1,find_mani:[],from:[1,3],session:[1,2],member:[2,3],correspond:[1,2],event:2,started_at:1,string:1,sourc:[1,2],document:[1,3],retriev:[],either:2,directli:[1,2],"import":3,finished_at:1,"int":[1,2],titl:1,type:[1,2],correct:1,link:2,com:2,http:2,issu:0,time:1,recent:[2,3],repository_id:[1,2],usual:[1,2],avail:[1,3],read:3,repos_count:1,allow_failur:1,feel:0,pusher:1,action:1,github_languag:1,your:[0,2,3],other:2,get:[],line:0,queue:[1,2],which:[1,3],answer:0,job_id:[1,2],repositori:[1,2,3],github:[0,1,2,3],belong:2,enterpris:2,is_sync:1,privat:[1,2],chang:0,under:[0,2],implement:0,instanc:2,account_id:2,pull_request:[1,2],profil:2,term:2,id_or_slug:2,against:3,open:0,limit:2,owner:[1,2],organ:[1,2],durat:1,activ:[1,2,3],suppli:2,fals:[2,3],entity_id:[],str:[1,2],kwarg:2,after_numb:2,specif:3,rubi:0,"0x02c26c50":3,command:0,last_build_started_at:1,possibl:[0,2],when:1,full:0,statu:3,filter:2,handl:2,onli:[1,2],messag:1,"__init__":2,can:[0,2,3],have:[1,2,3],broadcast:[1,2],authent:[2,3],email:[1,3],account:[1,2],experiment:0,learn:3,hook:[1,2],name:[1,2],make:0,valid:1,build_id:[1,2],sync:1,subscript:1,here:0,welcom:0,more:3,travi:[0,1,2,3],merg:0,successfuli:1,pull:[0,1],templat:2,hand:3,mani:1,soon:3,refer:[0,3],local:1,annotation_id:1,singl:1,multipl:1,variabl:1,none:2,matrix:1,"final":3,pull_request_titl:1,event_typ:2,abov:2,current:[1,2,3],slug:[1,2,3],jod:1,obtain:2,admin:[1,2],finish:1},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","classmethod","Python class method"],"4":["py","data","Python data"]}}) \ No newline at end of file diff --git a/docs/api.rst b/docs/api.rst new file mode 100644 index 0000000..23cd9b8 --- /dev/null +++ b/docs/api.rst @@ -0,0 +1,19 @@ +.. |travispy| replace:: **TravisPy** +.. |travisci| replace:: *Travis CI* +.. |github| replace:: *GitHub* + +.. _official API: http://docs.travis-ci.com/api/ +.. _Ruby: https://github.com/travis-ci/travis.rb#ruby-library +.. _requirement: http://docs.travis-ci.com/api/#external-apis +.. _access token: https://github.com/settings/applications +.. _entities: http://docs.travis-ci.com/api/#entities +.. _open issues: https://github.com/menegazzo/travispy/issues?state=open + +=== +API +=== + +This document brings the public API of |travispy|. + +.. automodule:: travispy.travispy + :no-show-inheritance: diff --git a/docs/entities.rst b/docs/entities.rst new file mode 100644 index 0000000..5e9d17e --- /dev/null +++ b/docs/entities.rst @@ -0,0 +1,43 @@ +.. |travispy| replace:: **TravisPy** +.. |travisci| replace:: *Travis CI* +.. |github| replace:: *GitHub* + +.. _official API: http://docs.travis-ci.com/api/ +.. _Ruby: https://github.com/travis-ci/travis.rb#ruby-library +.. _requirement: http://docs.travis-ci.com/api/#external-apis +.. _access token: https://github.com/settings/applications +.. _entities: http://docs.travis-ci.com/api/#entities +.. _open issues: https://github.com/menegazzo/travispy/issues?state=open + +======== +Entities +======== + +This document brings information about all entities that are used by |travispy| API. + +.. autoclass:: Session + :no-show-inheritance: + +.. module:: travispy.entities._entity +.. autoclass:: Entity + :no-show-inheritance: + +.. module:: travispy.entities._restartable +.. autoclass:: Restartable + +.. module:: travispy.entities +.. autoclass:: Account + +.. autoclass:: Broadcast + +.. autoclass:: Build + +.. autoclass:: Hook + +.. autoclass:: Job + +.. autoclass:: Log + +.. autoclass:: Repo + +.. autoclass:: User diff --git a/docs/getting_started.rst b/docs/getting_started.rst new file mode 100644 index 0000000..7d1d376 --- /dev/null +++ b/docs/getting_started.rst @@ -0,0 +1,68 @@ +.. |travispy| replace:: **TravisPy** +.. |travisci| replace:: *Travis CI* +.. |github| replace:: *GitHub* + +.. _official API: http://docs.travis-ci.com/api/ +.. _Ruby: https://github.com/travis-ci/travis.rb#ruby-library +.. _requirement: http://docs.travis-ci.com/api/#external-apis +.. _access token: https://github.com/settings/applications +.. _entities: http://docs.travis-ci.com/api/#entities +.. _open issues: https://github.com/menegazzo/travispy/issues?state=open + +=============== +Getting started +=============== + +|travispy| works just as |travisci|: it authenticates against |github|. So as a `requirement`_ you +must have a |github| `access token`_ with the following scopes: + +* read:org +* user:email +* repo_deployment +* repo:status +* write:repo_hook + +With your token in hands all is easy:: + + >>> from travispy import TravisPy + >>> t = TravisPy.github_auth() + >>> user = t.user() + >>> user + + +Now you can access information related to user current logged in:: + + >>> user.login + 'travispy' + >>> user['login'] + 'travispy' + +To get the list of repositories that you are member of:: + + >>> repos = t.repos(member=user.login) + >>> len(repos) # Ordered by recent activity + 5 + >>> repos[0] + + >>> repos[0].slug + 'travispy/on_py34' + +Or simply request for repository you want:: + + >>> repo = r.repo('travispy/on_py34') + + +And finally, getting build information:: + + >>> build = t.build(repo.last_build_id) + >>> build + + >>> build.restart() + True + >>> build.cancel() + True + >>> build.cancel() # As build was already cancelled it will return False. + False + +Please refer to the `official API`_ to learn more about which `entities`_ are supported. Soon a +specific and detailed documentation related to this library will be available. diff --git a/docs/index.rst b/docs/index.rst index c3f6164..1b54222 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,8 +1,3 @@ -.. TravisPy documentation master file, created by - sphinx-quickstart on Wed Jul 2 10:35:41 2014. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - .. |travispy| replace:: **TravisPy** .. |travisci| replace:: *Travis CI* .. |github| replace:: *GitHub* @@ -14,8 +9,9 @@ .. _entities: http://docs.travis-ci.com/api/#entities .. _open issues: https://github.com/menegazzo/travispy/issues?state=open -Introduction -============ +======== +TravisPy +======== .. automodule:: travispy @@ -26,102 +22,15 @@ To install |travispy| all it takes is one command line:: pip install travispy -Quick start -=========== - -|travispy| works just as |travisci|: it authenticates against |github|. So as a `requirement`_ you -must have a |github| `access token`_ with the following scopes: - -* read:org -* user:email -* repo_deployment -* repo:status -* write:repo_hook - -With your token in hands all is easy:: - - >>> from travispy import TravisPy - >>> t = TravisPy.github_auth() - >>> user = t.user() - >>> user - - -Now you can access information related to user current logged in:: - - >>> user.login - 'travispy' - >>> user['login'] - 'travispy' - -To get the list of repositories that you are member of:: - - >>> repos = t.repos(member=user.login) - >>> len(repos) # Ordered by recent activity - 5 - >>> repos[0] - - >>> repos[0].slug - 'travispy/on_py34' - -Or simply request for repository you want:: - - >>> repo = r.repo('travispy/on_py34') - - -And finally, getting build information:: - - >>> build = t.build(repo.last_build_id) - >>> build - - >>> build.restart() - True - >>> build.cancel() - True - >>> build.cancel() # As build was already cancelled it will return False. - False - -Please refer to the `official API`_ to learn more about which `entities`_ are supported. Soon a -specific and detailed documentation related to this library will be available. - -Constants -========= - -.. automodule:: travispy.travispy - :no-members: - -Classes -======= - -.. module:: travispy.travispy -.. autoclass:: TravisPy - :no-show-inheritance: - -.. autoclass:: Session - :no-show-inheritance: - -.. module:: travispy.entities._entity -.. autoclass:: Entity - :no-show-inheritance: - -.. module:: travispy.entities._restartable -.. autoclass:: Restartable - -.. module:: travispy.entities -.. autoclass:: Account - -.. autoclass:: Broadcast - -.. autoclass:: Build - -.. autoclass:: Hook - -.. autoclass:: Job - -.. autoclass:: Log - -.. autoclass:: Repo +Documentation +============= -.. autoclass:: User +.. toctree:: + :maxdepth: 2 + + getting_started + api + entities Support =======