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 | ||||||
							
								
								
									
										33
									
								
								.github/workflows/pylint.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/pylint.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -1,23 +1,26 @@ | ||||||
| name: Pylint | name: PyLint | ||||||
| 
 | 
 | ||||||
| on: [push] | on: [ pull_request, push ] | ||||||
| 
 | 
 | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|  |     if: github.event.pull_request.user.type != 'Bot' | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     strategy: |     strategy: | ||||||
|       matrix: |       matrix: | ||||||
|         python-version: ["3.8", "3.9", "3.10"] |         python-version: [ '3.8', '3.9', '3.10' ] | ||||||
|  | 
 | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v3 |       - name: Checkout Repository | ||||||
|     - name: Set up Python ${{ matrix.python-version }} |         uses: actions/checkout@v3 | ||||||
|       uses: actions/setup-python@v3 | 
 | ||||||
|       with: |       - name: Set up Python ${{ matrix.python-version }} | ||||||
|         python-version: ${{ matrix.python-version }} |         uses: actions/setup-python@v2 | ||||||
|     - name: Install dependencies |         with: | ||||||
|       run: | |           python-version: ${{ matrix.python-version }} | ||||||
|         python -m pip install --upgrade pip | 
 | ||||||
|         pip install pylint |       - name: Install PyLint | ||||||
|     - name: Analysing the code with pylint |         run: pip install -U pip pylint | ||||||
|       run: | | 
 | ||||||
|         pylint $(git ls-files '*.py') |       - 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: | sphinx: | ||||||
|   configuration: docs/conf.py |   configuration: docs/conf.py | ||||||
|  | @ -6,7 +6,7 @@ sphinx: | ||||||
|   builder: html |   builder: html | ||||||
|    |    | ||||||
| python: | python: | ||||||
|   version: 3.8 |   version: '3.8' | ||||||
|   install: |   install: | ||||||
|     - method: pip |     - method: pip | ||||||
|       path: . |       path: . | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								LICENSE
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
										
									
									
									
								
							|  | @ -1,6 +1,6 @@ | ||||||
| MIT License | 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 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
| of this software and associated documentation files (the "Software"), to deal | of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  | ||||||
							
								
								
									
										23
									
								
								README.rst
									
										
									
									
									
								
							
							
						
						
									
										23
									
								
								README.rst
									
										
									
									
									
								
							|  | @ -16,16 +16,16 @@ Key Features | ||||||
| Installing | 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 | .. code:: sh | ||||||
| 
 | 
 | ||||||
|   #Linux/macOS |   # On Linux or MacOS | ||||||
|   python3 -m pip install -U git+https://github.com/VarMonke/Github-Api-Wrapper |   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 |   py -m pip install -U git+https://github.com/VarMonke/Github-Api-Wrapper | ||||||
|    |    | ||||||
| Quick Example | Quick Example | ||||||
|  | @ -38,18 +38,21 @@ Quick Example | ||||||
|    |    | ||||||
|   async def main(): |   async def main(): | ||||||
|     client = await github.GHClient() |     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) |     print(user) | ||||||
|  |     print(user.html_url) | ||||||
|  | 
 | ||||||
|  |   asyncio.run(main()) | ||||||
| 
 | 
 | ||||||
| .. code:: sh | .. code:: sh | ||||||
|   #Output |   # Output | ||||||
|   <User login: 'GithubPythonBot', id: 104489846, created_at: 2022-04-27 07:31:26> |   <User login: 'GithubPythonBot', id: 104489846, created_at: 2022-04-27 07:31:26> | ||||||
|   https://github.com/GithubPythonBot |   https://github.com/GithubPythonBot | ||||||
| 
 | 
 | ||||||
|    |    | ||||||
| Links | 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 | 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 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
| of this software and associated documentation files (the "Software"), to deal | of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| MIT License | MIT License | ||||||
| 
 | 
 | ||||||
| Copyright (c) 2015-present Rapptz | Copyright (c) 2015-2022 Rapptz | ||||||
| Copyright (c) 2022 - Present Rapptz, VarMonke and sudosnok  | Copyright (c) 2022-present VarMonke and sudosnok | ||||||
| 
 | 
 | ||||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
| of this software and associated documentation files (the "Software"), to deal | of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import logging | import logging | ||||||
| import sys |  | ||||||
| import os | import os | ||||||
| import re | import re | ||||||
|  | import sys | ||||||
| 
 | 
 | ||||||
| # If extensions (or modules to document with autodoc) are in another directory, | # 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 | # 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 | release = version | ||||||
| 
 | 
 | ||||||
| # This assumes a tag is available for final releases | # 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 | # The language for content autogenerated by Sphinx. Refer to documentation | ||||||
| # for a list of supported languages. | # for a list of supported languages. | ||||||
|  |  | ||||||
|  | @ -1,8 +1,9 @@ | ||||||
| from __future__ import annotations | from __future__ import annotations | ||||||
|  | 
 | ||||||
| import importlib | import importlib | ||||||
| import inspect | import inspect | ||||||
| import re | 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 docutils import nodes | ||||||
| from sphinx import addnodes | from sphinx import addnodes | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ class DPYStandaloneHTMLBuilder(StandaloneHTMLBuilder): | ||||||
|             self.handle_page('genindex-all', genindexcontext, 'genindex.html') |             self.handle_page('genindex-all', genindexcontext, 'genindex.html') | ||||||
|             for (key, entries), count in zip(genindex, indexcounts): |             for (key, entries), count in zip(genindex, indexcounts): | ||||||
|                 ctx = {'key': key, 'entries': entries, 'count': count, 'genindexentries': genindex} |                 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: |         else: | ||||||
|             self.handle_page('genindex', genindexcontext, 'genindex.html') |             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 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): | 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 docutils import nodes | ||||||
| from sphinx.locale import _ | from docutils.parsers.rst import Directive | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class exception_hierarchy(nodes.General, nodes.Element): | class exception_hierarchy(nodes.General, nodes.Element): | ||||||
|  |  | ||||||
|  | @ -4,11 +4,10 @@ | ||||||
| 
 | 
 | ||||||
| from typing import Any, Dict, List, Tuple | from typing import Any, Dict, List, Tuple | ||||||
| 
 | 
 | ||||||
|  | import sphinx | ||||||
| from docutils import nodes, utils | from docutils import nodes, utils | ||||||
| from docutils.nodes import Node, system_message | from docutils.nodes import Node, system_message | ||||||
| from docutils.parsers.rst.states import Inliner | from docutils.parsers.rst.states import Inliner | ||||||
| 
 |  | ||||||
| import sphinx |  | ||||||
| from sphinx.application import Sphinx | from sphinx.application import Sphinx | ||||||
| from sphinx.util.nodes import split_explicit_title | from sphinx.util.nodes import split_explicit_title | ||||||
| from sphinx.util.typing import RoleFunction | from sphinx.util.typing import RoleFunction | ||||||
|  |  | ||||||
|  | @ -4,10 +4,10 @@ __title__ = 'Github-Api-Wrapper' | ||||||
| __authors__ = 'VarMonke', 'sudosnok' | __authors__ = 'VarMonke', 'sudosnok' | ||||||
| __version__ = '1.2.1' | __version__ = '1.2.1' | ||||||
| __license__ = 'MIT' | __license__ = 'MIT' | ||||||
| __copyright__ = 'Copyright (c) 2020 VarMonke & sudosnok' | __copyright__ = 'Copyright (c) 2022-present VarMonke & sudosnok' | ||||||
| 
 | 
 | ||||||
| from .client import * | from .client import * | ||||||
| from .objects import * |  | ||||||
| from .http import * |  | ||||||
| from .urls import * |  | ||||||
| from .exceptions import * | from .exceptions import * | ||||||
|  | from .http import * | ||||||
|  | from .objects import * | ||||||
|  | from .urls import * | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| from __future__ import annotations | from __future__ import annotations | ||||||
| 
 | 
 | ||||||
| from collections import deque | from collections import deque | ||||||
| from typing import Any, Deque, Tuple, TypeVar, Dict | from typing import Any, Deque, Dict, Tuple, TypeVar | ||||||
| 
 | 
 | ||||||
| __all__: Tuple[str, ...] = ('ObjectCache',) | __all__: Tuple[str, ...] = ('ObjectCache',) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,29 +2,29 @@ | ||||||
| from __future__ import annotations | from __future__ import annotations | ||||||
| 
 | 
 | ||||||
| import functools | import functools | ||||||
| import aiohttp |  | ||||||
| 
 |  | ||||||
| from typing import ( | from typing import ( | ||||||
|  |     Any, | ||||||
|     Awaitable, |     Awaitable, | ||||||
|     Callable, |     Callable, | ||||||
|     Literal, |  | ||||||
|     Any, |  | ||||||
|     Coroutine, |     Coroutine, | ||||||
|     Dict, |     Dict, | ||||||
|     Generator, |     Generator, | ||||||
|  |     List, | ||||||
|  |     Literal, | ||||||
|     Optional, |     Optional, | ||||||
|     Tuple, |     Tuple, | ||||||
|     Union, |  | ||||||
|     List, |  | ||||||
|     overload, |  | ||||||
|     TypeVar, |     TypeVar, | ||||||
|  |     Union, | ||||||
|  |     overload, | ||||||
| ) | ) | ||||||
| from typing_extensions import Self, ParamSpec, Concatenate | 
 | ||||||
|  | import aiohttp | ||||||
|  | from typing_extensions import Concatenate, ParamSpec, Self | ||||||
| 
 | 
 | ||||||
| from . import exceptions | from . import exceptions | ||||||
| from .cache import ObjectCache | from .cache import ObjectCache | ||||||
| from .http import http | 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') | __all__: Tuple[str, ...] = ('GHClient', 'Client') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -65,7 +65,7 @@ class Ratelimited(APIError): | ||||||
| 
 | 
 | ||||||
|     def __init__(self, reset_time: datetime.datetime): |     def __init__(self, reset_time: datetime.datetime): | ||||||
|         formatted = reset_time.strftime(r"%H:%M:%S %A, %d %b") |         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) |         super().__init__(msg) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,27 +1,21 @@ | ||||||
| # == http.py ==# | # == http.py ==# | ||||||
| 
 | 
 | ||||||
| from __future__ import annotations | from __future__ import annotations | ||||||
| from asyncio.base_subprocess import ReadSubprocessPipeProto |  | ||||||
| from base64 import b64encode |  | ||||||
| 
 | 
 | ||||||
| import json | import json | ||||||
|  | import platform | ||||||
| import re | import re | ||||||
| from datetime import datetime | from datetime import datetime | ||||||
| from types import SimpleNamespace | from types import SimpleNamespace | ||||||
| from typing import Any, Dict, Literal, NamedTuple, Optional, Type, Tuple, Union, List | from typing import Any, Dict, List, NamedTuple, Optional, Tuple, Type, Union | ||||||
| from typing_extensions import TypeAlias, reveal_type |  | ||||||
| import platform |  | ||||||
| 
 | 
 | ||||||
| import aiohttp | 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 . import __version__ | ||||||
|  | from .exceptions import * | ||||||
|  | from .objects import File, Gist, Repository, User, bytes_to_b64 | ||||||
|  | from .urls import * | ||||||
| 
 | 
 | ||||||
| __all__: Tuple[str, ...] = ( | __all__: Tuple[str, ...] = ( | ||||||
|     'Paginator', |     '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: | 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.""" |     """This makes the ClientSession, attaching the trace config and ensuring a UA header is present.""" | ||||||
|     if not headers.get('User-Agent'): |     if not headers.get('User-Agent'): | ||||||
|         headers[ |         headers['User-Agent'] = ( | ||||||
|             'User-Agent' |             f'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @ {__version__} Python' | ||||||
|         ] = f'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @ {__version__} Python {platform.python_version()} aiohttp {aiohttp.__version__}' |             f' {platform.python_version()} aiohttp {aiohttp.__version__}' | ||||||
|  |         ) | ||||||
| 
 | 
 | ||||||
|     session = aiohttp.ClientSession(auth=authorization, headers=headers, trace_configs=[trace_config]) |     session = aiohttp.ClientSession(auth=authorization, headers=headers, trace_configs=[trace_config]) | ||||||
|     session._rates = Rates('', '', '', '', '') |     session._rates = Rates('', '', '', '', '') | ||||||
|  | @ -140,9 +135,10 @@ class Paginator: | ||||||
| class http: | class http: | ||||||
|     def __init__(self, headers: Dict[str, Union[str, int]], auth: Union[aiohttp.BasicAuth, None]) -> None: |     def __init__(self, headers: Dict[str, Union[str, int]], auth: Union[aiohttp.BasicAuth, None]) -> None: | ||||||
|         if not headers.get('User-Agent'): |         if not headers.get('User-Agent'): | ||||||
|             headers[ |             headers['User-Agent'] = ( | ||||||
|                 'User-Agent' |                 'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @' | ||||||
|             ] = f'Github-API-Wrapper (https://github.com/VarMonke/Github-Api-Wrapper) @ {__version__} Python/{platform.python_version()} aiohttp/{aiohttp.__version__}' |                 f' {__version__} Python/{platform.python_version()} aiohttp/{aiohttp.__version__}' | ||||||
|  |             ) | ||||||
| 
 | 
 | ||||||
|         self._rates = Rates('', '', '', '', '') |         self._rates = Rates('', '', '', '', '') | ||||||
|         self.headers = headers |         self.headers = headers | ||||||
|  |  | ||||||
|  | @ -1,18 +1,15 @@ | ||||||
| # == objects.py ==# | # == objects.py ==# | ||||||
| from __future__ import annotations | from __future__ import annotations | ||||||
|  | 
 | ||||||
| from base64 import b64encode | from base64 import b64encode | ||||||
| import json | from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union | ||||||
| 
 |  | ||||||
| from typing import TYPE_CHECKING, Any, Literal, Optional, Tuple, Union, Dict, List |  | ||||||
| 
 |  | ||||||
| import aiohttp |  | ||||||
| 
 | 
 | ||||||
| if TYPE_CHECKING: | if TYPE_CHECKING: | ||||||
|     from .http import http |     from .http import http | ||||||
| 
 | 
 | ||||||
| from datetime import datetime |  | ||||||
| import io | import io | ||||||
| import os | import os | ||||||
|  | from datetime import datetime | ||||||
| 
 | 
 | ||||||
| __all__: Tuple[str, ...] = ( | __all__: Tuple[str, ...] = ( | ||||||
|     'APIObject', |     'APIObject', | ||||||
|  | @ -201,7 +198,7 @@ class Repository(APIObject): | ||||||
|         'id', |         'id', | ||||||
|         'name', |         'name', | ||||||
|         'owner', |         'owner', | ||||||
|         'size' 'created_at', |         'sizecreated_at', | ||||||
|         'url', |         'url', | ||||||
|         'html_url', |         'html_url', | ||||||
|         'archived', |         'archived', | ||||||
|  | @ -346,7 +343,10 @@ class Issue(APIObject): | ||||||
|                 continue |                 continue | ||||||
| 
 | 
 | ||||||
|     def __repr__(self) -> str: |     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 |     @property | ||||||
|     def updated_at(self) -> Optional[datetime]: |     def updated_at(self) -> Optional[datetime]: | ||||||
|  | @ -518,7 +518,10 @@ class Organization(APIObject): | ||||||
|                 continue |                 continue | ||||||
| 
 | 
 | ||||||
|     def __repr__(self): |     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 |     @property | ||||||
|     def description(self): |     def description(self): | ||||||
|  |  | ||||||
|  | @ -4,40 +4,40 @@ BASE_URL = 'https://api.github.com' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # == user urls ==# | # == user urls ==# | ||||||
| USERS_URL = BASE_URL + '/users/{0}' | USERS_URL = f"{BASE_URL}/users/{{0}}" | ||||||
| 
 | 
 | ||||||
| USER_HTML_URL = 'https://github.com/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 ==# | # == 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 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 urls ==# | ||||||
| ORG_URL = BASE_URL + '/orgs/{0}' | ORG_URL = f"{BASE_URL}/orgs/{{0}}" | ||||||
|  |  | ||||||
|  | @ -1,3 +1,47 @@ | ||||||
| [tool.black] | [tool.black] | ||||||
| line-length = 125 | line-length = 125 | ||||||
| skip-string-normalization = true | 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,4 +17,4 @@ project_urls = | ||||||
| packages = find: | packages = find: | ||||||
| python_requires = >=3.8 | python_requires = >=3.8 | ||||||
| install_requires = | install_requires = | ||||||
|     aiohttp == 3.8.1 |     aiohttp == 3.8.1 | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								setup.py
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								setup.py
									
										
									
									
									
								
							|  | @ -1,21 +1,12 @@ | ||||||
| import re | import re | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
|  | 
 | ||||||
| from setuptools import setup | 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 = [ | packages = [ | ||||||
|     'github', |     'github', | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| readme = '' |  | ||||||
| with open('README.rst') as f: |  | ||||||
|     readme = f.read() |  | ||||||
| 
 |  | ||||||
| extras_require = { | extras_require = { | ||||||
|     'docs': [ |     'docs': [ | ||||||
|         'sphinx==4.4.0', |         'sphinx==4.4.0', | ||||||
|  | @ -29,11 +20,11 @@ setup( | ||||||
|     name='github', |     name='github', | ||||||
|     author='VarMonke & sudosnok', |     author='VarMonke & sudosnok', | ||||||
|     url='https://github.com/VarMonke/Github-Api-Wrapper', |     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, |     packages=packages, | ||||||
|     license='MIT', |     license='MIT', | ||||||
|     description='An asynchronous python wrapper around the GitHub API', |     description='An asynchronous python wrapper around the GitHub API', | ||||||
|     long_description=readme, |     long_description=Path('README.rst').read_text(), | ||||||
|     install_requires=requirements, |     install_requires=Path('requirements.txt').read_text().splitlines(), | ||||||
|     python_requires='>=3.8.0', |     python_requires='>=3.8.0', | ||||||
| ) | ) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Var
						Var