✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ beluga.o2switch.net ​🇻​♯➤ 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 185.154.139.77 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.84
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/alt/python27/lib/python2.7/site-packages/github//MainClass.py
# -*- coding: utf-8 -*-

############################ Copyrights and license ############################
#                                                                              #
# Copyright 2013 AKFish <akfish@gmail.com>                                     #
# Copyright 2013 Ed Jackson <ed.jackson@gmail.com>                             #
# Copyright 2013 Jonathan J Hunt <hunt@braincorporation.com>                   #
# Copyright 2013 Peter Golm <golm.peter@gmail.com>                             #
# Copyright 2013 Steve Brown <steve@evolvedlight.co.uk>                        #
# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net>                 #
# Copyright 2014 C. R. Oldham <cro@ncbt.org>                                   #
# Copyright 2014 Thialfihar <thi@thialfihar.org>                               #
# Copyright 2014 Tyler Treat <ttreat31@gmail.com>                              #
# Copyright 2014 Vincent Jacques <vincent@vincent-jacques.net>                 #
# Copyright 2015 Daniel Pocock <daniel@pocock.pro>                             #
# Copyright 2015 Joseph Rawson <joseph.rawson.works@littledebian.org>          #
# Copyright 2015 Uriel Corfa <uriel@corfa.fr>                                  #
# Copyright 2015 edhollandAL <eholland@alertlogic.com>                         #
# Copyright 2016 Jannis Gebauer <ja.geb@me.com>                                #
# Copyright 2016 Peter Buckley <dx-pbuckley@users.noreply.github.com>          #
# Copyright 2017 Colin Hoglund <colinhoglund@users.noreply.github.com>         #
# Copyright 2017 Jannis Gebauer <ja.geb@me.com>                                #
# Copyright 2018 Agor Maxime <maxime.agor23@gmail.com>                         #
# Copyright 2018 Wan Liuyang <tsfdye@gmail.com>                                #
# Copyright 2018 sfdye <tsfdye@gmail.com>                                      #
#                                                                              #
# This file is part of PyGithub.                                               #
# http://pygithub.readthedocs.io/                                              #
#                                                                              #
# PyGithub is free software: you can redistribute it and/or modify it under    #
# the terms of the GNU Lesser General Public License as published by the Free  #
# Software Foundation, either version 3 of the License, or (at your option)    #
# any later version.                                                           #
#                                                                              #
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
# details.                                                                     #
#                                                                              #
# You should have received a copy of the GNU Lesser General Public License     #
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
#                                                                              #
################################################################################

import urllib
import pickle
import time
import sys
from httplib import HTTPSConnection
import jwt

from Requester import Requester, json
import AuthenticatedUser
import NamedUser
import Organization
import Gist
import github.PaginatedList
import Repository
import Installation
import Legacy
import License
import github.GithubObject
import HookDescription
import GitignoreTemplate
import Status
import StatusMessage
import RateLimit
import InstallationAuthorization
import GithubException
import Invitation

atLeastPython3 = sys.hexversion >= 0x03000000

DEFAULT_BASE_URL = "https://api.github.com"
DEFAULT_STATUS_URL = "https://status.github.com"
# As of 2018-05-17, Github imposes a 10s limit for completion of API requests.
# Thus, the timeout should be slightly > 10s to account for network/front-end
# latency.
DEFAULT_TIMEOUT = 15
DEFAULT_PER_PAGE = 30


class Github(object):
    """
    This is the main class you instantiate to access the Github API v3. Optional parameters allow different authentication methods.
    """

    def __init__(self, login_or_token=None, password=None, base_url=DEFAULT_BASE_URL, timeout=DEFAULT_TIMEOUT, client_id=None, client_secret=None, user_agent='PyGithub/Python', per_page=DEFAULT_PER_PAGE, api_preview=False, verify=True):
        """
        :param login_or_token: string
        :param password: string
        :param base_url: string
        :param timeout: integer
        :param client_id: string
        :param client_secret: string
        :param user_agent: string
        :param per_page: int
        :param verify: boolean or string
        """

        assert login_or_token is None or isinstance(login_or_token, (str, unicode)), login_or_token
        assert password is None or isinstance(password, (str, unicode)), password
        assert isinstance(base_url, (str, unicode)), base_url
        assert isinstance(timeout, (int, long)), timeout
        assert client_id is None or isinstance(client_id, (str, unicode)), client_id
        assert client_secret is None or isinstance(client_secret, (str, unicode)), client_secret
        assert user_agent is None or isinstance(user_agent, (str, unicode)), user_agent
        assert isinstance(api_preview, (bool))
        self.__requester = Requester(login_or_token, password, base_url, timeout, client_id, client_secret, user_agent, per_page, api_preview, verify)

    def __get_FIX_REPO_GET_GIT_REF(self):
        """
        :type: bool
        """
        return self.__requester.FIX_REPO_GET_GIT_REF

    def __set_FIX_REPO_GET_GIT_REF(self, value):
        self.__requester.FIX_REPO_GET_GIT_REF = value

    FIX_REPO_GET_GIT_REF = property(__get_FIX_REPO_GET_GIT_REF, __set_FIX_REPO_GET_GIT_REF)

    def __get_per_page(self):
        """
        :type: int
        """
        return self.__requester.per_page

    def __set_per_page(self, value):
        self.__requester.per_page = value

    # v2: Remove this property? Why should it be necessary to read/modify it after construction
    per_page = property(__get_per_page, __set_per_page)

    # v2: Provide a unified way to access values of headers of last response
    # v2: (and add/keep ad hoc properties for specific useful headers like rate limiting, oauth scopes, etc.)
    # v2: Return an instance of a class: using a tuple did not allow to add a field "resettime"
    @property
    def rate_limiting(self):
        """
        First value is requests remaining, second value is request limit.
        :type: (int, int)
        """
        remaining, limit = self.__requester.rate_limiting
        if limit < 0:
            self.get_rate_limit()
        return self.__requester.rate_limiting

    @property
    def rate_limiting_resettime(self):
        """
        Unix timestamp indicating when rate limiting will reset.
        :type: int
        """
        if self.__requester.rate_limiting_resettime == 0:
            self.get_rate_limit()
        return self.__requester.rate_limiting_resettime

    def get_rate_limit(self):
        """
        Don't forget you can access the rate limit returned in headers of last Github API v3 response, by :attr:`github.MainClass.Github.rate_limiting` and :attr:`github.MainClass.Github.rate_limiting_resettime`.

        :calls: `GET /rate_limit <http://developer.github.com/v3/rate_limit>`_
        :rtype: :class:`github.RateLimit.RateLimit`
        """
        headers, attributes = self.__requester.requestJsonAndCheck(
            'GET',
            '/rate_limit'
        )
        return RateLimit.RateLimit(self.__requester, headers, attributes, True)

    @property
    def oauth_scopes(self):
        """
        :type: list of string
        """
        return self.__requester.oauth_scopes

    def get_license(self, key=github.GithubObject.NotSet):
        """
        :calls: `GET /license/:license <https://developer.github.com/v3/licenses/#get-an-individual-license>`_
        :param key: string
        :rtype: :class:`github.License.License`
        """

        assert isinstance(key, (str, unicode)), key
        headers, data = self.__requester.requestJsonAndCheck(
            "GET",
            "/licenses/" + key
        )
        return github.License.License(self.__requester, headers, data, completed=True)

    def get_licenses(self):
        """
        :calls: `GET /licenses <https://developer.github.com/v3/licenses/#list-all-licenses>`_
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.License.License`
        """

        url_parameters = dict()

        return github.PaginatedList.PaginatedList(
            github.License.License,
            self.__requester,
            "/licenses",
            url_parameters
        )

    def get_user(self, login=github.GithubObject.NotSet):
        """
        :calls: `GET /users/:user <http://developer.github.com/v3/users>`_ or `GET /user <http://developer.github.com/v3/users>`_
        :param login: string
        :rtype: :class:`github.NamedUser.NamedUser`
        """
        assert login is github.GithubObject.NotSet or isinstance(login, (str, unicode)), login
        if login is github.GithubObject.NotSet:
            return AuthenticatedUser.AuthenticatedUser(self.__requester, {}, {"url": "/user"}, completed=False)
        else:
            headers, data = self.__requester.requestJsonAndCheck(
                "GET",
                "/users/" + login
            )
            return github.NamedUser.NamedUser(self.__requester, headers, data, completed=True)

    def get_users(self, since=github.GithubObject.NotSet):
        """
        :calls: `GET /users <http://developer.github.com/v3/users>`_
        :param since: integer
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
        """
        assert since is github.GithubObject.NotSet or isinstance(since, (int, long)), since
        url_parameters = dict()
        if since is not github.GithubObject.NotSet:
            url_parameters["since"] = since
        return github.PaginatedList.PaginatedList(
            github.NamedUser.NamedUser,
            self.__requester,
            "/users",
            url_parameters
        )

    def get_organization(self, login):
        """
        :calls: `GET /orgs/:org <http://developer.github.com/v3/orgs>`_
        :param login: string
        :rtype: :class:`github.Organization.Organization`
        """
        assert isinstance(login, (str, unicode)), login
        headers, data = self.__requester.requestJsonAndCheck(
            "GET",
            "/orgs/" + login
        )
        return github.Organization.Organization(self.__requester, headers, data, completed=True)

    def get_organizations(self, since=github.GithubObject.NotSet):
        """
        :calls: `GET /organizations <http://developer.github.com/v3/orgs#list-all-organizations>`_
        :param since: integer
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Organization.Organization`
        """
        assert since is github.GithubObject.NotSet or isinstance(since, (int, long)), since
        url_parameters = dict()
        if since is not github.GithubObject.NotSet:
            url_parameters["since"] = since
        return github.PaginatedList.PaginatedList(
            github.NamedUser.NamedUser,
            self.__requester,
            "/organizations",
            url_parameters
        )

    def get_repo(self, full_name_or_id, lazy=True):
        """
        :calls: `GET /repos/:owner/:repo <http://developer.github.com/v3/repos>`_ or `GET /repositories/:id <http://developer.github.com/v3/repos>`_
        :rtype: :class:`github.Repository.Repository`
        """
        assert isinstance(full_name_or_id, (str, unicode, int, long)), full_name_or_id
        url_base = "/repositories/" if isinstance(full_name_or_id, int) or isinstance(full_name_or_id, long) else "/repos/"
        url = "%s%s" % (url_base, full_name_or_id)
        if lazy:
            return Repository.Repository(self.__requester, {}, {"url": url}, completed=False)
        headers, data = self.__requester.requestJsonAndCheck(
            "GET",
            "%s%s" % (url_base, full_name_or_id)
        )
        return Repository.Repository(self.__requester, headers, data, completed=True)

    def get_repos(self, since=github.GithubObject.NotSet):
        """
        :calls: `GET /repositories <http://developer.github.com/v3/repos/#list-all-public-repositories>`_
        :param since: integer
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository`
        """
        assert since is github.GithubObject.NotSet or isinstance(since, (int, long)), since
        url_parameters = dict()
        if since is not github.GithubObject.NotSet:
            url_parameters["since"] = since
        return github.PaginatedList.PaginatedList(
            github.Repository.Repository,
            self.__requester,
            "/repositories",
            url_parameters
        )

    def get_gist(self, id):
        """
        :calls: `GET /gists/:id <http://developer.github.com/v3/gists>`_
        :param id: string
        :rtype: :class:`github.Gist.Gist`
        """
        assert isinstance(id, (str, unicode)), id
        headers, data = self.__requester.requestJsonAndCheck(
            "GET",
            "/gists/" + id
        )
        return github.Gist.Gist(self.__requester, headers, data, completed=True)

    def get_gists(self):
        """
        :calls: `GET /gists/public <http://developer.github.com/v3/gists>`_
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Gist.Gist`
        """
        return github.PaginatedList.PaginatedList(
            github.Gist.Gist,
            self.__requester,
            "/gists/public",
            None
        )

    def search_repositories(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers):
        """
        :calls: `GET /search/repositories <http://developer.github.com/v3/search>`_
        :param query: string
        :param sort: string ('stars', 'forks', 'updated')
        :param order: string ('asc', 'desc')
        :param qualifiers: keyword dict query qualifiers
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Repository.Repository`
        """
        assert isinstance(query, (str, unicode)), query
        url_parameters = dict()
        if sort is not github.GithubObject.NotSet:  # pragma no branch (Should be covered)
            assert sort in ('stars', 'forks', 'updated'), sort
            url_parameters["sort"] = sort
        if order is not github.GithubObject.NotSet:  # pragma no branch (Should be covered)
            assert order in ('asc', 'desc'), order
            url_parameters["order"] = order

        query_chunks = []
        if query:  # pragma no branch (Should be covered)
            query_chunks.append(query)

        for qualifier, value in qualifiers.items():
            query_chunks.append("%s:%s" % (qualifier, value))

        url_parameters["q"] = ' '.join(query_chunks)
        assert url_parameters["q"], "need at least one qualifier"

        return github.PaginatedList.PaginatedList(
            github.Repository.Repository,
            self.__requester,
            "/search/repositories",
            url_parameters
        )

    def search_users(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers):
        """
        :calls: `GET /search/users <http://developer.github.com/v3/search>`_
        :param query: string
        :param sort: string ('followers', 'repositories', 'joined')
        :param order: string ('asc', 'desc')
        :param qualifiers: keyword dict query qualifiers
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.NamedUser.NamedUser`
        """
        assert isinstance(query, (str, unicode)), query
        url_parameters = dict()
        if sort is not github.GithubObject.NotSet:
            assert sort in ('followers', 'repositories', 'joined'), sort
            url_parameters["sort"] = sort
        if order is not github.GithubObject.NotSet:
            assert order in ('asc', 'desc'), order
            url_parameters["order"] = order

        query_chunks = []
        if query:
            query_chunks.append(query)

        for qualifier, value in qualifiers.items():
            query_chunks.append("%s:%s" % (qualifier, value))

        url_parameters["q"] = ' '.join(query_chunks)
        assert url_parameters["q"], "need at least one qualifier"

        return github.PaginatedList.PaginatedList(
            github.NamedUser.NamedUser,
            self.__requester,
            "/search/users",
            url_parameters
        )

    def search_issues(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers):
        """
        :calls: `GET /search/issues <http://developer.github.com/v3/search>`_
        :param query: string
        :param sort: string ('comments', 'created', 'updated')
        :param order: string ('asc', 'desc')
        :param qualifiers: keyword dict query qualifiers
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Issue.Issue`
        """
        assert isinstance(query, (str, unicode)), query
        url_parameters = dict()
        if sort is not github.GithubObject.NotSet:
            assert sort in ('comments', 'created', 'updated'), sort
            url_parameters["sort"] = sort
        if order is not github.GithubObject.NotSet:
            assert order in ('asc', 'desc'), order
            url_parameters["order"] = order

        query_chunks = []
        if query:  # pragma no branch (Should be covered)
            query_chunks.append(query)

        for qualifier, value in qualifiers.items():
            query_chunks.append("%s:%s" % (qualifier, value))

        url_parameters["q"] = ' '.join(query_chunks)
        assert url_parameters["q"], "need at least one qualifier"

        return github.PaginatedList.PaginatedList(
            github.Issue.Issue,
            self.__requester,
            "/search/issues",
            url_parameters
        )

    def search_code(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers):
        """
        :calls: `GET /search/code <http://developer.github.com/v3/search>`_
        :param query: string
        :param sort: string ('indexed')
        :param order: string ('asc', 'desc')
        :param qualifiers: keyword dict query qualifiers
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.ContentFile.ContentFile`
        """
        assert isinstance(query, (str, unicode)), query
        url_parameters = dict()
        if sort is not github.GithubObject.NotSet:  # pragma no branch (Should be covered)
            assert sort in ('indexed',), sort
            url_parameters["sort"] = sort
        if order is not github.GithubObject.NotSet:  # pragma no branch (Should be covered)
            assert order in ('asc', 'desc'), order
            url_parameters["order"] = order

        query_chunks = []
        if query:  # pragma no branch (Should be covered)
            query_chunks.append(query)

        for qualifier, value in qualifiers.items():
            query_chunks.append("%s:%s" % (qualifier, value))

        url_parameters["q"] = ' '.join(query_chunks)
        assert url_parameters["q"], "need at least one qualifier"

        return github.PaginatedList.PaginatedList(
            github.ContentFile.ContentFile,
            self.__requester,
            "/search/code",
            url_parameters
        )


    def search_commits(self, query, sort=github.GithubObject.NotSet, order=github.GithubObject.NotSet, **qualifiers):
        """
        :calls: `GET /search/commits <http://developer.github.com/v3/search>`_
        :param query: string
        :param sort: string ('author-date', 'committer-date')
        :param order: string ('asc', 'desc')
        :param qualifiers: keyword dict query qualifiers
        :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Commit.Commit`
        """
        assert isinstance(query, (str, unicode)), query
        url_parameters = dict()
        if sort is not github.GithubObject.NotSet:  # pragma no branch (Should be covered)
            assert sort in ('author-date', 'committer-date'), sort
            url_parameters["sort"] = sort
        if order is not github.GithubObject.NotSet:  # pragma no branch (Should be covered)
            assert order in ('asc', 'desc'), order
            url_parameters["order"] = order

        query_chunks = []
        if query:  # pragma no branch (Should be covered)
            query_chunks.append(query)

        for qualifier, value in qualifiers.items():
            query_chunks.append("%s:%s" % (qualifier, value))

        url_parameters["q"] = ' '.join(query_chunks)
        assert url_parameters["q"], "need at least one qualifier"

        return github.PaginatedList.PaginatedList(
            github.Commit.Commit,
            self.__requester,
            "/search/commits",
            url_parameters,
            headers={
                "Accept": "application/vnd.github.cloak-preview"
            }
        )

    def render_markdown(self, text, context=github.GithubObject.NotSet):
        """
        :calls: `POST /markdown <http://developer.github.com/v3/markdown>`_
        :param text: string
        :param context: :class:`github.Repository.Repository`
        :rtype: string
        """
        assert isinstance(text, (str, unicode)), text
        assert context is github.GithubObject.NotSet or isinstance(context, github.Repository.Repository), context
        post_parameters = {
            "text": text
        }
        if context is not github.GithubObject.NotSet:
            post_parameters["mode"] = "gfm"
            post_parameters["context"] = context._identity
        status, headers, data = self.__requester.requestJson(
            "POST",
            "/markdown",
            input=post_parameters
        )
        return data

    def get_hook(self, name):
        """
        :calls: `GET /hooks/:name <http://developer.github.com/v3/repos/hooks/>`_
        :param name: string
        :rtype: :class:`github.HookDescription.HookDescription`
        """
        assert isinstance(name, (str, unicode)), name
        headers, attributes = self.__requester.requestJsonAndCheck(
            "GET",
            "/hooks/" + name
        )
        return HookDescription.HookDescription(self.__requester, headers, attributes, completed=True)

    def get_hooks(self):
        """
        :calls: `GET /hooks <http://developer.github.com/v3/repos/hooks/>`_
        :rtype: list of :class:`github.HookDescription.HookDescription`
        """
        headers, data = self.__requester.requestJsonAndCheck(
            "GET",
            "/hooks"
        )
        return [HookDescription.HookDescription(self.__requester, headers, attributes, completed=True) for attributes in data]

    def get_gitignore_templates(self):
        """
        :calls: `GET /gitignore/templates <http://developer.github.com/v3/gitignore>`_
        :rtype: list of string
        """
        headers, data = self.__requester.requestJsonAndCheck(
            "GET",
            "/gitignore/templates"
        )
        return data

    def get_gitignore_template(self, name):
        """
        :calls: `GET /gitignore/templates/:name <http://developer.github.com/v3/gitignore>`_
        :rtype: :class:`github.GitignoreTemplate.GitignoreTemplate`
        """
        assert isinstance(name, (str, unicode)), name
        headers, attributes = self.__requester.requestJsonAndCheck(
            "GET",
            "/gitignore/templates/" + name
        )
        return GitignoreTemplate.GitignoreTemplate(self.__requester, headers, attributes, completed=True)

    def get_emojis(self):
        """
        :calls: `GET /emojis <http://developer.github.com/v3/emojis/>`_
        :rtype: dictionary of type => url for emoji`
        """
        headers, attributes = self.__requester.requestJsonAndCheck(
            "GET",
            "/emojis"
        )
        return attributes

    def create_from_raw_data(self, klass, raw_data, headers={}):
        """
        Creates an object from raw_data previously obtained by :attr:`github.GithubObject.GithubObject.raw_data`,
        and optionaly headers previously obtained by :attr:`github.GithubObject.GithubObject.raw_headers`.

        :param klass: the class of the object to create
        :param raw_data: dict
        :param headers: dict
        :rtype: instance of class ``klass``
        """
        return klass(self.__requester, headers, raw_data, completed=True)

    def dump(self, obj, file, protocol=0):
        """
        Dumps (pickles) a PyGithub object to a file-like object.
        Some effort is made to not pickle sensitive informations like the Github credentials used in the :class:`Github` instance.
        But NO EFFORT is made to remove sensitive information from the object's attributes.

        :param obj: the object to pickle
        :param file: the file-like object to pickle to
        :param protocol: the `pickling protocol <http://docs.python.org/2.7/library/pickle.html#data-stream-format>`_
        """
        pickle.dump((obj.__class__, obj.raw_data, obj.raw_headers), file, protocol)

    def load(self, f):
        """
        Loads (unpickles) a PyGithub object from a file-like object.

        :param f: the file-like object to unpickle from
        :return: the unpickled object
        """
        return self.create_from_raw_data(*pickle.load(f))

    def get_api_status(self):
        """
        This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.

        :calls: `GET /api/status.json <https://status.github.com/api>`_
        :rtype: :class:`github.Status.Status`
        """
        headers, attributes = self.__requester.requestJsonAndCheck(
            "GET",
            DEFAULT_STATUS_URL + "/api/status.json"
        )
        return Status.Status(self.__requester, headers, attributes, completed=True)

    def get_last_api_status_message(self):
        """
        This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.

        :calls: `GET /api/last-message.json <https://status.github.com/api>`_
        :rtype: :class:`github.StatusMessage.StatusMessage`
        """
        headers, attributes = self.__requester.requestJsonAndCheck(
            "GET",
            DEFAULT_STATUS_URL + "/api/last-message.json"
        )
        return StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True)

    def get_api_status_messages(self):
        """
        This doesn't work with a Github Enterprise installation, because it always targets https://status.github.com.

        :calls: `GET /api/messages.json <https://status.github.com/api>`_
        :rtype: list of :class:`github.StatusMessage.StatusMessage`
        """
        headers, data = self.__requester.requestJsonAndCheck(
            "GET",
            DEFAULT_STATUS_URL + "/api/messages.json"
        )
        return [StatusMessage.StatusMessage(self.__requester, headers, attributes, completed=True) for attributes in data]

    def get_installation(self, id):
        """

        :param id:
        :return:
        """
        return Installation.Installation(self.__requester, headers={}, attributes={"id": id}, completed=True)


class GithubIntegration(object):
    """
    Main class to obtain tokens for a GitHub integration.
    """

    def __init__(self, integration_id, private_key):
        """
        :param integration_id: int
        :param private_key: string
        """
        self.integration_id = integration_id
        self.private_key = private_key

    def create_jwt(self):
        """
        Creates a signed JWT, valid for 60 seconds.
        :return:
        """
        now = int(time.time())
        payload = {
            "iat": now,
            "exp": now + 60,
            "iss": self.integration_id
        }
        encrypted = jwt.encode(
            payload,
            key=self.private_key,
            algorithm="RS256"
        )

        if atLeastPython3:
            encrypted = encrypted.decode('utf-8')

        return encrypted

    def get_access_token(self, installation_id, user_id=None):
        """
        Get an access token for the given installation id.
        POSTs https://api.github.com/installations/<installation_id>/access_tokens
        :param user_id: int
        :param installation_id: int
        :return: :class:`github.InstallationAuthorization.InstallationAuthorization`
        """
        body = None
        if user_id:
            body = json.dumps({"user_id": user_id})
        conn = HTTPSConnection("api.github.com")
        conn.request(
            method="POST",
            url="/installations/{}/access_tokens".format(installation_id),
            headers={
                "Authorization": "Bearer {}".format(self.create_jwt()),
                "Accept": "application/vnd.github.machine-man-preview+json",
                "User-Agent": "PyGithub/Python"
            },
            body=body
        )
        response = conn.getresponse()
        response_text = response.read()

        if atLeastPython3:
            response_text = response_text.decode('utf-8')

        conn.close()
        if response.status == 201:
            data = json.loads(response_text)
            return InstallationAuthorization.InstallationAuthorization(
                requester=None,  # not required, this is a NonCompletableGithubObject
                headers={},  # not required, this is a NonCompletableGithubObject
                attributes=data,
                completed=True
            )
        elif response.status == 403:
            raise GithubException.BadCredentialsException(
                status=response.status,
                data=response_text
            )
        elif response.status == 404:
            raise GithubException.UnknownObjectException(
                status=response.status,
                data=response_text
            )
        raise GithubException.GithubException(
            status=response.status,
            data=response_text
        )


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
8 Jan 2025 10.42 AM
root / linksafe
0755
AuthenticatedUser.py
49.595 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
AuthenticatedUser.pyc
44.759 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
AuthenticatedUser.pyo
39.767 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Authorization.py
7.981 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Authorization.pyc
6.695 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Authorization.pyo
5.755 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
AuthorizationApplication.py
3.279 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
AuthorizationApplication.pyc
1.924 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
AuthorizationApplication.pyo
1.924 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Branch.py
4.253 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Branch.pyc
2.836 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Branch.pyo
2.836 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Commit.py
11.098 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Commit.pyc
8.979 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Commit.pyo
8.511 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitCombinedStatus.py
4.72 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
CommitCombinedStatus.pyc
3.784 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitCombinedStatus.pyo
3.784 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitComment.py
8.9 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
CommitComment.pyc
7.638 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitComment.pyo
7.255 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitStats.py
3.356 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
CommitStats.pyc
1.853 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitStats.pyo
1.853 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitStatus.py
5.739 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
CommitStatus.pyc
4.189 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
CommitStatus.pyo
4.189 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Comparison.py
7.294 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Comparison.pyc
5.474 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Comparison.pyo
5.474 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Consts.py
2.718 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Consts.pyc
0.362 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Consts.pyo
0.362 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
ContentFile.py
8.046 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
ContentFile.pyc
6.306 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
ContentFile.pyo
6.214 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Download.py
10.745 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Download.pyc
8.128 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Download.pyo
8.128 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Event.py
5.251 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Event.pyc
3.919 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Event.pyo
3.919 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
File.py
6.13 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
File.pyc
4.405 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
File.pyo
4.405 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Gist.py
13.983 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Gist.pyc
12.719 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Gist.pyo
12.191 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GistComment.py
5.575 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GistComment.pyc
4.341 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GistComment.pyo
4.254 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GistFile.py
4.375 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GistFile.pyc
2.937 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GistFile.pyo
2.937 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GistHistoryState.py
10.255 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GistHistoryState.pyc
8.48 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GistHistoryState.pyo
8.48 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitAuthor.py
3.473 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitAuthor.pyc
2.065 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitAuthor.pyo
2.065 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitBlob.py
4.318 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitBlob.pyc
2.817 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitBlob.pyo
2.817 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitCommit.py
5.674 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitCommit.pyc
4.261 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitCommit.pyo
4.261 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitObject.py
3.44 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitObject.pyc
2.022 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitObject.pyo
2.022 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitRef.py
5.187 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitRef.pyc
4.081 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitRef.pyo
3.939 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitRelease.py
10.492 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitRelease.pyc
9.066 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitRelease.pyo
8.792 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitReleaseAsset.py
7.696 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitReleaseAsset.pyc
6.823 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitReleaseAsset.pyo
6.702 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitTag.py
4.812 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitTag.pyc
3.312 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitTag.pyo
3.312 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitTree.py
3.813 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitTree.pyc
2.482 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitTree.pyo
2.482 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitTreeElement.py
4.309 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitTreeElement.pyc
3.004 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitTreeElement.pyo
3.004 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GithubException.py
4.838 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GithubException.pyc
4.843 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GithubException.pyo
4.843 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GithubObject.py
11.13 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GithubObject.pyc
13.67 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GithubObject.pyo
13.67 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitignoreTemplate.py
3.198 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
GitignoreTemplate.pyc
1.884 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
GitignoreTemplate.pyo
1.884 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Hook.py
9.303 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Hook.pyc
7.957 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Hook.pyo
7.021 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
HookDescription.py
3.896 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
HookDescription.pyc
2.513 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
HookDescription.pyo
2.513 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
HookResponse.py
3.491 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
HookResponse.pyc
2.088 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
HookResponse.pyo
2.088 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InputFileContent.py
2.899 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
InputFileContent.pyc
1.359 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InputFileContent.pyo
1.206 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InputGitAuthor.py
3.252 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
InputGitAuthor.pyc
1.672 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InputGitAuthor.pyo
1.484 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InputGitTreeElement.py
3.429 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
InputGitTreeElement.pyc
1.814 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InputGitTreeElement.pyo
1.541 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Installation.py
3.497 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Installation.pyc
2.676 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Installation.pyo
2.676 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InstallationAuthorization.py
3.315 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
InstallationAuthorization.pyc
2.418 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
InstallationAuthorization.pyo
2.418 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Invitation.py
4.336 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Invitation.pyc
3.34 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Invitation.pyo
3.34 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Issue.py
23.746 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Issue.pyc
21.235 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Issue.pyo
18.802 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
IssueComment.py
8.03 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
IssueComment.pyc
6.69 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
IssueComment.pyo
6.308 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
IssueEvent.py
5.237 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
IssueEvent.pyc
3.717 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
IssueEvent.pyo
3.717 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
IssuePullRequest.py
3.382 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
IssuePullRequest.pyc
1.898 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
IssuePullRequest.pyo
1.898 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Label.py
5.372 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Label.pyc
3.977 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Label.pyo
3.804 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Legacy.py
7.395 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Legacy.pyc
4.208 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Legacy.pyo
4.124 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
License.py
5.959 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
License.pyc
4.862 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
License.pyo
4.862 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
MainClass.py
30.19 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
MainClass.pyc
26.448 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
MainClass.pyo
24.163 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Milestone.py
9.465 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Milestone.pyc
7.837 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Milestone.pyo
7.584 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
NamedUser.py
24.156 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
NamedUser.pyc
22.036 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
NamedUser.pyo
21.73 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Notification.py
5.968 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Notification.pyc
4.502 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Notification.pyo
4.502 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
NotificationSubject.py
3.792 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
NotificationSubject.pyc
2.566 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
NotificationSubject.pyo
2.566 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Organization.py
38.13 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Organization.pyc
32.607 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Organization.pyo
28.64 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PaginatedList.py
8.568 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
PaginatedList.pyc
7.715 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PaginatedList.pyo
7.658 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Permissions.py
3.549 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Permissions.pyc
2.09 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Permissions.pyo
2.09 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Plan.py
3.828 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Plan.pyc
2.325 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Plan.pyo
2.325 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequest.py
35.244 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
PullRequest.pyc
32.456 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequest.pyo
29.719 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestComment.py
10.708 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
PullRequestComment.pyc
9.207 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestComment.pyo
8.824 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestMergeStatus.py
3.713 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
PullRequestMergeStatus.pyc
2.312 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestMergeStatus.pyo
2.312 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestPart.py
4.177 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
PullRequestPart.pyc
2.879 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestPart.pyo
2.879 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestReview.py
5.572 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
PullRequestReview.pyc
4.439 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
PullRequestReview.pyo
4.439 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Rate.py
3.384 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Rate.pyc
2.15 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Rate.pyo
2.15 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
RateLimit.py
2.786 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
RateLimit.pyc
1.586 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
RateLimit.pyo
1.586 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Reaction.py
4.037 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Reaction.pyc
3.219 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Reaction.pyo
3.219 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Repository.py
113.646 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Repository.pyc
97.837 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Repository.pyo
87.615 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
RepositoryKey.py
5.561 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
RepositoryKey.pyc
4.018 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
RepositoryKey.pyo
4.018 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Requester.py
20.501 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Requester.pyc
18.003 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Requester.pyo
17.534 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
SourceImport.py
7.091 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
SourceImport.pyc
5.672 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
SourceImport.pyo
5.672 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Stargazer.py
3.091 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Stargazer.pyc
1.979 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Stargazer.pyo
1.979 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsCodeFrequency.py
3.076 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
StatsCodeFrequency.pyc
2.034 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsCodeFrequency.pyo
2.034 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsCommitActivity.py
3.219 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
StatsCommitActivity.pyc
2.089 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsCommitActivity.pyo
2.089 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsContributor.py
4.753 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
StatsContributor.pyc
4.067 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsContributor.pyo
4.067 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsParticipation.py
2.979 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
StatsParticipation.pyc
1.782 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsParticipation.pyo
1.782 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsPunchCard.py
2.683 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
StatsPunchCard.pyc
1.468 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatsPunchCard.pyo
1.468 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Status.py
3.07 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Status.pyc
1.828 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Status.pyo
1.828 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatusMessage.py
3.299 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
StatusMessage.pyc
2.158 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
StatusMessage.pyo
2.158 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Tag.py
4.101 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Tag.pyc
2.492 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Tag.pyo
2.492 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Team.py
14.929 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
Team.pyc
13.069 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
Team.pyo
12.16 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
UserKey.py
4.573 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
UserKey.pyc
3.236 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
UserKey.pyo
3.236 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
__init__.py
3.31 KB
26 Jun 2018 1.05 AM
root / linksafe
0644
__init__.pyc
1.472 KB
18 Oct 2019 2.21 PM
root / linksafe
0644
__init__.pyo
1.472 KB
18 Oct 2019 2.21 PM
root / linksafe
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF