[V3 Downloader] Allow for requiring minimum python version (#1455)

This commit is contained in:
Will 2018-04-02 20:26:07 -04:00 committed by palmtree5
parent 935028addc
commit 728ab6c8c1
2 changed files with 20 additions and 1 deletions

View File

@ -5,6 +5,8 @@ from sys import path as syspath
from typing import Tuple, Union
import discord
import sys
from redbot.core import Config
from redbot.core import checks
from redbot.core.data_manager import cog_data_path
@ -275,6 +277,13 @@ class Downloader:
await ctx.send(_("Error, there is no cog by the name of"
" `{}` in the `{}` repo.").format(cog_name, repo_name.name))
return
elif cog.min_python_version > sys.version_info:
await ctx.send(_(
"This cog requires at least python version {}, aborting install.".format(
'.'.join([str(n) for n in cog.min_python_version])
)
))
return
if not await repo_name.install_requirements(cog, self.LIB_PATH):
await ctx.send(_("Failed to install the required libraries for"

View File

@ -38,6 +38,9 @@ class Installable(RepoJSONMixin):
bot_version : `tuple` of `int`
The minimum bot version required for this installation. Right now
this is always :code:`3.0.0`.
min_python_version : `tuple` of `int`
The minimum python version required for this cog. This field will not
apply to repo info.json's.
hidden : `bool`
Whether or not this cog will be hidden from the user when they use
`Downloader`'s commands.
@ -70,6 +73,7 @@ class Installable(RepoJSONMixin):
self.author = ()
self.bot_version = (3, 0, 0)
self.min_python_version = (3, 5, 1)
self.hidden = False
self.required_cogs = {} # Cog name -> repo URL
self.requirements = ()
@ -159,9 +163,15 @@ class Installable(RepoJSONMixin):
try:
bot_version = tuple(info.get("bot_version", [3, 0, 0]))
except ValueError:
bot_version = 2
bot_version = self.bot_version
self.bot_version = bot_version
try:
min_python_version = tuple(info.get('min_python_version', [3, 5, 1]))
except ValueError:
min_python_version = self.min_python_version
self.min_python_version = min_python_version
try:
hidden = bool(info.get("hidden", False))
except ValueError: