Package: pybitbucket_fork
A Python wrapper for the Bitbucket Cloud REST API.
This is not known to work with Bitbucket Server,
previously known as Stash.
To start working with this library, just do:pip install pybitbucket_forkThis is a fork ofpybitbucket <https://bitbucket.org/atlassian/python-bitbucket>.Adopting this libraryAuthenticateTheAuthenticatorsubclasses prepare API requests with credentials.
The simplest case isAnonymouswhich connects with no credentials.Anonymouscan be used with an publicly available resources.
For private resources,BasicAuthenticatoruses email, username, and password as credentials.
If your client application has it’s own mechanisms for working with these values,
you can subclass theBasicAuthenticatorto provide custom behavior.To “plug in” your implementation or a standard one, just do:bitbucket = Client(
    BasicAuthenticator(
        'your_username_here',
        'your_secret_password_here',
        'pybitbucket@mailinator.com'))If you have enabledtwo-step verification,
then you will need to use anapp passwordwith theBasicAuthenticator,
not your regular user password.
TheOAuth2Authenticatoris intended as an example and superclass.
It may work for some command-line clients.
Other clients like web applications
will need an appropriate implementation ofobtain_authorization()and perhaps may need to use a different grant types.Find ThingsFor example, to find all your snippets:for snip in Snippet.find_snippets_for_role(client=bitbucket):
    print(snip)The method says “for role” but, if not provided, it will use the default of owner.
Hence, all your snippets.In general, finding things is done with a static find method on each type of resource.
If the resource is plural, like “snippets” above, then the find method is a generator.
You can use it with iterators or comprehensions.
The resources you can find are:user and teamrepository and snippetpull request and commentcommit and build statushook and branch restrictionCreate ThingsFor example, to create a new snippet:snip = Snippet.create(
    files=open_files(["README.rst"]),
    payload=SnippetPayload().add_title("My New Snippet"),
    client=bitbucket)The resources you can create are:repository and snippetpull request and commentbuild statushook and branch restrictionExamine ThingsFor example, to examine attributes on a snippet:snip = Snippet.find_snippet_by_id("Xqoz8", bitbucket)
s = '\n'.join([
    "id          : {}".format(snip.id),
    "is_private  : {}".format(snip.is_private),
    "title       : {}".format(snip.title),
    "files       : {}".format(snip.filenames),
    "created_on  : {}".format(snip.created_on),
    "updated_on  : {}".format(snip.updated_on),
    "scm         : {}".format(snip.scm),
    ]) if snip else 'Snippet not found.'
print(s)What attributes are available?
You will not find them hardcoded in Python.
They are populated dynamically from the JSON response.
You can query the list via a convenience method:snip = Snippet.find_snippet_by_id("Xqoz8", bitbucket)
print(snip.attributes())Beware. The attributes for the same resource may change depending on how you got to it.Navigate RelationshipsFor example, to list the commits for a snippet:snip = Snippet.find_snippet_by_id("Xqoz8", bitbucket)
for commit in snip.commits():
    print(commit)What relationships are available?
You will not find them hardcoded in Python.
They are populated dynamically from the JSON response.
You can query the list via a convenience method:snip = Snippet.find_snippet_by_id("Xqoz8", bitbucket)
print(snip.relationships())Just like attributes, the relationships for the same resource may change depending on how you got to it.
If you need the canonical resource with all attributes, use theself()relationship:snips = Snippet.find_snippets_for_role(client=bitbucket)
one_snip = next(snips)    # one_snip has no files relationship in this context.
real_snip = next(one_snip.self())
print(real_snip.files)DevelopingPython Virtual Environment Setup (for OS X)It’s not virtual like a virtual machine. More like a specialized container for a Python version and libraries.brew install pythonThis installs the latest version of Python 2.7 with a version of setuptools and pip. Unfortunately, those versions of setuptools and pip seem to be broken.pip install --upgrade --no-use-wheel setuptoolspip install --upgrade --no-use-wheel pippip install virtualenvwrapperProject SetupClone the repository and set it as the current working directory.(Optional, but good practice)Create avirtual environment:mkvirtualenv python-bitbucketOnce created, useworkon python-bitbucketto restore the virtual environment.pip install -r requirements-dev.txtLoads required libraries into the virtual environment.paver test_allRun all the unit tests and analyze the source code.TODOPUTandDELETEforsnippet.watchfromsnippets Endpoint.Wrap theversion 1 endpointsfor:groupsgroup-privilegesinvitations