All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning with one exception: minor yet potentially breaking changes to the data model that are made to maintain compatibility with the Beaker server and not necessarily given new major releases. We often use patch releases for compatibility fixes instead.
v1.32.3 - 2024-12-11
- Added new field
Cluster.max_session_timeout: Optional[int]
. - Added new field
JobExecution.retry_ancestor: Optional[str]
.
- Made checking for version upgrades more robust.
v1.32.2 - 2024-11-13
- Relaxed requirements on Docker layer upload/download status strings.
v1.32.1 - 2024-11-01
- Added new
WorkspaceSize.environments
field.
v1.32.0 - 2024-10-07
- Added
retry
field toExperimentSpec
.
v1.31.3 - 2024-08-30
- Increased Beaker.from_env() default timeout from 5s to 30s
v1.31.2 - 2024-07-26
- Added
node_has_gpus
field toJob
.
v1.31.1 - 2024-07-14
- Fixed
Task.replica_rank
to be set to the right value now instead of alwaysNone
.
v1.31.0 - 2024-07-08
- Added
execution_results
toJob
model.
v1.30.0 - 2024-06-14
- Added
weka
option toDataSource
model.
- Only check for upgrades once every 12 hours by default.
v1.29.1 - 2024-06-13
- Raise
ExperimentConflict
when stopping an experiment that was already stopped fromBeaker.experiment.stop
.
v1.29.0 - 2024-06-13
- Added
author
filter toBeaker.job.list()
. - Added
Beaker.experiment.list()
method.
v1.28.0 - 2024-06-13
- Added
Job.is_preemptible
property. - Added
Job.is_running
property. - Added
Job.is_queued
property. - Added
ClusterUtilization.jobs
field.
v1.27.2 - 2024-05-31
- Added
since
argument toBeaker.experiment.follow()
.
- Fixed an issue with using
timedelta
objects for thesince
argument withBeaker.(experiment|job).(follow|logs)
.
v1.27.1 - 2024-05-31
- Added
TaskSpec.propagate_preemption
field.
v1.27.0 - 2024-05-31
- Added
since
argument toBeaker.job.follow
.
v1.26.15 - 2024-05-30
- Fixed another bug with identifying preemptible jobs in
Beaker.cluster.utilization
.
v1.26.14 - 2024-05-29
- Added
Experiment.canceled
andExperiment.canceled_for
fields.
- Fixed detection of preemptible jobs in
Beaker.cluster.utilization()
.
v1.26.13 - 2024-05-28
- Added
Secret.author_id
field. - Added
Cluster.require_preemptible_tasks
field.
- Updated dependencies list to work-around docker-py#3256.
v1.26.12 - 2024-05-10
- Added
preemptible
argument toTaskSpec.new()
. - Added
Workspace.max_workload_priority
field. - Added
Job.preemptible
field.
v1.26.11 - 2024-05-10
- Added new field
TaskContext.preemptible
.
v1.26.10 - 2024-05-02
- Added support for passing human-readable
synchronized_start_timeout
duration strings toTaskSpec.new()
, like "10sec", "1m", etc.
v1.26.9 - 2024-05-02
- Update
synchronized_start_timeout
to send nanoseconds to the Beaker server instead of a string.
v1.26.8 - 2024-05-01
- Added new fields
JobStatus.ready
,JobExecution.replica_rank
, andJobExecution.replica_group_id
.
v1.26.7 - 2024-04-30
- Added
synchronized_start_timeout
field toTaskSpec
.
v1.26.6 - 2024-04-24
- Added
propagate_failure
field toTaskSpec
.
v1.26.5 - 2024-04-18
- Numbers are now allowed in
command
andarguments
fields for experiment specs.
v1.26.4 - 2024-04-10
- Relaxed
CanceledCode
schema to accept arbitrary integers.
v1.26.3 - 2024-03-20
- Fixed logic in
Beaker.cluster.utilization()
to checkjob.limits
instead ofjob.requests
for the source of truth.
v1.26.2 - 2024-02-29
- Added
ignore_failures
option toBeaker.cluster.preempt_jobs()
.
v1.26.1 - 2024-02-28
- Made
public
argument optional forBeaker.workspace.create()
.
v1.26.0 - 2024-02-28
- Added cluster method
Beaker.cluster.preempt_jobs()
. - Added argument
allow_preemptible
toBeaker.cluster.update()
.
v1.25.1 - 2024-02-26
- Added missing field
Cluster.max_job_timeout
.
v1.25.0 - 2024-02-22
budget
is now a required field for experiment specs.
v1.24.0 - 2024-01-30
- Added
budget
field to experiment spec.
v1.23.0 - 2023-12-15
- Allow only key-word arguments with
Beaker.experiment.create()
.
v1.22.0 - 2023-09-25
- Allow experiment name to be
None
when creating new experiments viaBeaker.experiment.create()
.
v1.21.0 - 2023-09-08
- Added
.priority
convenience property toJob
data model class. - Added
Beaker.job.url()
method to get the URL for a job.
- Fixed a bug with
Beaker.cluster.utilization()
that resulted in inflated numbers for the amount of running jobs.
v1.20.1 - 2023-09-01
- Added new missing cancellation code (4 = manual cancellation) to enumeration.
v1.20.0 - 2023-07-28
- Added
prefix
parameter toBeaker.dataset.fetch()
.
v1.19.0 - 2023-07-17
- Added support for Pydantic V2.
- Added missing field
compute_source
onCluster
data model.
v1.18.8 - 2023-07-12
- Made
WorkspacePermissions.authorizations
field optional (users without the right permissions level won't see this field).
v1.18.7 - 2023-06-19
- Added
hostname
constraint.
v1.18.6 - 2023-06-02
- Fixed data validation for
DataSource
.
v1.18.5 - 2023-05-25
- Added missing field
Cluster.allow_preemptible_restriction_exceptions
.
v1.18.4 - 2023-04-27
- Added support for uploading empty files to datasets.
v1.18.3 - 2023-04-19
- Added missing fields
total_size
andnum_files
toDatasetStorage
.
v1.18.2 - 2023-03-22
- Fixed
TaskSpec.constraints
to behave like a dictionary for backwards compatibility.
v1.18.1 - 2023-03-14
- Added missing field
docker_tag
toImage
.
v1.18.0 - 2023-03-07
- Added missing
host_networking
,replicas
, andleader_selection
fields toTaskSpec
.
- Removed the
multiprocessing
argument toBeaker.dataset.fetch()
. After the bug that was fixed in v1.17.6 it's no-longer worth using aProcessPoolExecutor
(in fact it's much slower than theThreadPoolExecutor
).
v1.17.7 - 2023-02-20
- Fixed bug with dataset download progress bar jumping around.
v1.17.6 - 2023-02-20
- Fixed bug causing slow dataset downloads.
v1.17.5 - 2023-02-17
- Added new field
Job.result
,Job.execution.result
is deprecated. - Added new field
Task.replica_rank
.
v1.17.4 - 2023-02-17
- Fixed latest tag (was "LATEST", should have been "latest")
v1.17.3 - 2023-02-17
- Added a
latest
tagged Docker image.
v1.17.2 - 2023-02-15
- Catch case where user token is empty, raise
ConfigurationError
.
v1.17.1 - 2023-02-14
- Added
multiprocessing
option toBeaker.dataset.fetch()
. This can speed things up substantially for datasets with a lot of files.
v1.17.0 - 2023-02-13
- Added
ExperimentSpec.new()
constructor.
- The
cluster
argument toTaskSpec.new()
andExperimentSpec.new()
can now be given as a list of clusters which is equivalent to adding a "cluster" list in theconstraints
field.
Beaker.workspace.clear()
will remove uncommitted datasets too.- Fixed the progress bar total in
Beaker.dataset.fetch()
and improved handling ofKeyboardInterrupt
.
v1.16.0 - 2023-01-26
- Added missing
user_restrictions
field toCluster
data model. - Added
Beaker.job.preempt()
method. - Added
Job.was_preempted
property. - Added
job
attribute toJobFailedError
andtask
attribute toTaskStoppedError
. - Added DEBUG logging statements for every request and response to/from the Beaker server. To see these, just enable logging at the DEBUG level (though you may want to disable DEBUG logging from the "urllib3" logger, as that will create a lot of noise). For example:
import logging logging.basicConfig(level=logging.DEBUG) logging.getLogger("urllib3").setLevel(logging.INFO)
- Fixed bug where
Beaker.experiment.wait_for()
would fail if a job was preempted.
v1.15.0 - 2023-01-19
- Added
DigestHashAlgorithm
enum to representDigest.algorithm
. - Added
Digest.new_hasher()
method. - Added fields
Job.host_networking
,Job.port_mappings
, andSession.ports_v2
.
- For backwards compatibility,
Digest
can now be instantiated again from a string, e.g.Digest("SHA256 iA02Sx8UNLYvMi49fDwdGjyy5ssU+ttuN1L4L3/JvZA=")
.
v1.14.1 - 2023-01-18
- No more blank lines printed when passing
quiet=True
to methods.
v1.14.0 - 2023-01-17
- Added
prefix
parameter toBeaker.dataset.ls()
.
- The
FileInfo
objects fromBeaker.dataset.ls()
will now include thedigest
.
v1.13.2 - 2023-01-03
Beaker.dataset.ls()
now returns a list instead of a generator.
- Fixed
Beaker.dataset.ls()
,.get_file()
,.stream_file()
,.fetch()
,.size()
methods.
v1.13.1 - 2022-12-21
- Added missing
urlv2
field toDatasetStorage
data model. - Added missing
constraints
field toSession
data model. - Added missing
description
field toGroup
data model.
- Removed deprecated
url
field fromFileInfo
data model.
v1.13.0 - 2022-12-09
- Added
cursor
,sort_by
and ordering options toBeaker.workspace.*
search methods.
v1.12.1 - 2022-12-08
- Improved
Beaker.(dataset|experiment|image).get()
when looking up objects in the default workspace that were created by other users.
v1.12.0 - 2022-11-23
- Added
Beaker.workspace.iter_(images|experiments|datasets)
methods. - Added
older_than
parameter toBeaker.workspace.clear()
method.
- Fixed
Beaker.experiment.results()
when dataset no longer exists. It will now returnNone
instead of failing withDatasetNotFound
.
v1.11.6 - 2022-11-22
- Added missing
url
field toDatasetStorage
.
- Removed old field
fileheap
fromDatasetSpec
.
v1.11.5 - 2022-11-16
- Added missing
size
field toImage
data model
v1.11.4 - 2022-11-07
TaskSpec.with_contraint
now takes**kwargs
instead of two positional arguments.
v1.11.3 - 2022-10-28
- Added customizable
user_agent
attribute toBeaker
client.
- Added missing
account_id
field toNode
data model. - Added missing
identity
field toSession
data model.
v1.11.2 - 2022-10-07
- Added missing
constraints
field toTaskSpec
data model.
v1.11.1 - 2022-10-07
- Added missing
cluster_id
field toNode
data model.
v1.11.0 - 2022-10-06
- The cluster field in
Job
andTaskContext
is now optional.
v1.10.3 - 2022-09-28
- Fixed data validation for job/task
Priority
. "urgent" now allowed.
v1.10.2 - 2022-09-27
- Fixed mispelled field
sharedMemory -> shared_memory
inJobRequests
data model.
v1.10.1 - 2022-09-23
- Added missing fields
cordoned
,cordon_reason
,cordon_agent_id
to data model forNode
.
- Made
expiry
field optional forNode
data model. Beaker.cluster.filter_available()
will ignore cordoned nodes.
v1.10.0 - 2022-09-21
- Added
Beaker.dataset.upload()
for uploading raw bytes to a file in a dataset.
v1.9.2 - 2022-09-21
- Added
Beaker.workspace.clear()
method for removing all items from a workspace.
- Made
Beaker.dataset.commit()
more robust by allowing automatic retries for recoverable errors.
v1.9.1 - 2022-09-15
beaker-py
will issue warnings now when unknown fields are encountered.
v1.9.0 - 2022-09-14
- Added
pool_maxsize
argument toBeaker
client. - Added
canceled_for
andcanceled_code
fields toJob.status
.
Beaker.experiment.(wait_for|as_completed)
won't fail when a job is preempted.
v1.8.1 - 2022-09-09
- Added better debug logging when recoverable errors happen.
- Made
Beaker.dataset.fetch()
more robust to corrupted downloads.
v1.8.0 - 2022-09-08
- Added
Beaker.dataset.get_file()
. Similar tostream_file()
, but returns the entire bytes at once and is more robust since it will retry internally when HTTP and timeout errors occur.
- Made most methods more robust to all recoverable errors that can occur while contacting the Beaker server, such HTTP, timeout, connection, and SSL errors.
v1.7.4 - 2022-09-07
- 500 errors from server treated as recoverable.
v1.7.3 - 2022-09-06
- 429 errors treated as recoverable.
- Fixed an error with
Beaker.experiment.(wait_for|as_completed|follow)
that would hang if an experiment's task was stopped before a job was created.
v1.7.2 - 2022-09-06
- Fixes an issue where a job that was canceled during initialization or provisioning might not get marked as a failure.
v1.7.1 - 2022-08-31
- Fixed bug with
Beaker.(job|experiment).follow()
where final line wasn't returned.
- Removed deprecated
url
option forDataMount
.
v1.7.0 - 2022-08-30
- Added argument
include_timestamps: bool
toBeaker.(job|experiment).follow()
.
- Fixed returning duplicate log lines from
Beaker.(job|experiment).follow()
.
v1.6.9 - 2022-08-01
- Fixed a bug in
Beaker.group.create()
where thedescription
argument would be ignored.
v1.6.8 - 2022-07-27
- Shortened URLs for
dataset
andimage
.
v1.6.7 - 2022-07-20
- Fixed a bug in
Beaker.(job|experiment).follow()
where some final log lines might not be yielded before the method returns.
v1.6.6 - 2022-07-19
- Fixed bug where
Beaker.experiment.delete()
would fail if the result dataset was already deleted.
v1.6.5 - 2022-07-15
- Fixed bug with checking job status. Sometimes a successful job would be marked as failed.
v1.6.4 - 2022-07-14
- Removed outdated field
owner
fromExperiment
,Task
, andDataset
.
v1.6.3 - 2022-07-05
- Handling empty string values in Beaker config YAML files for compatibility with
beaker
CLI. Any empty string values in a Beaker config YAML file are now converted toNone
when theConfig
object is loaded from the file. On the other hand, if you try to explicitly set the value of a field to an empty string when initializing theBeaker
client (e.g.Beaker.from_env(default_org='')
) you'll get aValueError
.
v1.6.2 - 2022-06-27
- Fixed a bug where the
session
parameter toBeaker.from_env()
wasn't actually passed through to the class'__init__()
method.
v1.6.1 - 2022-06-24
- Added support for older versions of Pydantic (back to v1.8.2).
v1.6.0 - 2022-06-17
- Added
Beaker.job.follow()
andBeaker.experiment.follow()
methods for live streaming logs.
- The return type of
Beaker.experiment.tasks()
behaves like both aSequence[Task]
and aMapping[str, Task]
, i.e. you can call__getitem__()
with either anint
,slice
, or astr
for the name of a task.
- Fixed a bug where
Beaker.(job|experiment).(wait_for|as_completed)()
methods could hang if a job was canceled or failed to ever start for some reason.
v1.5.1 - 2022-06-16
Beaker.(job|experiment).(wait_for|as_completed)()
methods now raises a more specificJobTimeoutError
(which inherits fromTimeoutError
) instead of a genericTimeoutError
.
v1.5.0 - 2022-06-16
- Added
since
parameter toBeaker.job.logs()
andBeaker.experiment.logs()
.
v1.4.2 - 2022-06-13
- Fixed bug in loading config where encountering unknown fields would cause an exception.
beaker-py
now gracefully handles this.
v1.4.1 - 2022-06-10
- Added
session
argument toBeaker
client constructors (.from_env()
and__init__()
). You can use this argument to force the client to use a single HTTPSession
for all requests to the server for the life of the client. Using this approach it's not necessary to use theBeaker.session()
context manager, but you should only use this if the client is short-lived.
v1.4.0 - 2022-06-09
- Added
Beaker.session()
context manager for improving performance when calling a series of client methods in a row. - Added
timeout
parameter toBeaker
client initialization methods with a default of5
(seconds). This controls the connect and read timeouts of HTTP requests sent to the Beaker server.
v1.3.0 - 2022-05-31
- Added
Beaker.group.export_experiments()
method.
- Fixed
Job
priority validation.
v1.2.0 - 2022-05-25
- Added
Beaker.dataset.file_info()
method. - Added
.workspace
(WorkspaceRef
) property toDataset
,Image
,Group
, andExperiment
. This is just an alias for the.workspace_ref
property.
Beaker.dataset.stream_file()
now can also take aFileInfo
object as the 2nd argument instead of a file path.Digest
class is now hashable.
v1.1.0 - 2022-05-18
- Added
ExperimentSpec.to_file()
method.
v1.0.0 - 2022-05-13
- Removed deprecated
Beaker.experiment.await_all()
method.
v0.15.3 - 2022-05-10
- Added
Digest
type and changed type ofFileInfo.digest
fromstr
toDigest
.
v0.15.2 - 2022-05-09
- Added
Beaker.experiment.latest_job()
method. - Added
strict: bool
argument toBeaker.(experiment|job).(wait_for|as_completed)
methods. - Added
description
andsource_execution
fields toDataset
. - Added
description
field toExperiment
. - Added
description
field toImage
. - Added
description
field toWorkspace
.
v0.15.1 - 2022-05-06
- Docker images released with major and major+minor version tags in addition to full version tag.
v0.15.0 - 2022-05-06
- Added
ExperimentSpec.with_description()
. - Added
TaskSpec.with_image()
,.with_result()
,.with_context()
,.with_name()
,.with_command()
, and.with_arguments()
.
- Renamed
delete_results_dataset
param todelete_results_datasets
inBeaker.experiment.delete()
. - Renamed
TaskSpec.with_data()
toTaskSpec.with_dataset()
.
- Fixed bug with
Beaker.experiment.delete()
that would lead to aValueError
being raised when the experiment to delete has multiple tasks.
v0.14.1 - 2022-05-05
- Replaced
id: str
field ofClusterUtilization
withcluster: Cluster
.id
is still available as a property for backwards compatibility.
v0.14.0 - 2022-05-04
- Added
description
parameter toBeaker.dataset.create()
,Beaker.image.create()
,Beaker.workspace.create()
. - Added
public
parameter toBeaker.workspace.create()
.
Beaker.workspace.grant_permissions
now takes aPermission
enum type instead of a raw string, but raw strings will still work.
v0.13.2 - 2022-04-29
- The
Beaker.account.name
property is now cached for performance reasons with a TTL cache. - Renamed
Cluster.nodeCost
toCluster.node_cost
for consistency. - Fixed some issues around mutable data models with properties that have different snake case vs lower camel case names.
v0.13.1 - 2022-04-28
Beaker.dataset.fetch()
andBeaker.dataset.stream_file()
now verify the digest of the downloaded bytes against the expected digest by default. AChecksumFailedError
is raised if they don't match. You can skip validating the checksum by passingvalidate_checksum=False
.- Added a progress bar to
Beaker.dataset.stream_file()
. This can be disabled by passingquiet=True
.
v0.13.0 - 2022-04-27
- Added
Beaker.dataset.url()
method. - Added
Beaker.image.url()
method. - Added
Beaker.group.url()
method. - Added
Beaker.workspace.url()
method. - Added
Beaker.cluster.url()
method.
- Improved performance of
Beaker.cluster.filter_available()
by using aThreadPoolExecutor
for concurrency. - Changed behavior of
Beaker.dataset.create()
andBeaker.dataset.sync()
with respect to source files. By default now, source files and directories will be uploading as their given path, instead of just their name. You can still get the old behavior by passingstrip_paths=True
. - Changed default value of
max_workers
toNone
inBeaker.dataset.create()
and.sync()
. When left asNone
, the number of workers will be determined by theThreadPoolExecutor
. - "." now allowed in beaker names.
v0.12.0 - 2022-04-26
- Added FAQ section to the docs.
- All data models are now hashable and faux immutable, and use tuples instead of lists.
- Added
delete_results_dataset: bool = True
parameter toBeaker.experiment.delete()
. - Added
Cluster.is_cloud
andCluster.is_active
properties.
- Changed the return type of
Beaker.cluster.filter_available()
fromList[Cluster]
toList[ClusterUtilization]
. - Renamed and consolidated
NodeSpec
andNodeShape
toNodeResources
.
v0.11.0 - 2022-04-21
- Added
Task.latest_job
property.
- Changed signature of
Beaker.experiment.(logs|metrics|results)
methods: replaced parametertask_name: Optional[str]
withtask: Optional[Union[str, Task]]
.
v0.10.0 - 2022-04-20
- Added
Beaker.image.rename()
method. - Added
Beaker.image.pull()
method. - Added
Beaker.experiment.url()
method.
- Changed return type of
Beaker.cluster.utilization()
toClusterUtilization
.
v0.9.0 - 2022-04-19
- Added
Beaker.group
client and methods. - Added
Beaker.workspace.groups()
method. - Added
Beaker.experiment.resume()
method. - Added
Beaker.experiment.metrics()
method. - Added
Beaker.job.metrics()
method. - Added
Beaker.job.results()
method. - Added
Beaker.job.wait_for()
method. - Added
Beaker.job.as_completed()
method. - Added
Beaker.experiment.as_completed()
method. - Added
Beaker.image.commit()
method. - Added
commit
parameter toBeaker.image.create()
.
- Changed the signature of
Beaker.experiment.results()
. Added thetask_name
parameter and changed the return type toOptional[Dataset]
. - Changed the signature of
Beaker.experiment.logs()
. Removed thejob_id
parameter and added thetask_name
parameter. - Deprecated
Beaker.experiment.await_all()
. UseBeaker.experiment.wait_for()
instead.
- Fixed bug with
Beaker.image.create()
.
v0.8.4 - 2022-04-18
- Fixed issue in data model for
Experiment
.name
andfull_name
are now optional. - Fixed issue in data model for
Image
.name
andfull_name
are now optional.
v0.8.3 - 2022-04-14
- Added
Beaker.workspace.(get|set|grant|revoke)_permissions()
and.set_visibility()
methods.
- Added better support for referencing Beaker items (images, experiments, datasets, etc) by their short name (without workspace, org, or account prefix) when the full name or ID can be assumed.
- Improved error documentation.
v0.8.2 - 2022-04-13
- Implemented
Beaker.workspace.archive()
,.unarchive()
,.rename()
,.move()
, andcreate()
methods. - Implemented
Beaker.job.stop()
andBeaker.job.finalize()
methods. - Added
WorkspaceWriteError
for when you attempt to write to an archived workspace. Before this would just result in anHTTPError
with a 403 status code.
- Allowed using workspace name without organization when
Config.default_org
is set. OtherwiseOrganizationNotSet
error is raised.
v0.8.1 - 2022-04-12
- Implemented
__str__
method onBeaker
client for debugging. - Improved documentation for
ExperimentSpec
,TaskSpec
, and other related data models, and added new convenience constructors such asTaskSpec.new()
.
- Changed default spec version to
v2
.
- Improved experiment spec validation in
Beaker.experiment.create()
to raise more specific error types.
v0.8.0 - 2022-04-12
Beaker.experiment.await_all()
now takes a variable number of experiments and returns a list with the same length and order of the finished experiments.
- Fixed bug where
Beaker.experiment.create()
would fail with anHTTPError
if the image in the spec doesn't exist. Now this will fail withImageNotFound
.
v0.7.0 - 2022-04-11
- Made
org
parameter optional, defaulting toConfig.default_org
.
- Fixed the behavior of some methods that take a
workspace
parameter. Previously, if the workspace didn't exist, it would be silently created. Now aWorkspaceNotFound
error is raised.
v0.6.1 - 2022-04-11
- Added
Beaker.workspace.secrets()
. - Added
Beaker.secret.get()
. - Added
Beaker.secret.read()
. - Added
Beaker.secret.write()
. - Added
Beaker.secret.delete()
.
v0.6.0 - 2022-04-11
- Added
Beaker.experiment.rename()
. - Added
Beaker.experiment.tasks()
. - Added
Beaker.experiment.results()
. - Added
Beaker.experiment.spec()
. - Added
Beaker.workspace.datasets()
. - Added
Beaker.workspace.experiments()
. - Added
Beaker.workspace.images()
. - Added
Beaker.workspace.list()
. - Added
Beaker.account.get()
.
- Removed
Beaker.experiment.list()
. Please useBeaker.workspace.experiments()
instead.
v0.5.5 - 2022-04-10
- Added
callback
parameter toBeaker.experiment.await_all()
.
v0.5.4 - 2022-04-10
- Added
Beaker.dataset.size()
. - Added
Beaker.dataset.rename()
. - Added
ExperimentSpec.from_file()
. - Added
Beaker.cluster.filter_available()
.
v0.5.3 - 2022-04-08
- Added
Beaker.dataset.commit()
. - Added
Beaker.dataset.ls()
. - Added
Beaker.dataset.stream_file()
.
- Changed behavior of
target
parameter inBeaker.dataset.create()
. It now always represents the name of a directory. - Changed the signature of
Beaker.dataset.create()
. It now accepts a variable number of source files or directories.
v0.5.2 - 2022-04-07
- Added
Beaker.experiment.stop()
.
- Fixed bug with
Beaker.experiment.await_all()
.
v0.5.1 - 2022-04-07
- Fixed bug with
Beaker.jobs.list()
.
v0.5.0 - 2022-04-07
- Added
Beaker.node
service client. - Added
Beaker.job.get()
andBeaker.job.list()
methods. - Added
Beaker.cluster.utilization()
.
- Fixed warning about newer version.
- Removed
Execution
data model, since it's deprecated and redundant withJob
.
v0.4.3 - 2022-04-06
- Added
Beaker.account.name
property andBeaker.account.list_organizations()
method. - Added
ExperimentSpec
and all components to the data model. - Added
Beaker.cluster
service client for managing Beaker clusters. - Added
Beaker.organization
service client for managing Beaker organizations.
Beaker.experiment.create()
now accepts either anExperimentSpec
instance or the path to a YAML spec file.
v0.4.2 - 2022-04-04
- Added support for large files with
Beaker.dataset.create()
. - Added
Beaker.dataset.fetch()
.
v0.4.1 - 2022-04-03
- Added
Beaker.experiment.delete()
andBeaker.experiment.await_all()
methods. Beaker.dataset.create
can now handle directories.
v0.4.0 - 2022-04-03
- Breaking changs to
Beaker
client API. Methods for services have been split up into seperate service clients. For example, previously you would create an image withbeaker.create_image()
, whereas now you would dobeaker.image.create()
.
v0.3.9 - 2022-04-01
- Fixed bug in
delete_image()
that would result inImageNotFound
error when using image full name instead of ID.
v0.3.8 - 2022-04-01
- All
Beaker
client methods now return strongly typed data models. - Replaced old progress diplays with prettier diplays from
rich
.
v0.2.8 - 2022-03-31
- Fixed getting experiment from name.
v0.2.7 - 2022-03-31
- Added
Beaker.create_dataset()
method.
v0.2.6 - 2022-01-19
- Added
list_experiments()
method.
v0.2.5 - 2021-12-14
- Fixed bug where
Beaker.from_env()
would fail with missingBEAKER_TOKEN
even if you passed the token to the method.
v0.2.4 - 2021-12-09
- Docker Client is initialized lazily so that some functionality of
Beaker
client can be used on systems without Docker.
v0.2.3 - 2021-12-09
- Fixed crash that could occur when
$HOME
directory doesn't exist.
v0.2.2 - 2021-12-08
v0.2.1 - 2021-12-08
- Fixed bug with
Config.save()
. - Fixed bug with
create_image()
where it would fail if workspace doesn't exist yet.
v0.2.0 - 2021-12-07
- Added many new methods.
- Added
beaker.exceptions
module.
- Several breaking changes to
Beaker
method names.
v0.1.0 - 2021-11-19
- Added
Beaker
client class.