Skip to content

Commit

Permalink
docs: improving documentation generation
Browse files Browse the repository at this point in the history
  • Loading branch information
201st-Luka committed Sep 11, 2023
1 parent 94e948a commit 77f7cda
Show file tree
Hide file tree
Showing 90 changed files with 141 additions and 48 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: doc generation
on:
push:
branches:
- master
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v3
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: pip install -r requirements-docs.txt
- run: mkdocs gh-deploy --force
19 changes: 9 additions & 10 deletions docs/doc_autogen.py → doc_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,26 @@ def create_markdown_structure(package_path, output_path):
output_path (str): The path where the directory structure and markdown files will be generated.
"""
for dirpath, dirnames, filenames in os.walk(package_path):
# Create corresponding directory structure in the output path
relative_dir = os.path.relpath(dirpath, package_path)
output_dir = os.path.join(output_path, relative_dir)
os.makedirs(output_dir, exist_ok=True)

for filename in filenames:
if filename.endswith('.py') and filename != "__init__.py":
module_name = os.path.splitext(filename)[0]
import_path = "pyclasher." + '/'.join(
os.path.split(
os.path.join(relative_dir, module_name))
).replace('.', '').replace('/', '.')
print(import_path)
import_path = (
"pyclasher." +
os.path.join(relative_dir if relative_dir != '.'
else '',
module_name)
).replace('/', '.')
markdown_content = f"::: {import_path}\n"

# Create a markdown file with the import path as content
markdown_file_path = os.path.join(output_dir,
f"{module_name}.md")

with open(markdown_file_path, 'w') as markdown_file:
print(f"Creating docs for {import_path}")
markdown_file.write(markdown_content)


Expand All @@ -43,13 +44,11 @@ def create_markdown_structure(package_path, output_path):

doc_dir = os.path.join(project_dir, "docs")

api_ref_dir = os.path.join(doc_dir, "API Reference")
api_ref_dir = os.path.join(doc_dir, "docs/API Reference")
pyclasher_dir = os.path.join(project_dir, "pyclasher")

shutil.rmtree(api_ref_dir)

os.mkdir(api_ref_dir)

create_markdown_structure(pyclasher_dir, api_ref_dir)


5 changes: 0 additions & 5 deletions docs/API Reference/.pages

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/API/Bulk requests/abc.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/API/Bulk requests/bulk_player.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/API/Models/login/login_models.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/API/Models/misc/api.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/API/Models/misc/posts.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/API/Models/misc/responses.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/API/Models/misc/war_status.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/Client/client.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/Client/request_consumer.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/Client/request_queue.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/Utils/exectimer.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/Utils/functions.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/API Reference/Utils/request_methods.md

This file was deleted.

1 change: 1 addition & 0 deletions docs/API Reference/api/bulk_requests/abc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.bulk_requests.abc
1 change: 1 addition & 0 deletions docs/API Reference/api/bulk_requests/b_player.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.bulk_requests.b_player
1 change: 1 addition & 0 deletions docs/API Reference/api/models/abc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.abc
1 change: 1 addition & 0 deletions docs/API Reference/api/models/base_models.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.base_models
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_builder_base_ranking_list
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_capital_raid_seasons.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_capital_raid_seasons
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_capital_ranking_list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_capital_ranking_list
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_list
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_member.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_member
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_member_list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_member_list
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_ranking_list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_ranking_list
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_war.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_war
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_war_league_group.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_war_league_group
1 change: 1 addition & 0 deletions docs/API Reference/api/models/clan_war_log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.clan_war_log
1 change: 1 addition & 0 deletions docs/API Reference/api/models/enums.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.enums
1 change: 1 addition & 0 deletions docs/API Reference/api/models/gold_pass_season.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.gold_pass_season
1 change: 1 addition & 0 deletions docs/API Reference/api/models/labels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.labels
1 change: 1 addition & 0 deletions docs/API Reference/api/models/language.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.language
1 change: 1 addition & 0 deletions docs/API Reference/api/models/leagues.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.leagues
1 change: 1 addition & 0 deletions docs/API Reference/api/models/location.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.location
1 change: 1 addition & 0 deletions docs/API Reference/api/models/login/login_models.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.login.login_models
1 change: 1 addition & 0 deletions docs/API Reference/api/models/misc/api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.misc.api
1 change: 1 addition & 0 deletions docs/API Reference/api/models/misc/posts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.misc.posts
1 change: 1 addition & 0 deletions docs/API Reference/api/models/misc/responses.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.misc.responses
1 change: 1 addition & 0 deletions docs/API Reference/api/models/misc/war_status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.misc.war_status
1 change: 1 addition & 0 deletions docs/API Reference/api/models/player.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.player
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.player_builder_base_ranking_list
1 change: 1 addition & 0 deletions docs/API Reference/api/models/player_house.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.player_house
1 change: 1 addition & 0 deletions docs/API Reference/api/models/player_ranking_clan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.player_ranking_clan
1 change: 1 addition & 0 deletions docs/API Reference/api/models/player_ranking_list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.player_ranking_list
1 change: 1 addition & 0 deletions docs/API Reference/api/models/season.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.season
1 change: 1 addition & 0 deletions docs/API Reference/api/models/war_clan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.models.war_clan
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/abc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.abc
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/builder_base_league.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.builder_base_league
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/builder_base_leagues.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.builder_base_leagues
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/capital_league.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.capital_league
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/capital_league_seasons.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.capital_league_seasons
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/capital_rankings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.capital_rankings
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_builder_base_rankings
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_capital_raid_seasons
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan_current_war.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_current_war
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_currentwar_leaguegroup
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan_labels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_labels
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan_members.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_members
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan_rankings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_rankings
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan_search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_search
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan_war_log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_war_log
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/clan_warleagues_wars.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.clan_warleagues_wars
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/gold_pass.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.gold_pass
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/league.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.league
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/league_season.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.league_season
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/league_seasons.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.league_seasons
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/leagues.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.leagues
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/location.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.location
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/locations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.locations
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/player.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.player
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.player_builder_base_rankings
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/player_labels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.player_labels
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/player_rankings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.player_rankings
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/war_league.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.war_league
1 change: 1 addition & 0 deletions docs/API Reference/api/requests/war_leagues.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.api.requests.war_leagues
1 change: 1 addition & 0 deletions docs/API Reference/client/client.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.client.client
1 change: 1 addition & 0 deletions docs/API Reference/client/request_consumer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.client.request_consumer
1 change: 1 addition & 0 deletions docs/API Reference/client/request_queue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.client.request_queue
2 changes: 1 addition & 1 deletion docs/API Reference/exceptions.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
::: pyclasher.exceptions
::: pyclasher.exceptions
1 change: 1 addition & 0 deletions docs/API Reference/utils/exectimer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.utils.exectimer
1 change: 1 addition & 0 deletions docs/API Reference/utils/functions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.utils.functions
File renamed without changes.
1 change: 1 addition & 0 deletions docs/API Reference/utils/request_methods.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: pyclasher.utils.request_methods
4 changes: 4 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ plugins:
python:
options:
show_source: true
- awesome-pages

extra:
version:
Expand All @@ -65,3 +66,6 @@ extra:
- icon: fontawesome/brands/github
link: https://github.com/201st-Luka/PyClasher
name: PyClasher on GitHub

watch:
- pyclasher
50 changes: 32 additions & 18 deletions pyclasher/client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

class Client:
"""
this is the class for the ClashOfClans API client
ClashOfClans API client

Attributes:
__instances: the instances of the client
Expand Down Expand Up @@ -52,24 +52,38 @@ class Client:
logger = MISSING
"""Logger that logs the requests"""

def __new__(cls, *args, **kwargs):
def __new__(cls, *, tokens=None, **kwargs):
"""
Class method to create a new instance of the Client

Args:
tokens (str | list[str] | None): the Bearer tokens for the authentication of the ClashOfClans API
**kwargs: other key word arguments

Notes:
This function checks if all initialised clients do not share a
token. If so the ecxeption ``ClientAlreadyInitialised`` is raised.

Raises:
InvalidType
ClientAlreadyInitialised
"""
if cls.__instances is None:
cls.__instances = [super().__new__(cls)]
return cls.__instances[0]
if 'tokens' in kwargs:
if isinstance(kwargs['tokens'], str):
tokens = [kwargs['tokens']]
elif isinstance(kwargs['tokens'], Iterable):
tokens = list(kwargs['tokens'])
else:
raise InvalidType(kwargs['tokens'],
(str, Iterable[str]))
for token in tokens:
for client in Client.__instances:
if client.__tokens is not None:
if token in client.__tokens:
raise ClientAlreadyInitialised
continue
if isinstance(tokens, str):
tokens = [tokens]
elif isinstance(tokens, Iterable):
tokens = list(tokens)
else:
raise InvalidType(tokens,
(str, Iterable[str]))
for token in tokens:
for client in Client.__instances:
if client.__tokens is not None:
if token in client.__tokens:
raise ClientAlreadyInitialised
continue

cls.__instances.append(super().__new__(cls))
return cls.__instances[-1]
Expand All @@ -87,7 +101,7 @@ def __init__(

Args:
tokens (str | list[str] | None): the Bearer tokens for the authentication of the ClashOfClans API
requests_per_second (int=5): This integer limits the number of requests done per second (per token).
requests_per_second (int): This integer limits the number of requests done per second (per token).
This value is important to bypass the rate limit of the ClashOfClans API.
More tokens allow more requests per second because each token can do
as many requests per second as specified.
Expand Down Expand Up @@ -151,7 +165,7 @@ async def from_login(cls, email, password, requests_per_second=5,

logger.info("initialising client via login")

self = cls([login.temporary_api_token for login in logins],
self = cls(tokens=[login.temporary_api_token for login in logins],
requests_per_second=requests_per_second,
request_timeout=request_timeout,
swagger_url=logins[0].swagger_url)
Expand Down
3 changes: 2 additions & 1 deletion requirements-docs.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
mkdocs
mkdocs-material
mkdocs-git-committers-plugin
mkdocstrings[python]
mkdocstrings[python]
mkdocs-awesome-pages-plugin

0 comments on commit 77f7cda

Please sign in to comment.