Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added cls/__init__.py
Empty file.
65 changes: 65 additions & 0 deletions cls/releases.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from dataclasses import dataclass

import httpx


@dataclass
class PyPiParser:
"""
A client for the PyPi API

Attributes:
package_name: The name of the package
base_url: The base url for the PyPi json API
"""

package_name: str = "wagtail"
base_url: str = f"https://pypi.org/pypi/{package_name}/json"

def __post_init__(self) -> None:
resp = httpx.get(self.base_url)
self.base_response = resp.json()
self.base_versions = self._reduce_versions(
list(self.base_response["releases"].keys())
)
self.release_groups = self.parse_release_groups()
self.latest_release = self.parse_latest_release()

def _reduce_versions(self, versions: list) -> list:
reduced_versions = []
for version in versions:
if "rc" not in version and "b" not in version and "a" not in version:
# remove pre-release versions
reduced_versions.append(version)

return reduced_versions

def parse_release_groups(self):
grouped_releases = {}
for item in self.base_versions:
first_digit = item.split(".")[0]
if first_digit in grouped_releases:
grouped_releases[first_digit].append(item)
else:
grouped_releases[first_digit] = [item]

# sort grouped_releases by first digit desc
grouped_releases = dict(
sorted(grouped_releases.items(), key=lambda x: int(x[0]), reverse=True)
)
return grouped_releases

def parse_latest_release(self):
major = list(self.release_groups.keys())[0]
releases = self.release_groups[major]
return releases[-1]

def get_release_group(self, major):
return self.release_groups[major]


if __name__ == "__main__":
pypi = PyPiParser()
# print(pypi.base_versions)
# print(pypi.release_groups)
print(pypi.get_release_group("2"))
48 changes: 48 additions & 0 deletions draw.excalidraw
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"type": "excalidraw",
"version": 2,
"source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor",
"elements": [
{
"id": "qUEZkkdqvw44t6ZO41S2f",
"type": "text",
"x": 301.78125,
"y": 170.6875,
"width": 415.379638671875,
"height": 325,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 267863646,
"version": 247,
"versionNonce": 1454692418,
"isDeleted": false,
"boundElements": null,
"updated": 1716150701075,
"link": null,
"locked": false,
"text": "Version - option or latest\n\npackage-name or default\n\napp-name or default\n\ninstall the version\n\nwagtail-start [generated/package-name]\n\nmove folders/fies around (maybe later on)\n\nmove package to parent",
"fontSize": 20,
"fontFamily": 1,
"textAlign": "left",
"verticalAlign": "top",
"baseline": 318,
"containerId": null,
"originalText": "Version - option or latest\n\npackage-name or default\n\napp-name or default\n\ninstall the version\n\nwagtail-start [generated/package-name]\n\nmove folders/fies around (maybe later on)\n\nmove package to parent",
"lineHeight": 1.25
}
],
"appState": {
"gridSize": null,
"viewBackgroundColor": "#ffffff"
},
"files": {}
}
Empty file added gen.py
Empty file.
94 changes: 92 additions & 2 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ click = "^8.1.7"
requests = "^2.31.0"


httpx = "^0.27.0"
[tool.poetry.group.dev.dependencies]
pytest = "^7.4.3"
pytest-cov = "^4.1.0"
Expand Down
Empty file added src/__init__.py
Empty file.
15 changes: 15 additions & 0 deletions src/start.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import click


@click.command()
@click.option("--release", "-r", type=str)
def generate(release: str) -> None:
"""Generate a new wagtail site

CMD: generate --release <release>
"""
click.echo(
click.style(
f"Generating a new wagtail site with release {release}", fg="yellow"
)
)