Skip to content

Commit 763b2bd

Browse files
authored
Merge pull request #218 from Paperspace/PS-12882-Remove_--workspaceUrl_and_--workspaceArchive
Remove --workspaceUrl and --workspaceArchive and some unused fields f…
2 parents 08eb4de + 95bea5e commit 763b2bd

24 files changed

+68
-210
lines changed

gradient/api_sdk/clients/hyperparameter_client.py

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -147,18 +147,6 @@ def run(
147147
):
148148
"""Create and start hyperparameter tuning job
149149
150-
*EXAMPLE*::
151-
152-
gradient hyperparameters run
153-
--name HyperoptKerasExperimentCLI1
154-
--projectId <your-project-id>
155-
--tuningCommand 'make run_hyperopt'
156-
--workerContainer tensorflow/tensorflow:1.13.1-gpu-py3
157-
--workerMachineType K80
158-
--workerCommand 'make run_hyperopt_worker'
159-
--workerCount 2
160-
--workspaceUrl git+https://github.com/Paperspace/hyperopt-keras-sample
161-
162150
:param str name: Name of new experiment [required]
163151
:param str project_id: Project ID [required]
164152
:param str tuning_command: Tuning command [required]
@@ -262,23 +250,6 @@ def start(self, id):
262250
def list(self):
263251
"""Get a list of hyperparameter tuning jobs
264252
265-
*EXAMPLE*::
266-
267-
gradient hyperparameters list
268-
269-
*EXAMPLE RETURN*::
270-
271-
+--------------------------------+----------------+------------+
272-
| Name | ID | Project ID |
273-
+--------------------------------+----------------+------------+
274-
| name-of-your-experiment-job | job-id | project-id |
275-
| name-of-your-experiment-job | job-id | project-id |
276-
| name-of-your-experiment-job | job-id | project-id |
277-
| name-of-your-experiment-job | job-id | project-id |
278-
| name-of-your-experiment-job | job-id | project-id |
279-
+--------------------------------+----------------+------------+
280-
281-
282253
:rtype: list[models.Hyperparameter]
283254
"""
284255
repository = self.build_repository(repositories.ListHyperparameterJobs)

gradient/api_sdk/clients/job_client.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@ def create(
3838
command=None,
3939
ports=None,
4040
is_public=None,
41-
workspace=None,
42-
workspace_archive=None,
43-
workspace_url=None,
4441
working_directory=None,
4542
experiment_id=None,
4643
job_env=None,
@@ -78,7 +75,6 @@ def create(
7875
name='Example job',
7976
command='pip install -r requirements.txt && python mnist.py',
8077
ports='5000:5000',
81-
workspace_url='git+https://github.com/Paperspace/mnist-sample.git',
8278
job_env={
8379
'CUSTOM_ENV'='Some value that will be set as system environment',
8480
}
@@ -114,11 +110,6 @@ def create(
114110
Example value: ``5000:5000,8080:8080``
115111
116112
:param bool is_public: bool flag to select if job should be available by default None
117-
:param str workspace: this field is used with CLI to upload folder as your workspace. You can provide here path
118-
that you wish to upload. (Soon also will support a path to a workspace archive or git repository URL.)
119-
:param str workspace_archive: Path to workspace archive. (Currently being deprecated in an upcoming version.)
120-
:param str workspace_url: url to repo with code to run inside of job.
121-
(Currently being deprecated in an upcoming version.)
122113
:param str working_directory: location of code to run. By default ``/paperspace``
123114
:param str experiment_id: Id of experiment to which job should be connected. If not provided there will be
124115
created new experiment for this job.
@@ -158,9 +149,6 @@ def create(
158149
command=command,
159150
ports=ports,
160151
is_public=is_public,
161-
workspace=workspace,
162-
workspace_archive=workspace_archive,
163-
workspace_url=workspace_url,
164152
working_directory=working_directory,
165153
experiment_id=experiment_id,
166154
job_env=job_env,

gradient/api_sdk/models/job.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ class Job(object):
66
id = attr.ib(type=str, default=None)
77
name = attr.ib(type=str, default=None)
88
state = attr.ib(type=str, default=None)
9-
workspace_url = attr.ib(type=str, default=None)
109
working_directory = attr.ib(type=str, default=None)
1110
artifacts_directory = attr.ib(type=str, default=None)
1211
entrypoint = attr.ib(type=str, default=None)
@@ -74,8 +73,6 @@ class Job(object):
7473
experiment_id = attr.ib(type=str, default=None)
7574

7675
command = attr.ib(type=str, default=None)
77-
workspace = attr.ib(type=str, default=None)
78-
workspace_archive = attr.ib(type=str, default=None)
7976
workspace_file_name = attr.ib(type=str, default=None)
8077
use_dockerfile = attr.ib(type=str, default=None)
8178
rel_dockerfile_path = attr.ib(type=str, default=None)

gradient/api_sdk/s3_uploader.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import progressbar
88
from requests_toolbelt.multipart import encoder
99

10-
from gradient.cli_constants import CLI_PS_CLIENT_NAME
1110
from . import sdk_exceptions
1211
from .clients import http_client
1312
from .config import config
@@ -157,13 +156,14 @@ def _archive_iterate_callback(self, i):
157156
class S3FileUploader(object):
158157
DEFAULT_MULTIPART_ENCODER_CLS = MultipartEncoder
159158

160-
def __init__(self, multipart_encoder_cls=None, logger=None):
159+
def __init__(self, multipart_encoder_cls=None, logger=None, ps_client_name=None):
161160
"""
162161
:param type(MultipartEncoder) multipart_encoder_cls:
163162
:param Logger logger:
164163
"""
165164
self.multipart_encoder_cls = multipart_encoder_cls or self.DEFAULT_MULTIPART_ENCODER_CLS
166165
self.logger = logger or MuteLogger()
166+
self.ps_client_name = ps_client_name
167167

168168
def upload(self, file_path, url, bucket_name, s3_fields):
169169
"""Upload a file to S3
@@ -200,7 +200,7 @@ def _upload(self, url, data):
200200
raise sdk_exceptions.S3UploadFailedError(response)
201201

202202
def _get_client(self, url):
203-
client = http_client.API(url, logger=self.logger, ps_client_name=CLI_PS_CLIENT_NAME)
203+
client = http_client.API(url, logger=self.logger, ps_client_name=self.ps_client_name)
204204
return client
205205

206206
def _get_multipart_encoder_monitor(self, fields):
@@ -225,7 +225,7 @@ def _get_bucket_url(bucket_name, s3_fields):
225225

226226

227227
class S3ProjectFileUploader(object):
228-
def __init__(self, api_key, s3uploader=None, logger=None):
228+
def __init__(self, api_key, s3uploader=None, logger=None, ps_client_name=None):
229229
"""
230230
:param str api_key:
231231
:param S3FileUploader s3uploader:
@@ -236,9 +236,9 @@ def __init__(self, api_key, s3uploader=None, logger=None):
236236
config.CONFIG_EXPERIMENTS_HOST,
237237
api_key=api_key,
238238
logger=self.logger,
239-
ps_client_name=CLI_PS_CLIENT_NAME,
239+
ps_client_name=ps_client_name,
240240
)
241-
self.s3uploader = s3uploader or S3FileUploader(logger=self.logger)
241+
self.s3uploader = s3uploader or S3FileUploader(logger=self.logger, ps_client_name=ps_client_name)
242242

243243
def upload(self, file_path, project_id, cluster_id=None):
244244
"""Upload file to S3 bucket for a project
@@ -294,7 +294,7 @@ def _get_upload_data(self, file_path, project_handle, cluster_id=None):
294294

295295

296296
class S3WorkspaceDirectoryUploader(object):
297-
def __init__(self, api_key, temp_dir=None, archiver=None, project_uploader=None):
297+
def __init__(self, api_key, temp_dir=None, archiver=None, project_uploader=None, ps_client_name=None):
298298
"""
299299
:param str api_key:
300300
:param str temp_dir:
@@ -303,7 +303,8 @@ def __init__(self, api_key, temp_dir=None, archiver=None, project_uploader=None)
303303
"""
304304
self.temp_dir = temp_dir or tempfile.gettempdir()
305305
self.archiver = archiver or ZipArchiver()
306-
self.project_uploader = project_uploader or S3ProjectFileUploader(api_key)
306+
self.ps_client_name = ps_client_name
307+
self.project_uploader = project_uploader or S3ProjectFileUploader(api_key, ps_client_name=ps_client_name)
307308

308309
def upload(self, workspace_dir_path, project_id, exclude=None, temp_file_name="temp.zip"):
309310
"""Archive and upload a workspace directory

gradient/api_sdk/serializers/job.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ class JobSchema(BaseSchema):
1010
id = marshmallow.fields.Str(dump_to="id", load_from="id")
1111
name = marshmallow.fields.Str(required=True)
1212
state = marshmallow.fields.Str()
13-
workspace_url = marshmallow.fields.Str(dump_to="workspaceUrl", load_from="workspaceUrl")
1413
workspace_file_name = marshmallow.fields.Str(dump_to="workspaceFileName", load_from="workspaceFileName")
1514
working_directory = marshmallow.fields.Str(dump_to="workingDirectory", load_from="workingDirectory")
1615
artifacts_directory = marshmallow.fields.Str(dump_to="artifactsDirectory", load_from="artifactsDirectory")
@@ -80,8 +79,6 @@ class JobSchema(BaseSchema):
8079
experiment_id = marshmallow.fields.Str(dump_to="experimentId", load_from="experimentId")
8180

8281
command = marshmallow.fields.Str()
83-
workspace = marshmallow.fields.Str()
84-
workspace_archive = marshmallow.fields.Str(dump_to="workspaceArchive", load_from="workspaceArchive")
8582
use_dockerfile = marshmallow.fields.Bool(dump_to="useDockerfile", load_from="useDockerfile")
8683
rel_dockerfile_path = marshmallow.fields.Str(dump_to="relDockerfilePath", load_from="relDockerfilePath")
8784
registry_username = marshmallow.fields.Str(dump_to="registryUsername", load_from="registryUsername")

gradient/cli/experiments.py

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import click
44

5-
from gradient import cliutils, clilogger, workspace
5+
from gradient import clilogger, workspace
66
from gradient.api_sdk import constants
77
from gradient.cli import common, validators
88
from gradient.cli.cli import cli
@@ -26,7 +26,7 @@
2626

2727
def get_workspace_handler(api_key):
2828
logger_ = clilogger.CliLogger()
29-
workspace_handler = workspace.S3WorkspaceHandlerWithProgressbar(api_key=api_key, logger_=logger_)
29+
workspace_handler = workspace.S3WorkspaceHandlerWithProgressbar(api_key=api_key, logger_=logger_, )
3030
return workspace_handler
3131

3232

@@ -76,19 +76,6 @@ def common_experiments_create_options(f):
7676
help="Git commit hash, branch name or tag",
7777
cls=common.GradientOption,
7878
),
79-
click.option(
80-
"--workspaceArchive",
81-
"workspace_archive",
82-
help="Path to workspace .zip archive",
83-
cls=common.GradientOption,
84-
),
85-
click.option(
86-
"--workspaceUrl",
87-
"workspace_url",
88-
metavar="<workspace URL>",
89-
help="Project git repository url",
90-
cls=common.GradientOption,
91-
),
9279
click.option(
9380
"--workspaceUsername",
9481
"workspace_username",
@@ -467,18 +454,6 @@ def common_experiments_create_single_node_options(f):
467454
return functools.reduce(lambda x, opt: opt(x), reversed(options), f)
468455

469456

470-
def show_workspace_deprecation_warning_if_workspace_archive_or_workspace_archive_was_used(kwargs):
471-
if kwargs["workspace_archive"] or kwargs["workspace_url"]:
472-
msg = """DeprecatedWarning:
473-
WARNING: --workspaceUrl and --workspaceArchive options will not be included in version 0.6.0
474-
475-
For more information, please see:
476-
https://docs.paperspace.com
477-
If you depend on functionality not listed there, please file an issue."""
478-
479-
clilogger.CliLogger().error(msg)
480-
481-
482457
def tensorboard_option(f):
483458
options = [
484459
click.option(
@@ -522,11 +497,9 @@ def parse_tensorboard_options(tensorboard, tensorboard_set):
522497
@common.options_file
523498
def create_multi_node(api_key, tensorboard, tensorboard_set, options_file, **kwargs):
524499
kwargs["tags"] = validate_comma_split_option(kwargs.pop("tags_comma"), kwargs.pop("tags"))
525-
show_workspace_deprecation_warning_if_workspace_archive_or_workspace_archive_was_used(kwargs)
526500
add_to_tensorboard = parse_tensorboard_options(tensorboard, tensorboard_set)
527501

528502
validators.validate_multi_node(kwargs)
529-
cliutils.validate_workspace_input(kwargs)
530503
common.del_if_value_is_none(kwargs)
531504
experiment_type = kwargs.get('experiment_type_id')
532505
command_class = MULTI_NODE_CREATE_EXPERIMENT_COMMANDS.get(experiment_type)
@@ -546,10 +519,8 @@ def create_multi_node(api_key, tensorboard, tensorboard_set, options_file, **kwa
546519
@common.options_file
547520
def create_single_node(api_key, tensorboard, tensorboard_set, options_file, **kwargs):
548521
kwargs["tags"] = validate_comma_split_option(kwargs.pop("tags_comma"), kwargs.pop("tags"))
549-
show_workspace_deprecation_warning_if_workspace_archive_or_workspace_archive_was_used(kwargs)
550522
add_to_tensorboard = parse_tensorboard_options(tensorboard, tensorboard_set)
551523

552-
cliutils.validate_workspace_input(kwargs)
553524
common.del_if_value_is_none(kwargs)
554525

555526
command = experiments_commands.CreateSingleNodeExperimentCommand(
@@ -578,11 +549,9 @@ def create_single_node(api_key, tensorboard, tensorboard_set, options_file, **kw
578549
@click.pass_context
579550
def create_and_start_multi_node(ctx, api_key, show_logs, tensorboard, tensorboard_set, options_file, **kwargs):
580551
kwargs["tags"] = validate_comma_split_option(kwargs.pop("tags_comma"), kwargs.pop("tags"))
581-
show_workspace_deprecation_warning_if_workspace_archive_or_workspace_archive_was_used(kwargs)
582552
add_to_tensorboard = parse_tensorboard_options(tensorboard, tensorboard_set)
583553

584554
validators.validate_multi_node(kwargs)
585-
cliutils.validate_workspace_input(kwargs)
586555
common.del_if_value_is_none(kwargs)
587556

588557
experiment_type = kwargs.get('experiment_type_id')
@@ -617,10 +586,8 @@ def create_and_start_multi_node(ctx, api_key, show_logs, tensorboard, tensorboar
617586
def create_and_start_single_node(ctx, api_key, show_logs, tensorboard, tensorboard_set, options_file,
618587
**kwargs):
619588
kwargs["tags"] = validate_comma_split_option(kwargs.pop("tags_comma"), kwargs.pop("tags"))
620-
show_workspace_deprecation_warning_if_workspace_archive_or_workspace_archive_was_used(kwargs)
621589
add_to_tensorboard = parse_tensorboard_options(tensorboard, tensorboard_set)
622590

623-
cliutils.validate_workspace_input(kwargs)
624591
common.del_if_value_is_none(kwargs)
625592

626593
command = experiments_commands.CreateAndStartSingleNodeExperimentCommand(

gradient/cli/hyperparameters.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import click
44

5-
from gradient import cliutils
65
from gradient.cli import common
76
from gradient.cli.common import ClickGroup, validate_comma_split_option
87
from gradient.cli.experiments import common_experiments_create_options, get_workspace_handler, experiments_group
@@ -134,8 +133,7 @@ def common_hyperparameter_create_options(f):
134133
@common.options_file
135134
def create_hyperparameter(api_key, options_file, **hyperparameter):
136135
hyperparameter["tags"] = validate_comma_split_option(hyperparameter.pop("tags_comma"), hyperparameter.pop("tags"))
137-
cliutils.validate_workspace_input(hyperparameter)
138-
common.del_if_value_is_none(hyperparameter)
136+
common.del_if_value_is_none(hyperparameter, del_all_falsy=True)
139137

140138
command = hyperparameters_commands.CreateHyperparameterCommand(
141139
api_key=api_key,
@@ -151,8 +149,7 @@ def create_hyperparameter(api_key, options_file, **hyperparameter):
151149
@common.options_file
152150
def create_and_start_hyperparameter(api_key, options_file, **hyperparameter):
153151
hyperparameter["tags"] = validate_comma_split_option(hyperparameter.pop("tags_comma"), hyperparameter.pop("tags"))
154-
cliutils.validate_workspace_input(hyperparameter)
155-
common.del_if_value_is_none(hyperparameter)
152+
common.del_if_value_is_none(hyperparameter, del_all_falsy=True)
156153

157154
command = hyperparameters_commands.CreateAndStartHyperparameterCommand(
158155
api_key=api_key,

gradient/cli/jobs.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@
22

33
import click
44

5-
from gradient import cliutils, clilogger
5+
from gradient import clilogger
66
from gradient.cli import common
77
from gradient.cli.cli import cli
88
from gradient.cli.cli_types import json_string
99
from gradient.cli.common import (
1010
api_key_option, del_if_value_is_none, ClickGroup, jsonify_dicts,
1111
validate_comma_split_option,
1212
)
13-
from gradient.cli.experiments import \
14-
show_workspace_deprecation_warning_if_workspace_archive_or_workspace_archive_was_used
1513
from gradient.commands import jobs as jobs_commands
1614
from gradient.commands.jobs import JobAddTagsCommand, JobRemoveTagsCommand
1715
from gradient.workspace import WorkspaceHandler
@@ -142,18 +140,6 @@ def common_jobs_create_options(f):
142140
help="Path to workspace directory",
143141
cls=common.GradientOption,
144142
),
145-
click.option(
146-
"--workspaceArchive",
147-
"workspace_archive",
148-
help="Path to workspace archive",
149-
cls=common.GradientOption,
150-
),
151-
click.option(
152-
"--workspaceUrl",
153-
"workspace_url",
154-
help="Project git repository url",
155-
cls=common.GradientOption,
156-
),
157143
click.option(
158144
"--workingDirectory",
159145
"working_directory",
@@ -298,8 +284,6 @@ def common_jobs_create_options(f):
298284
@click.pass_context
299285
def create_job(ctx, api_key, options_file, **kwargs):
300286
kwargs["tags"] = validate_comma_split_option(kwargs.pop("tags_comma"), kwargs.pop("tags"))
301-
cliutils.validate_workspace_input(kwargs)
302-
show_workspace_deprecation_warning_if_workspace_archive_or_workspace_archive_was_used(kwargs)
303287

304288
del_if_value_is_none(kwargs)
305289
jsonify_dicts(kwargs)

gradient/cli/run.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import click
22

3-
from gradient import cliutils, clilogger
43
from gradient.api_sdk.constants import RunMode
54
from gradient.cli import common
65
from gradient.cli.cli import cli
@@ -40,11 +39,6 @@
4039
@common.api_key_option
4140
@common.options_file
4241
def run(api_key, options_file, **kwargs):
43-
cliutils.validate_workspace_input(kwargs)
44-
if kwargs["workspace_archive"] or kwargs["workspace_url"]:
45-
clilogger.CliLogger().error("WARNING: --workspaceUrl and --workspaceArchive options will not be included "
46-
"in version 0.6.0")
47-
4842
del_if_value_is_none(kwargs)
4943
jsonify_dicts(kwargs)
5044

0 commit comments

Comments
 (0)