Open-AutoTools 0.0.3rc2__py3-none-any.whl → 0.0.3rc3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ from halo import Halo
2
+
3
+ class LoadingAnimation:
4
+ """A CONTEXT MANAGER FOR DISPLAYING A LOADING ANIMATION"""
5
+ def __init__(self):
6
+ self._spinner = Halo(spinner={
7
+ 'interval': 200,
8
+ 'frames': [' ', '. ', '.. ', '...'],
9
+ })
10
+
11
+ def __enter__(self):
12
+ self._spinner.start()
13
+ return self
14
+
15
+ def __exit__(self, exc_type, exc_val, exc_tb):
16
+ self._spinner.stop()
@@ -0,0 +1,30 @@
1
+ import click
2
+ import requests
3
+ from importlib.metadata import version as get_version
4
+ from packaging.version import parse as parse_version
5
+ import pkg_resources
6
+
7
+ def check_for_updates():
8
+ """CHECK IF AN UPDATE IS AVAILABLE AND RETURN UPDATE MESSAGE IF NEEDED"""
9
+ try:
10
+ dist = pkg_resources.get_distribution("Open-AutoTools")
11
+ current_version = parse_version(dist.version)
12
+
13
+ pypi_url = "https://pypi.org/pypi/Open-AutoTools/json"
14
+ response = requests.get(pypi_url)
15
+
16
+ if response.status_code == 200:
17
+ data = response.json()
18
+ latest_version = data["info"]["version"]
19
+ latest_parsed = parse_version(latest_version)
20
+
21
+ if latest_parsed > current_version:
22
+ update_cmd = "pip install --upgrade Open-AutoTools"
23
+ return (
24
+ click.style(f"\nUpdate available: v{latest_version}", fg='red', bold=True) + "\n" +
25
+ click.style(f"Run '{update_cmd}' to update", fg='red')
26
+ )
27
+ except Exception as e:
28
+ print(f"Error checking updates: {str(e)}")
29
+
30
+ return None
@@ -0,0 +1,74 @@
1
+ import click
2
+ from importlib.metadata import version as get_version, PackageNotFoundError
3
+ import pkg_resources
4
+ import requests
5
+ from packaging.version import parse as parse_version
6
+ from datetime import datetime
7
+
8
+ # VERSION CALLBACK
9
+ def print_version(ctx, param, value):
10
+ """PRINT VERSION AND CHECK FOR UPDATES"""
11
+ if not value or ctx.resilient_parsing:
12
+ return
13
+
14
+ try:
15
+ # GET CURRENT VERSION
16
+ pkg_version = get_version('Open-AutoTools')
17
+ click.echo(f"Open-AutoTools version {pkg_version}")
18
+
19
+ # GET DISTRIBUTION INFO
20
+ dist = pkg_resources.get_distribution("Open-AutoTools")
21
+ current_version = parse_version(dist.version)
22
+
23
+ # GET LATEST VERSION FROM PYPI
24
+ pypi_url = "https://pypi.org/pypi/Open-AutoTools/json"
25
+ response = requests.get(pypi_url)
26
+
27
+ # CHECK IF RESPONSE IS SUCCESSFUL
28
+ if response.status_code == 200:
29
+ data = response.json()
30
+ latest_version = data["info"]["version"]
31
+ releases = data["releases"]
32
+
33
+ # GET RELEASE DATE
34
+ if pkg_version in releases and releases[pkg_version]:
35
+ try:
36
+ upload_time = releases[pkg_version][0]["upload_time"]
37
+ for date_format in [
38
+ "%Y-%m-%dT%H:%M:%S",
39
+ "%Y-%m-%dT%H:%M:%S.%fZ",
40
+ "%Y-%m-%d %H:%M:%S"
41
+ ]:
42
+ # TRY TO PARSE DATE
43
+ try:
44
+ published_date = datetime.strptime(upload_time, date_format)
45
+ formatted_date = published_date.strftime("%d %B %Y at %H:%M:%S")
46
+ # CHECK IF VERSION IS RC
47
+ if "rc" in pkg_version.lower():
48
+ click.echo(f"Pre-Released: {formatted_date}")
49
+ else:
50
+ click.echo(f"Released: {formatted_date}")
51
+ break
52
+ except ValueError:
53
+ continue
54
+ except Exception:
55
+ pass # SKIP DATE IF PARSING FAILS
56
+
57
+ # CHECK FOR UPDATES
58
+ latest_parsed = parse_version(latest_version)
59
+
60
+ # COMPARE VERSIONS AND PRINT UPDATE MESSAGE IF NEEDED
61
+ if latest_parsed > current_version:
62
+ update_cmd = "pip install --upgrade Open-AutoTools"
63
+ click.echo(click.style(f"\nUpdate available: v{latest_version}", fg='red', bold=True))
64
+ click.echo(click.style(f"Run '{update_cmd}' to update", fg='red'))
65
+
66
+ # EXCEPTIONS FOR ERRORS
67
+ except pkg_resources.DistributionNotFound:
68
+ click.echo("Package distribution not found")
69
+ except PackageNotFoundError:
70
+ click.echo("Open-AutoTools version information not available")
71
+ except Exception as e:
72
+ click.echo(f"Error checking updates: {str(e)}")
73
+
74
+ ctx.exit()