From f49b059efd3d0982134587658a5d6a6f97804c9b Mon Sep 17 00:00:00 2001 From: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com> Date: Fri, 23 Jun 2023 16:45:49 +0100 Subject: [PATCH 1/2] Specify merlin dependencies in setup.py to create release specifier --- requirements/base.txt | 1 - setup.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index ea3b571a..e69de29b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1 +0,0 @@ -merlin-core>=23.04.00 diff --git a/setup.py b/setup.py index 99c5344c..ed4cef92 100644 --- a/setup.py +++ b/setup.py @@ -16,6 +16,7 @@ import codecs import itertools import os +import re import sys from setuptools import find_namespace_packages, setup @@ -38,8 +39,34 @@ def read_requirements(filename): return [line for line in lineiter if line and not line.startswith("#")] +def merlin_version(version: str, merlin_package_name: str) -> str: + """Get a dependency specifier that matches the version provided. + + Examples + -------- + + >>> merlin_version("23.07.00", "merlin-core") + "merlin-core>=23.07,<23.08" + + >>> merlin_version("23.12.dev0+1.ge73d8ba", "merlin-core") + "merlin-core>=23.12,<24.01" + """ + major, minor = map(int, re.match(r"(\d+).(\d+).*", version).groups()) + next_major = major + 1 if minor == 12 else major + next_minor = (minor + 1) % 12 + return f"{merlin_package_name}>={major}.{minor:02d},<{next_major}.{next_minor:02d}" + + +def merlin_dependency(merlin_package_name: str) -> str: + """Get Merlin package dependency""" + version = versioneer.get_version() + if "dev" in version: + return merlin_package_name + return merlin_version(version, merlin_package_name) + + requirements = { - "base": read_requirements("requirements/base.txt"), + "base": read_requirements("requirements/base.txt") + [merlin_dependency("merlin-core")], "tensorflow": read_requirements("requirements/tensorflow.txt"), "pytorch": read_requirements("requirements/torch.txt"), "torch": read_requirements("requirements/torch.txt"), From af264768ff6a1a93b3589e75d7062c7a36fc632f Mon Sep 17 00:00:00 2001 From: Oliver Holworthy <1216955+oliverholworthy@users.noreply.github.com> Date: Fri, 23 Jun 2023 17:20:38 +0100 Subject: [PATCH 2/2] Simplify merlin_dependency using `~=` version specifier --- setup.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/setup.py b/setup.py index ed4cef92..2ffb4dc4 100644 --- a/setup.py +++ b/setup.py @@ -39,30 +39,23 @@ def read_requirements(filename): return [line for line in lineiter if line and not line.startswith("#")] -def merlin_version(version: str, merlin_package_name: str) -> str: - """Get a dependency specifier that matches the version provided. +def merlin_dependency(package_name: str) -> str: + """Get Merlin package dependency matching the current version. Examples -------- - >>> merlin_version("23.07.00", "merlin-core") - "merlin-core>=23.07,<23.08" + >>> merlin_dependency("merlin-core") # with version "23.07.00" + "merlin-core~=23.7.0" - >>> merlin_version("23.12.dev0+1.ge73d8ba", "merlin-core") - "merlin-core>=23.12,<24.01" + >>> merlin_dependency("merlin-core") # with version "23.12.dev0+1.ge73d8ba" + "merlin-core" """ - major, minor = map(int, re.match(r"(\d+).(\d+).*", version).groups()) - next_major = major + 1 if minor == 12 else major - next_minor = (minor + 1) % 12 - return f"{merlin_package_name}>={major}.{minor:02d},<{next_major}.{next_minor:02d}" - - -def merlin_dependency(merlin_package_name: str) -> str: - """Get Merlin package dependency""" version = versioneer.get_version() + major, minor = map(int, re.match(r"(\d+).(\d+).*", version).groups()) if "dev" in version: - return merlin_package_name - return merlin_version(version, merlin_package_name) + return package_name + return f"{package_name}~={major}.{minor}.0" requirements = {