mirror of
				https://github.com/RGBCube/GitHubWrapper
				synced 2025-10-31 14:02:46 +00:00 
			
		
		
		
	
						commit
						a7e6910fcc
					
				
					 30 changed files with 398 additions and 147 deletions
				
			
		
							
								
								
									
										69
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,69 @@ | |||
| # Credits to most of this template go to Rapptz (https://github.com/Rapptz) | ||||
| # as this was taken from the discord.py repository (https://github.com/Rapptz/discord.py/blob/868476c99963e72aa529ed6203f86ef529a2c1f1/.github/ISSUE_TEMPLATE/bug_report.yml) | ||||
| name: Bug Report | ||||
| 
 | ||||
| description: Report broken or incorrect behaviour | ||||
| 
 | ||||
| labels: | ||||
|   - bug | ||||
| 
 | ||||
| body: | ||||
|   - type: markdown | ||||
|     attributes: | ||||
|       value: | | ||||
|         Thanks for taking the time to fill out a bug. | ||||
|         If you want real-time support, consider joining our [Discord server](https://discord.gg/pTJfS4TkWe) instead. | ||||
| 
 | ||||
|         Please note that this form is for bugs only! | ||||
| 
 | ||||
|   - type: input | ||||
|     attributes: | ||||
|       label: Summary | ||||
|       description: A simple summary of your bug report. | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Reproduction Steps | ||||
|       description: What you do to make it happen? | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Minimal Reproducible Code | ||||
|       description: A short snippet of code that showcases the bug. | ||||
|       render: Python | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Expected Results | ||||
|       description: What did you expect to happen? | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Actual Results | ||||
|       description: What actually happened? | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: checkboxes | ||||
|     attributes: | ||||
|       label: Checklist | ||||
|       description: | | ||||
|         Let's make sure you've properly done due diligence when reporting this issue! | ||||
|       options: | ||||
|         - label: I have searched the open issues for duplicates. | ||||
|           required: true | ||||
|         - label: I have shown the entire traceback, if possible. | ||||
|           required: true | ||||
|         - label: I have removed my token from display, if visible. | ||||
|           required: true | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Additional Context | ||||
|       description: If there is anything else to say, please do so here. | ||||
							
								
								
									
										4
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| contact_links: | ||||
|   - name: Discord Server | ||||
|     about: Use our official Discord server to ask for help and questions. | ||||
|     url: https://discord.gg/pTJfS4TkWe | ||||
							
								
								
									
										56
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,56 @@ | |||
| # Credits to most of this template go to Rapptz (https://github.com/Rapptz) | ||||
| # as this was taken from the discord.py repository (https://github.com/Rapptz/discord.py/blob/868476c99963e72aa529ed6203f86ef529a2c1f1/.github/ISSUE_TEMPLATE/feature_request.yml) | ||||
| name: Feature Request | ||||
| 
 | ||||
| description: Suggest a feature for this library | ||||
| 
 | ||||
| labels: | ||||
|   - enhancement | ||||
| 
 | ||||
| body: | ||||
|   - type: input | ||||
|     attributes: | ||||
|       label: Summary | ||||
|       description: A short summary of what your feature request is. | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: dropdown | ||||
|     attributes: | ||||
|       multiple: false | ||||
|       label: What is the feature request for? | ||||
|       options: | ||||
|         - The library | ||||
|         - The documentation | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: The Problem | ||||
|       description: | | ||||
|         What problem is your feature trying to solve? | ||||
|         What becomes easier or possible when this feature is implemented? | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: The Ideal Solution | ||||
|       description: | | ||||
|         What is your ideal solution to the problem? | ||||
|         What would you like this feature to do? | ||||
|     validations: | ||||
|       required: true | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: The Current Solution | ||||
|       description: What is the current solution to the problem, if any? | ||||
|     validations: | ||||
|       required: false | ||||
| 
 | ||||
|   - type: textarea | ||||
|     attributes: | ||||
|       label: Additional Context | ||||
|       description: If there is anything else to say, please do so here. | ||||
							
								
								
									
										14
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| ## Summary | ||||
| 
 | ||||
| <!-- Summary of your pull request --> | ||||
| 
 | ||||
| ## Checklist | ||||
| 
 | ||||
| <!-- Put an x inside [ ] to check it, like so: [x] --> | ||||
| 
 | ||||
| - [ ] If code changes were made then they have been tested. | ||||
|     - [ ] I have updated the documentation to reflect the changes. | ||||
| - [ ] This PR fixes an issue. | ||||
| - [ ] This PR adds something new (e.g. new method or parameters). | ||||
| - [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed) | ||||
| - [ ] This PR is **not** a code change (e.g. documentation, README, ...) | ||||
							
								
								
									
										30
									
								
								.github/workflows/autoblack.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								.github/workflows/autoblack.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -1,30 +0,0 @@ | |||
| # GitHub Action that uses Black to reformat the Python code in an incoming pull request. | ||||
| # If all Python code in the pull request is compliant with Black then this Action does nothing. | ||||
| # Othewrwise, Black is run and its changes are committed back to the incoming pull request. | ||||
| # https://github.com/cclauss/autoblack | ||||
| 
 | ||||
| name: autoblack | ||||
| on: [pull_request] | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v1 | ||||
|       - name: Set up Python 3.7 | ||||
|         uses: actions/setup-python@v1 | ||||
|         with: | ||||
|           python-version: 3.7 | ||||
|       - name: Install Black | ||||
|         run: pip install black | ||||
|       - name: Run black --check . | ||||
|         run: black --check . | ||||
|       - name: If needed, commit black changes to the pull request | ||||
|         if: failure() | ||||
|         run: | | ||||
|           black . | ||||
|           git config --global user.name 'autoblack' | ||||
|           git config --global user.email 'cclauss@users.noreply.github.com' | ||||
|           git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY | ||||
|           git checkout $GITHUB_HEAD_REF | ||||
|           git commit -am "fixup: Format Python code with Black" | ||||
|           git push | ||||
							
								
								
									
										26
									
								
								.github/workflows/bandit.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/bandit.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| name: Bandit | ||||
| 
 | ||||
| on: [ pull_request, push ] | ||||
| 
 | ||||
| jobs: | ||||
|   build: | ||||
|     if: github.event.pull_request.user.type != 'Bot' | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         python-version: [ '3.8', '3.9', '3.10' ] | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Checkout Repository | ||||
|         uses: actions/checkout@v3 | ||||
| 
 | ||||
|       - name: Set up Python ${{ matrix.python-version }} | ||||
|         uses: actions/setup-python@v2 | ||||
|         with: | ||||
|           python-version: ${{ matrix.python-version }} | ||||
| 
 | ||||
|       - name: Install Bandit | ||||
|         run: pip install -U pip bandit | ||||
| 
 | ||||
|       - name: Run Bandit | ||||
|         run: bandit --recursive ./ | ||||
							
								
								
									
										47
									
								
								.github/workflows/lint.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								.github/workflows/lint.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | |||
| name: Lint | ||||
| 
 | ||||
| on: [ pull_request, push ] | ||||
| 
 | ||||
| jobs: | ||||
|   build: | ||||
|     if: github.event.pull_request.user.type != 'Bot' | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         python-version: [ '3.8', '3.9', '3.10' ] | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Checkout Repository | ||||
|         uses: actions/checkout@v3 | ||||
| 
 | ||||
|       - name: Set up Python ${{ matrix.python-version }} | ||||
|         uses: actions/setup-python@v2 | ||||
|         with: | ||||
|           python-version: ${{ matrix.python-version }} | ||||
| 
 | ||||
|       - name: Install Unimport, Isort, Black, and Flynt | ||||
|         run: pip install -U pip unimport isort black flynt | ||||
| 
 | ||||
|       - name: Run Unimport | ||||
|         continue-on-error: true | ||||
|         run: unimport ./ --ignore-init --gitignore -r | ||||
| 
 | ||||
|       - name: Run Isort | ||||
|         run: isort ./ | ||||
| 
 | ||||
|       - name: Run Black | ||||
|         run: black ./ | ||||
| 
 | ||||
|       - name: Run Flynt | ||||
|         run: flynt ./ -tc | ||||
| 
 | ||||
|       - name: Setup Git | ||||
|         run: git config user.name "Automated Linter" | ||||
| 
 | ||||
|       - name: Push To GitHub | ||||
|         continue-on-error: true | ||||
|         run: | | ||||
|           git pull | ||||
|           git add ./ | ||||
|           git commit --reuse-message=HEAD | ||||
|           git push | ||||
							
								
								
									
										27
									
								
								.github/workflows/pylint.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								.github/workflows/pylint.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -1,23 +1,26 @@ | |||
| name: Pylint | ||||
| name: PyLint | ||||
| 
 | ||||
| on: [push] | ||||
| on: [ pull_request, push ] | ||||
| 
 | ||||
| jobs: | ||||
|   build: | ||||
|     if: github.event.pull_request.user.type != 'Bot' | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         python-version: ["3.8", "3.9", "3.10"] | ||||
|         python-version: [ '3.8', '3.9', '3.10' ] | ||||
| 
 | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|       - name: Checkout Repository | ||||
|         uses: actions/checkout@v3 | ||||
| 
 | ||||
|       - name: Set up Python ${{ matrix.python-version }} | ||||
|       uses: actions/setup-python@v3 | ||||
|         uses: actions/setup-python@v2 | ||||
|         with: | ||||
|           python-version: ${{ matrix.python-version }} | ||||
|     - name: Install dependencies | ||||
|       run: | | ||||
|         python -m pip install --upgrade pip | ||||
|         pip install pylint | ||||
|     - name: Analysing the code with pylint | ||||
|       run: | | ||||
|         pylint $(git ls-files '*.py') | ||||
| 
 | ||||
|       - name: Install PyLint | ||||
|         run: pip install -U pip pylint | ||||
| 
 | ||||
|       - name: Run PyLint | ||||
|         run: pylint $(git ls-files '*.py') | ||||
|  |  | |||
							
								
								
									
										28
									
								
								.github/workflows/pyright.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/pyright.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| name: PyRight | ||||
| 
 | ||||
| on: [ pull_request, push ] | ||||
| 
 | ||||
| jobs: | ||||
|   build: | ||||
|     if: github.event.pull_request.user.type != 'Bot' | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         python-version: [ '3.8', '3.9', '3.10' ] | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Checkout Repository | ||||
|         uses: actions/checkout@v3 | ||||
| 
 | ||||
|       - name: Set up Python ${{ matrix.python-version }} | ||||
|         uses: actions/setup-python@v2 | ||||
|         with: | ||||
|           python-version: ${{ matrix.python-version }} | ||||
| 
 | ||||
|       - name: Install PyRight & Dependencies | ||||
|         run: | | ||||
|           pip install -U pip pyright | ||||
|           pip install -Ur requirements.txt | ||||
| 
 | ||||
|       - name: Run PyRight | ||||
|         run: pyright ./ | ||||
|  | @ -1,4 +1,4 @@ | |||
| version: 1 | ||||
| version: 2 | ||||
| 
 | ||||
| sphinx: | ||||
|   configuration: docs/conf.py | ||||
|  | @ -6,7 +6,7 @@ sphinx: | |||
|   builder: html | ||||
|    | ||||
| python: | ||||
|   version: 3.8 | ||||
|   version: '3.8' | ||||
|   install: | ||||
|     - method: pip | ||||
|       path: . | ||||
|  |  | |||
							
								
								
									
										2
									
								
								LICENSE
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
										
									
									
									
								
							|  | @ -1,6 +1,6 @@ | |||
| MIT License | ||||
| 
 | ||||
| Copyright (c) 2022 - Present VarMonke and sudosnok | ||||
| Copyright (c) 2022-present VarMonke and sudosnok | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
							
								
								
									
										17
									
								
								README.rst
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								README.rst
									
										
									
									
									
								
							|  | @ -16,16 +16,16 @@ Key Features | |||
| Installing | ||||
| ---------- | ||||
| 
 | ||||
| **Python 3.8 or higher** | ||||
| **Python 3.8 or higher is required to run the library** | ||||
| 
 | ||||
| To install the library, run the following command | ||||
| To install the library, run the following command: | ||||
| 
 | ||||
| .. code:: sh | ||||
| 
 | ||||
|   #Linux/macOS | ||||
|   # On Linux or MacOS | ||||
|   python3 -m pip install -U git+https://github.com/VarMonke/Github-Api-Wrapper | ||||
|    | ||||
|   #Windows | ||||
|   # On Windows | ||||
|   py -m pip install -U git+https://github.com/VarMonke/Github-Api-Wrapper | ||||
|    | ||||
| Quick Example | ||||
|  | @ -38,12 +38,14 @@ Quick Example | |||
|    | ||||
|   async def main(): | ||||
|     client = await github.GHClient() | ||||
|     return await client.get_user(user='GithubPythonBot') | ||||
| 
 | ||||
|   user = asyncio.run(main()) | ||||
|     user = await client.get_user(user='GithubPythonBot') | ||||
| 
 | ||||
|     print(user) | ||||
|     print(user.html_url) | ||||
| 
 | ||||
|   asyncio.run(main()) | ||||
| 
 | ||||
| .. code:: sh | ||||
|   # Output | ||||
|   <User login: 'GithubPythonBot', id: 104489846, created_at: 2022-04-27 07:31:26> | ||||
|  | @ -52,4 +54,5 @@ Quick Example | |||
|    | ||||
| Links | ||||
| ----- | ||||
| `Discord Server <https://discord.gg/DWhwsQ5TsT>`_ | ||||
| - `Discord Server <https://discord.gg/DWhwsQ5TsT>`_ | ||||
| - `GitHub API Documentation <https://docs.github.com/en/rest>`_ | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| MIT License | ||||
| 
 | ||||
| Copyright (c) 2022 - Present Jess, VarMonke and sudosnok | ||||
| Copyright (c) 2022-present Jess, VarMonke and sudosnok | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| MIT License | ||||
| 
 | ||||
| Copyright (c) 2015-present Rapptz | ||||
| Copyright (c) 2022 - Present Rapptz, VarMonke and sudosnok  | ||||
| Copyright (c) 2015-2022 Rapptz | ||||
| Copyright (c) 2022-present VarMonke and sudosnok | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| import logging | ||||
| import sys | ||||
| import os | ||||
| import re | ||||
| import sys | ||||
| 
 | ||||
| # If extensions (or modules to document with autodoc) are in another directory, | ||||
| # add these directories to sys.path here. If the directory is relative to the | ||||
|  | @ -85,7 +85,7 @@ with open('../github/__init__.py') as f: | |||
| release = version | ||||
| 
 | ||||
| # This assumes a tag is available for final releases | ||||
| branch = 'master' if version.endswith('a') else 'v' + version | ||||
| branch = 'master' if version.endswith('a') else f"v{version}" | ||||
| 
 | ||||
| # The language for content autogenerated by Sphinx. Refer to documentation | ||||
| # for a list of supported languages. | ||||
|  |  | |||
|  | @ -1,8 +1,9 @@ | |||
| from __future__ import annotations | ||||
| 
 | ||||
| import importlib | ||||
| import inspect | ||||
| import re | ||||
| from typing import Dict, List, NamedTuple, Optional, Tuple, Sequence, TYPE_CHECKING | ||||
| from typing import TYPE_CHECKING, Dict, List, NamedTuple, Optional, Sequence, Tuple | ||||
| 
 | ||||
| from docutils import nodes | ||||
| from sphinx import addnodes | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ class DPYStandaloneHTMLBuilder(StandaloneHTMLBuilder): | |||
|             self.handle_page('genindex-all', genindexcontext, 'genindex.html') | ||||
|             for (key, entries), count in zip(genindex, indexcounts): | ||||
|                 ctx = {'key': key, 'entries': entries, 'count': count, 'genindexentries': genindex} | ||||
|                 self.handle_page('genindex-' + key, ctx, 'genindex-single.html') | ||||
|                 self.handle_page(f"genindex-{key}", ctx, 'genindex-single.html') | ||||
|         else: | ||||
|             self.handle_page('genindex', genindexcontext, 'genindex.html') | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| from docutils.parsers.rst import Directive | ||||
| from docutils.parsers.rst import states, directives  # type: ignore | ||||
| from docutils.parsers.rst.roles import set_classes | ||||
| from docutils import nodes | ||||
| from docutils.parsers.rst import directives  # type: ignore | ||||
| from docutils.parsers.rst import Directive | ||||
| from docutils.parsers.rst.roles import set_classes | ||||
| 
 | ||||
| 
 | ||||
| class details(nodes.General, nodes.Element): | ||||
|  |  | |||
|  | @ -1,8 +1,5 @@ | |||
| from docutils.parsers.rst import Directive | ||||
| from docutils.parsers.rst import states, directives  # type: ignore | ||||
| from docutils.parsers.rst.roles import set_classes | ||||
| from docutils import nodes | ||||
| from sphinx.locale import _ | ||||
| from docutils.parsers.rst import Directive | ||||
| 
 | ||||
| 
 | ||||
| class exception_hierarchy(nodes.General, nodes.Element): | ||||
|  |  | |||
|  | @ -4,11 +4,10 @@ | |||
| 
 | ||||
| from typing import Any, Dict, List, Tuple | ||||
| 
 | ||||
| import sphinx | ||||
| from docutils import nodes, utils | ||||
| from docutils.nodes import Node, system_message | ||||
| from docutils.parsers.rst.states import Inliner | ||||
| 
 | ||||
| import sphinx | ||||
| from sphinx.application import Sphinx | ||||
| from sphinx.util.nodes import split_explicit_title | ||||
| from sphinx.util.typing import RoleFunction | ||||
|  |  | |||
|  | @ -4,10 +4,10 @@ __title__ = 'Github-Api-Wrapper' | |||
| __authors__ = 'VarMonke', 'sudosnok' | ||||
| __version__ = '1.2.1' | ||||
| __license__ = 'MIT' | ||||
| __copyright__ = 'Copyright (c) 2020 VarMonke & sudosnok' | ||||
| __copyright__ = 'Copyright (c) 2022-present VarMonke & sudosnok' | ||||
| 
 | ||||
| from .client import * | ||||
| from .objects import * | ||||
| from .http import * | ||||
| from .urls import * | ||||
| from .exceptions import * | ||||
| from .http import * | ||||
| from .objects import * | ||||
| from .urls import * | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ | |||
| from __future__ import annotations | ||||
| 
 | ||||
| from collections import deque | ||||
| from typing import Any, Deque, Tuple, TypeVar, Dict | ||||
| from typing import Any, Deque, Dict, Tuple, TypeVar | ||||
| 
 | ||||
| __all__: Tuple[str, ...] = ('ObjectCache',) | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,29 +2,29 @@ | |||
| from __future__ import annotations | ||||
| 
 | ||||
| import functools | ||||
| import aiohttp | ||||
| 
 | ||||
| from typing import ( | ||||
|     Any, | ||||
|     Awaitable, | ||||
|     Callable, | ||||
|     Literal, | ||||
|     Any, | ||||
|     Coroutine, | ||||
|     Dict, | ||||
|     Generator, | ||||
|     List, | ||||
|     Literal, | ||||
|     Optional, | ||||
|     Tuple, | ||||
|     Union, | ||||
|     List, | ||||
|     overload, | ||||
|     TypeVar, | ||||
|     Union, | ||||
|     overload, | ||||
| ) | ||||
| from typing_extensions import Self, ParamSpec, Concatenate | ||||
| 
 | ||||
| import aiohttp | ||||
| from typing_extensions import Concatenate, ParamSpec, Self | ||||
| 
 | ||||
| from . import exceptions | ||||
| from .cache import ObjectCache | ||||
| from .http import http | ||||
| from .objects import Gist, Issue, Organization, Repository, User, File | ||||
| from .objects import File, Gist, Issue, Organization, Repository, User | ||||
| 
 | ||||
| __all__: Tuple[str, ...] = ('GHClient', 'Client') | ||||
| 
 | ||||
|  |  | |||
|  | @ -65,7 +65,7 @@ class Ratelimited(APIError): | |||
| 
 | ||||
|     def __init__(self, reset_time: datetime.datetime): | ||||
|         formatted = reset_time.strftime(r"%H:%M:%S %A, %d %b") | ||||
|         msg = "We're being ratelimited, wait until {}.\nAuthentication raises the ratelimit.".format(formatted) | ||||
|         msg = f"We're being ratelimited, wait until {formatted}.\nAuthentication raises the ratelimit." | ||||
|         super().__init__(msg) | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,27 +1,21 @@ | |||
| # == http.py ==# | ||||
| 
 | ||||
| from __future__ import annotations | ||||
| from asyncio.base_subprocess import ReadSubprocessPipeProto | ||||
| from base64 import b64encode | ||||
| 
 | ||||
| import json | ||||
| import platform | ||||
| import re | ||||
| from datetime import datetime | ||||
| from types import SimpleNamespace | ||||
| from typing import Any, Dict, Literal, NamedTuple, Optional, Type, Tuple, Union, List | ||||
| from typing_extensions import TypeAlias, reveal_type | ||||
| import platform | ||||
| from typing import Any, Dict, List, NamedTuple, Optional, Tuple, Type, Union | ||||
| 
 | ||||
| import aiohttp | ||||
| from typing_extensions import TypeAlias | ||||
| 
 | ||||
| from .exceptions import * | ||||
| from .exceptions import GistNotFound, RepositoryAlreadyExists, MissingPermissions | ||||
| from .exceptions import FileAlreadyExists | ||||
| from .exceptions import ResourceAlreadyExists | ||||
| from .exceptions import Ratelimited | ||||
| from .objects import User, Gist, Repository, File, bytes_to_b64 | ||||
| from .urls import * | ||||
| from . import __version__ | ||||
| from .exceptions import * | ||||
| from .objects import File, Gist, Repository, User, bytes_to_b64 | ||||
| from .urls import * | ||||
| 
 | ||||
| __all__: Tuple[str, ...] = ( | ||||
|     'Paginator', | ||||
|  | @ -73,9 +67,10 @@ APIType: TypeAlias = Union[User, Gist, Repository] | |||
| async def make_session(*, headers: Dict[str, str], authorization: Union[aiohttp.BasicAuth, None]) -> aiohttp.ClientSession: | ||||
|     """This makes the ClientSession, attaching the trace config and ensuring a UA header is present.""" | ||||
|     if not headers.get('User-Agent'): | ||||
|         headers[ | ||||
|             'User-Agent' | ||||
|         ] = f'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @ {__version__} Python {platform.python_version()} aiohttp {aiohttp.__version__}' | ||||
|         headers['User-Agent'] = ( | ||||
|             f'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @ {__version__} Python' | ||||
|             f' {platform.python_version()} aiohttp {aiohttp.__version__}' | ||||
|         ) | ||||
| 
 | ||||
|     session = aiohttp.ClientSession(auth=authorization, headers=headers, trace_configs=[trace_config]) | ||||
|     session._rates = Rates('', '', '', '', '') | ||||
|  | @ -140,9 +135,10 @@ class Paginator: | |||
| class http: | ||||
|     def __init__(self, headers: Dict[str, Union[str, int]], auth: Union[aiohttp.BasicAuth, None]) -> None: | ||||
|         if not headers.get('User-Agent'): | ||||
|             headers[ | ||||
|                 'User-Agent' | ||||
|             ] = f'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @ {__version__} Python/{platform.python_version()} aiohttp/{aiohttp.__version__}' | ||||
|             headers['User-Agent'] = ( | ||||
|                 'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @' | ||||
|                 f' {__version__} Python/{platform.python_version()} aiohttp/{aiohttp.__version__}' | ||||
|             ) | ||||
| 
 | ||||
|         self._rates = Rates('', '', '', '', '') | ||||
|         self.headers = headers | ||||
|  |  | |||
|  | @ -1,18 +1,15 @@ | |||
| # == objects.py ==# | ||||
| from __future__ import annotations | ||||
| 
 | ||||
| from base64 import b64encode | ||||
| import json | ||||
| 
 | ||||
| from typing import TYPE_CHECKING, Any, Literal, Optional, Tuple, Union, Dict, List | ||||
| 
 | ||||
| import aiohttp | ||||
| from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union | ||||
| 
 | ||||
| if TYPE_CHECKING: | ||||
|     from .http import http | ||||
| 
 | ||||
| from datetime import datetime | ||||
| import io | ||||
| import os | ||||
| from datetime import datetime | ||||
| 
 | ||||
| __all__: Tuple[str, ...] = ( | ||||
|     'APIObject', | ||||
|  | @ -201,7 +198,7 @@ class Repository(APIObject): | |||
|         'id', | ||||
|         'name', | ||||
|         'owner', | ||||
|         'size' 'created_at', | ||||
|         'sizecreated_at', | ||||
|         'url', | ||||
|         'html_url', | ||||
|         'archived', | ||||
|  | @ -346,7 +343,10 @@ class Issue(APIObject): | |||
|                 continue | ||||
| 
 | ||||
|     def __repr__(self) -> str: | ||||
|         return f'<{self.__class__.__name__} id: {self.id}, title: {self.title}, user: {self.user}, created_at: {self.created_at}, state: {self.state}>' | ||||
|         return ( | ||||
|             f'<{self.__class__.__name__} id: {self.id}, title: {self.title}, user: {self.user}, created_at:' | ||||
|             f' {self.created_at}, state: {self.state}>' | ||||
|         ) | ||||
| 
 | ||||
|     @property | ||||
|     def updated_at(self) -> Optional[datetime]: | ||||
|  | @ -518,7 +518,10 @@ class Organization(APIObject): | |||
|                 continue | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return f'<{self.__class__.__name__} login: {self.login!r}, id: {self.id}, is_verified: {self.is_verified}, public_repos: {self.public_repos}, public_gists: {self.public_gists}, created_at: {self.created_at}>' | ||||
|         return ( | ||||
|             f'<{self.__class__.__name__} login: {self.login!r}, id: {self.id}, is_verified: {self.is_verified},' | ||||
|             f' public_repos: {self.public_repos}, public_gists: {self.public_gists}, created_at: {self.created_at}>' | ||||
|         ) | ||||
| 
 | ||||
|     @property | ||||
|     def description(self): | ||||
|  |  | |||
|  | @ -4,40 +4,40 @@ BASE_URL = 'https://api.github.com' | |||
| 
 | ||||
| 
 | ||||
| # == user urls ==# | ||||
| USERS_URL = BASE_URL + '/users/{0}' | ||||
| USERS_URL = f"{BASE_URL}/users/{{0}}" | ||||
| 
 | ||||
| USER_HTML_URL = 'https://github.com/users/{0}' | ||||
| 
 | ||||
| SELF_URL = BASE_URL + '/user' | ||||
| SELF_URL = f"{BASE_URL}/user" | ||||
| 
 | ||||
| USER_REPOS_URL = USERS_URL + '/repos' | ||||
| USER_REPOS_URL = f"{USERS_URL}/repos" | ||||
| 
 | ||||
| USER_ORGS_URL = USERS_URL + '/orgs' | ||||
| USER_ORGS_URL = f"{USERS_URL}/orgs" | ||||
| 
 | ||||
| USER_GISTS_URL = USERS_URL + '/gists' | ||||
| USER_GISTS_URL = f"{USERS_URL}/gists" | ||||
| 
 | ||||
| USER_FOLLOWERS_URL = USERS_URL + '/followers' | ||||
| USER_FOLLOWERS_URL = f"{USERS_URL}/followers" | ||||
| 
 | ||||
| USER_FOLLOWING_URL = USERS_URL + '/following' | ||||
| USER_FOLLOWING_URL = f"{USERS_URL}/following" | ||||
| 
 | ||||
| 
 | ||||
| # == repo urls ==# | ||||
| CREATE_REPO_URL = BASE_URL + '/user/repos'  # _auth repo create | ||||
| CREATE_REPO_URL = f"{BASE_URL}/user/repos"  # _auth repo create | ||||
| 
 | ||||
| REPOS_URL = BASE_URL + '/repos/{0}'  # repos of a user | ||||
| REPOS_URL = f"{BASE_URL}/repos/{{0}}"  # repos of a user | ||||
| 
 | ||||
| REPO_URL = BASE_URL + '/repos/{0}/{1}'  # a specific repo | ||||
| REPO_URL = f"{BASE_URL}/repos/{{0}}/{{1}}"  # a specific repo | ||||
| 
 | ||||
| ADD_FILE_URL = BASE_URL + '/repos/{}/{}/contents/{}' | ||||
| ADD_FILE_URL = f"{BASE_URL}/repos/{{}}/{{}}/contents/{{}}" | ||||
| 
 | ||||
| ADD_FILE_BRANCH = BASE_URL + '' | ||||
| ADD_FILE_BRANCH = f"{BASE_URL}" | ||||
| 
 | ||||
| REPO_ISSUE_URL = REPO_URL + '/issues/{2}'  # a specific issue | ||||
| REPO_ISSUE_URL = f"{REPO_URL}/issues/{{2}}"  # a specific issue | ||||
| 
 | ||||
| # == gist urls ==# | ||||
| GIST_URL = BASE_URL + '/gists/{0}'  # specific gist | ||||
| GIST_URL = f"{BASE_URL}/gists/{{0}}"  # specific gist | ||||
| 
 | ||||
| CREATE_GIST_URL = BASE_URL + '/gists'  # create a gist | ||||
| CREATE_GIST_URL = f"{BASE_URL}/gists"  # create a gist | ||||
| 
 | ||||
| # == org urls ==# | ||||
| ORG_URL = BASE_URL + '/orgs/{0}' | ||||
| ORG_URL = f"{BASE_URL}/orgs/{{0}}" | ||||
|  |  | |||
|  | @ -1,3 +1,47 @@ | |||
| [tool.black] | ||||
| line-length = 125 | ||||
| skip-string-normalization = true | ||||
| preview = true  # better formatting basically | ||||
| 
 | ||||
| [tool.isort] | ||||
| line_length = 125 | ||||
| combine_as_imports = true | ||||
| combine_star = true | ||||
| 
 | ||||
| [tool.pyright] | ||||
| typeCheckingMode = "basic" | ||||
| strictListInference = true | ||||
| strictDictionaryInference = true | ||||
| strictSetInference = true | ||||
| 
 | ||||
| # explicity enabling is better than making it strict and disabling stuff | ||||
| reportMissingModuleSource = "error" | ||||
| reportAssertAlwaysTrue = "error" | ||||
| reportInvalidStringEscapeSequence = "error" | ||||
| reportInvalidTypeVarUse = "error" | ||||
| reportSelfClsParameterName = "error" | ||||
| reportUnsupportedDunderAll = "error" | ||||
| reportUnusedExpression = "error" | ||||
| reportWildcardImportFromLibrary = "error" | ||||
| reportConstantRedefinition = "error" | ||||
| reportDuplicateImport = "error" | ||||
| reportImportCycles = "error" | ||||
| reportIncompatibleVariableOverride = "error" | ||||
| reportIncompleteStub = "error" | ||||
| reportInconsistentConstructor = "error" | ||||
| reportInvalidStubStatement = "error" | ||||
| reportMatchNotExhaustive = "error" | ||||
| reportMissingParameterType = "error" | ||||
| reportTypeCommentUsage = "error" | ||||
| reportUnnecessaryCast = "error" | ||||
| reportUnnecessaryComparison = "error" | ||||
| reportUnnecessaryIsInstance = "error" | ||||
| reportUnusedClass = "error" | ||||
| reportUnusedVariable = "error" | ||||
| reportUntypedBaseClass = "error" | ||||
| reportUntypedClassDecorator = "error" | ||||
| reportUntypedFunctionDecorator = "error" | ||||
| reportUntypedNamedTuple = "error" | ||||
| reportCallInDefaultInitializer = "error" | ||||
| reportPropertyTypeMismatch = "error" | ||||
| reportUnnecessaryTypeIgnoreComment = "error" | ||||
|  |  | |||
							
								
								
									
										17
									
								
								setup.py
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								setup.py
									
										
									
									
									
								
							|  | @ -1,21 +1,12 @@ | |||
| import re | ||||
| from pathlib import Path | ||||
| 
 | ||||
| from setuptools import setup | ||||
| 
 | ||||
| with open('requirements.txt') as f: | ||||
|     requirements = f.read().splitlines() | ||||
| 
 | ||||
| path = Path(__file__).parent / "github" / "__init__.py" | ||||
| version = re.search(r'\d[.]\d[.]\d', path.read_text()).group(0)  # type: ignore | ||||
| 
 | ||||
| packages = [ | ||||
|     'github', | ||||
| ] | ||||
| 
 | ||||
| readme = '' | ||||
| with open('README.rst') as f: | ||||
|     readme = f.read() | ||||
| 
 | ||||
| extras_require = { | ||||
|     'docs': [ | ||||
|         'sphinx==4.4.0', | ||||
|  | @ -29,11 +20,11 @@ setup( | |||
|     name='github', | ||||
|     author='VarMonke & sudosnok', | ||||
|     url='https://github.com/VarMonke/Github-Api-Wrapper', | ||||
|     version=version, | ||||
|     version=re.search(r'\d[.]\d[.]\d', (Path('github') / '__init__.py').read_text())[0], | ||||
|     packages=packages, | ||||
|     license='MIT', | ||||
|     description='An asynchronous python wrapper around the GitHub API', | ||||
|     long_description=readme, | ||||
|     install_requires=requirements, | ||||
|     long_description=Path('README.rst').read_text(), | ||||
|     install_requires=Path('requirements.txt').read_text().splitlines(), | ||||
|     python_requires='>=3.8.0', | ||||
| ) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Var
						Var