numerai-cli 1.1.5__tar.gz → 1.2.0.dev0__tar.gz
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.
- {numerai_cli-1.1.5/numerai_cli.egg-info → numerai_cli-1.2.0.dev0}/PKG-INFO +1 -1
- {numerai_cli-1.1.5/numerai/examples/signals-python3 → numerai_cli-1.2.0.dev0/numerai/examples/crypto-python3}/Dockerfile +1 -1
- numerai_cli-1.2.0.dev0/numerai/examples/crypto-python3/requirements.txt +6 -0
- {numerai_cli-1.1.5/numerai/examples/tournament-python3 → numerai_cli-1.2.0.dev0/numerai/examples/signals-python3}/Dockerfile +1 -1
- numerai_cli-1.2.0.dev0/numerai/examples/signals-python3/requirements.txt +6 -0
- {numerai_cli-1.1.5/numerai/examples/crypto-python3 → numerai_cli-1.2.0.dev0/numerai/examples/tournament-python3}/Dockerfile +1 -1
- numerai_cli-1.2.0.dev0/numerai/examples/tournament-python3/requirements.txt +6 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0/numerai_cli.egg-info}/PKG-INFO +1 -1
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai_cli.egg-info/SOURCES.txt +2 -1
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/setup.py +5 -1
- numerai_cli-1.2.0.dev0/tests/test_setup_scripts.py +98 -0
- numerai_cli-1.1.5/numerai/examples/crypto-python3/requirements.txt +0 -6
- numerai_cli-1.1.5/numerai/examples/signals-python3/requirements.txt +0 -6
- numerai_cli-1.1.5/numerai/examples/tournament-python3/requirements.txt +0 -6
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/LICENSE +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/MANIFEST.in +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/README.md +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/__init__.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/__init__.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/constants.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/destroy_all.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/doctor.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/misc.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/node/__init__.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/node/config.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/node/deploy.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/node/destroy.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/node/test.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/setup.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/uninstall.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/upgrade.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/util/__init__.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/util/debug.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/util/docker.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/util/files.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/util/keys.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/cli/util/terraform.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/crypto-python3/predict.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/signals-python3/predict.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/signals-python3/train.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/tournament-python3/predict.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/tournament-python3/train.py +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/tournament-rlang/Dockerfile +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/tournament-rlang/install_packages.R +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/tournament-rlang/main.R +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/-inputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/-main.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/-outputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/aws/-inputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/aws/-locals.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/aws/-outputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/aws/cluster.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/aws/main.zip +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/aws/network.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/aws/aws/webhook.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/azure/cluster.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/azure/input.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/azure/locals.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/azure/outputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/azure/webhook.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/azure_cron_trigger.zip +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/azure_trigger.zip +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/input.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/main.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/outputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/azure/registry.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/-inputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/-main.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/-outputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/cloud-function.zip +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/gcp/-inputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/gcp/-locals.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/gcp/-outputs.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/gcp/cluster.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/gcp/webhook.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/gcp/workflow-source.yaml +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/registry.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/terraform/gcp/services.tf +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai_cli.egg-info/dependency_links.txt +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai_cli.egg-info/entry_points.txt +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai_cli.egg-info/requires.txt +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai_cli.egg-info/top_level.txt +0 -0
- {numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/setup.cfg +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Provides us a working Python 3 environment.
|
|
2
|
-
FROM python:3.
|
|
2
|
+
FROM python:3.14
|
|
3
3
|
|
|
4
4
|
# These are docker arguments that `numerai node deploy/test` will always pass into docker.
|
|
5
5
|
# They are then set in your environment so that numerapi can access them when uploading submissions.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Provides us a working Python 3 environment.
|
|
2
|
-
FROM python:3.
|
|
2
|
+
FROM python:3.14
|
|
3
3
|
|
|
4
4
|
# These are docker arguments that `numerai node deploy/test` will always pass into docker.
|
|
5
5
|
# They are then set in your environment so that numerapi can access them when uploading submissions.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Provides us a working Python 3 environment.
|
|
2
|
-
FROM python:3.
|
|
2
|
+
FROM python:3.14
|
|
3
3
|
|
|
4
4
|
# These are docker arguments that `numerai node deploy/test` will always pass into docker.
|
|
5
5
|
# They are then set in your environment so that numerapi can access them when uploading submissions.
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
from setuptools import setup
|
|
2
2
|
from os import path
|
|
3
3
|
|
|
4
|
+
# The release version. See RELEASING.md -- this string is the release, the git
|
|
5
|
+
# tag is only the trigger, and CI refuses to publish if the two disagree.
|
|
6
|
+
numerai_cli_version = "1.2.0.dev0"
|
|
7
|
+
|
|
4
8
|
# read the contents of the README file
|
|
5
9
|
this_directory = path.abspath(path.dirname(__file__))
|
|
6
10
|
with open(path.join(this_directory, "README.md"), encoding="utf-8") as f:
|
|
@@ -9,7 +13,7 @@ with open(path.join(this_directory, "README.md"), encoding="utf-8") as f:
|
|
|
9
13
|
|
|
10
14
|
setup(
|
|
11
15
|
name="numerai-cli",
|
|
12
|
-
version=
|
|
16
|
+
version=numerai_cli_version,
|
|
13
17
|
description="A library for deploying Numer.ai Prediction Nodes.",
|
|
14
18
|
url="https://github.com/numerai/numerai-cli",
|
|
15
19
|
author="Numer.ai",
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
import tempfile
|
|
4
|
+
import unittest
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
REPOSITORY_ROOT = Path(__file__).resolve().parents[1]
|
|
9
|
+
SCRIPTS_DIRECTORY = REPOSITORY_ROOT / "scripts"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SetupScriptsTest(unittest.TestCase):
|
|
13
|
+
def test_installers_do_not_reference_python_39(self):
|
|
14
|
+
for script_path in SCRIPTS_DIRECTORY.iterdir():
|
|
15
|
+
if not script_path.is_file():
|
|
16
|
+
continue
|
|
17
|
+
with self.subTest(script=script_path.name):
|
|
18
|
+
self.assertNotIn("3.9", script_path.read_text())
|
|
19
|
+
|
|
20
|
+
def test_macos_installs_python_312(self):
|
|
21
|
+
script = (SCRIPTS_DIRECTORY / "setup-mac.sh").read_text()
|
|
22
|
+
|
|
23
|
+
self.assertIn("Python 3.12.10", script)
|
|
24
|
+
self.assertIn(
|
|
25
|
+
"https://www.python.org/ftp/python/3.12.10/"
|
|
26
|
+
"python-3.12.10-macos11.pkg",
|
|
27
|
+
script,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def test_macos_runs_the_python_312_installer_when_python_is_missing(self):
|
|
31
|
+
with tempfile.TemporaryDirectory() as temporary_directory:
|
|
32
|
+
temporary_path = Path(temporary_directory)
|
|
33
|
+
commands_path = temporary_path / "commands"
|
|
34
|
+
commands_path.mkdir()
|
|
35
|
+
command_log = temporary_path / "commands.log"
|
|
36
|
+
|
|
37
|
+
commands = {
|
|
38
|
+
"curl": '#!/bin/bash\nprintf "curl %s\\n" "$*" >> "$COMMAND_LOG"\n',
|
|
39
|
+
"sudo": '#!/bin/bash\nprintf "sudo %s\\n" "$*" >> "$COMMAND_LOG"\n',
|
|
40
|
+
"sw_vers": '#!/bin/bash\necho "13.6.0"\n',
|
|
41
|
+
"which": (
|
|
42
|
+
'#!/bin/bash\nif [[ "$1" == "docker" ]]; then '
|
|
43
|
+
'echo "/usr/local/bin/docker"; fi\n'
|
|
44
|
+
),
|
|
45
|
+
}
|
|
46
|
+
for command_name, command in commands.items():
|
|
47
|
+
command_path = commands_path / command_name
|
|
48
|
+
command_path.write_text(command)
|
|
49
|
+
command_path.chmod(0o755)
|
|
50
|
+
|
|
51
|
+
environment = os.environ.copy()
|
|
52
|
+
environment.update(
|
|
53
|
+
{
|
|
54
|
+
"COMMAND_LOG": str(command_log),
|
|
55
|
+
"HOME": str(temporary_path),
|
|
56
|
+
"PATH": str(commands_path),
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
subprocess.run(
|
|
60
|
+
["/bin/bash", SCRIPTS_DIRECTORY / "setup-mac.sh"],
|
|
61
|
+
check=True,
|
|
62
|
+
env=environment,
|
|
63
|
+
capture_output=True,
|
|
64
|
+
text=True,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
commands_run = command_log.read_text()
|
|
68
|
+
self.assertIn(
|
|
69
|
+
"curl -fL https://www.python.org/ftp/python/3.12.10/"
|
|
70
|
+
"python-3.12.10-macos11.pkg",
|
|
71
|
+
commands_run,
|
|
72
|
+
)
|
|
73
|
+
self.assertIn(
|
|
74
|
+
"sudo installer -pkg "
|
|
75
|
+
f"{temporary_path}/Downloads/python-3.12.10-installer.pkg -target /",
|
|
76
|
+
commands_run,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
def test_windows_installs_python_312(self):
|
|
80
|
+
script = (SCRIPTS_DIRECTORY / "setup-win10.ps1").read_text()
|
|
81
|
+
|
|
82
|
+
self.assertIn('$pythonVersion = "3.12.10"', script)
|
|
83
|
+
self.assertIn(
|
|
84
|
+
"https://www.python.org/ftp/python/$pythonVersion/"
|
|
85
|
+
"python-$pythonVersion-amd64.exe",
|
|
86
|
+
script,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
def test_shell_scripts_have_valid_syntax(self):
|
|
90
|
+
for script_name in ("setup-mac.sh", "setup-ubu.sh"):
|
|
91
|
+
with self.subTest(script=script_name):
|
|
92
|
+
subprocess.run(
|
|
93
|
+
["bash", "-n", SCRIPTS_DIRECTORY / script_name], check=True
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
if __name__ == "__main__":
|
|
98
|
+
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{numerai_cli-1.1.5 → numerai_cli-1.2.0.dev0}/numerai/examples/tournament-rlang/install_packages.R
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|