Artifactory¶
- class audbackend.backend.Artifactory(host, repository, *, authentication=None)[source]¶
Backend for Artifactory.
authentication¶
- Artifactory.authentication¶
Object used for authentication, e.g. username, password tuple.
checksum()¶
- Artifactory.checksum(path)¶
MD5 checksum for file on backend.
- Parameters
path (
str
) – path to file on backend- Return type
- Returns
MD5 checksum
- Raises
BackendError – if an error is raised on the backend, e.g.
path
does not existValueError – if
path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
close()¶
- Artifactory.close()¶
Close connection to backend.
- Raises
BackendError – if an error is raised on the backend
copy_file()¶
- Artifactory.copy_file(src_path, dst_path, *, validate=False, verbose=False)¶
Copy file on backend.
If
dst_path
exists and has a different checksum, it is overwritten. Otherwise, the operation is silently skipped.If
validate
is set toTrue
, a final check is performed to assert thatsrc_path
anddst_path
have the same checksum. If it fails,dst_path
is removed and anInterruptedError
is raised.- Parameters
- Raises
BackendError – if an error is raised on the backend
InterruptedError – if validation fails
ValueError – if
src_path
ordst_path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
create()¶
- classmethod Artifactory.create(host, repository, *, authentication=None)¶
Create repository.
Creates
repository
located athost
on the backend.- Parameters
- Raises
BackendError – if an error is raised on the backend, e.g. repository exists already or cannot be created
date()¶
- Artifactory.date(path)¶
Last modification date of file on backend.
If the date cannot be determined, an empty string is returned.
- Parameters
path (
str
) – path to file on backend- Return type
- Returns
date in format
'yyyy-mm-dd'
- Raises
BackendError – if an error is raised on the backend, e.g.
path
does not existValueError – if
path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
delete()¶
- classmethod Artifactory.delete(host, repository, *, authentication=None)¶
Delete repository.
Deletes
repository
located athost
on the backend.- Parameters
- Raises
BackendError – if an error is raised on the backend, e.g. repository does not exist
exists()¶
- Artifactory.exists(path, *, suppress_backend_errors=False)¶
Check if file exists on backend.
- Parameters
- Return type
- Returns
True
if file exists- Raises
BackendError – if
suppress_backend_errors
isFalse
and an error is raised on the backend, e.g. due to a connection timeoutValueError – if
path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
ValueError – if
version
is empty or does not match'[A-Za-z0-9._-]+'
RuntimeError – if backend was not opened
get_archive()¶
- Artifactory.get_archive(src_path, dst_root, *, tmp_root=None, validate=False, verbose=False)¶
Get archive from backend and extract.
The archive type is derived from the extension of
src_path
. Seeaudeer.extract_archive()
for supported extensions.If
dst_root
does not exist, it is created.If
validate
is set toTrue
, a final check is performed to assert thatsrc_path
and the retrieved archive have the same checksum. If it fails, the retrieved archive is removed and anInterruptedError
is raised.- Parameters
src_path (
str
) – path to archive on backenddst_root (
str
) – local destination directorytmp_root (
Optional
[str
]) – directory under which archive is temporarily extracted. Defaults to temporary directory of systemvalidate (
bool
) – verify archive was successfully retrieved from the backendverbose (
bool
) – show debug messages
- Return type
- Returns
extracted files
- Raises
BackendError – if an error is raised on the backend, e.g.
src_path
does not existFileNotFoundError – if
tmp_root
does not existInterruptedError – if validation fails
NotADirectoryError – if
dst_root
is not a directoryPermissionError – if the user lacks write permissions for
dst_path
RuntimeError – if extension of
src_path
is not supported orsrc_path
is a malformed archiveValueError – if
src_path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
get_authentication()¶
- classmethod Artifactory.get_authentication(host)[source]¶
Username and password/access token for given host.
Returns a username and password / API key / access token, which can be used to authenticate with an Artifactory server.
Note, API keys are deprecated and will no longer work with newer versions of Artifactory.
To get the username, password/access token combination, the function looks first for the two environment variables
ARTIFACTORY_USERNAME
andARTIFACTORY_API_KEY
. Otherwise, it tries to extract missing values from a global config file. The default path of the config file (~/.artifactory_python.cfg
) can be overwritten with the environment variableARTIFACTORY_CONFIG_FILE
. If no config file exists or if it does not contain an entry for thehost
, the username is set to'anonymous'
and the password/key to an empty string. In that case thehost
has to support anonymous access, when trying to authenticate.
get_file()¶
- Artifactory.get_file(src_path, dst_path, *, validate=False, verbose=False)¶
Get file from backend.
If the folder of
dst_path
does not exist, it is created.If
dst_path
exists with a different checksum, it is overwritten, Otherwise, the operation is silently skipped.If
validate
is set toTrue
, a final check is performed to assert thatsrc_path
anddst_path
have the same checksum. If it fails,dst_path
is removed and anInterruptedError
is raised.- Parameters
- Return type
- Returns
full path to local file
- Raises
BackendError – if an error is raised on the backend, e.g.
src_path
does not existInterruptedError – if validation fails
IsADirectoryError – if
dst_path
points to an existing folderPermissionError – if the user lacks write permissions for
dst_path
ValueError – if
src_path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
join()¶
- Artifactory.join(path, *paths)¶
Join to (sub-)path on backend.
- Parameters
path (
str
) – first part of path*paths – additional parts of path
- Return type
- Returns
path joined by
Backend.sep
- Raises
ValueError – if
path
contains invalid character or does not start with'/'
, or if joined path contains invalid character
ls()¶
- Artifactory.ls(path='/', *, pattern=None, suppress_backend_errors=False)¶
List files on backend.
Returns a sorted list of tuples with path and version. If a full path (e.g.
/sub/file.ext
) is provided, all versions of the path are returned. If a sub-path (e.g./sub/
) is provided, all files that start with the sub-path are returned. Whenpath
is set to'/'
a (possibly empty) list with all files on the backend is returned.- Parameters
path (
str
) – path or sub-path (if it ends with'/'
) on backendpattern (
Optional
[str
]) – if notNone
, return only files matching the pattern string, seefnmatch.fnmatch()
suppress_backend_errors (
bool
) – if set toTrue
, silently catch errors raised on the backend and return an empty list
- Return type
- Returns
list of tuples (path, version)
- Raises
BackendError – if
suppress_backend_errors
isFalse
and an error is raised on the backend, e.g.path
does not existValueError – if
path
does not start with'/'
or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
move_file()¶
- Artifactory.move_file(src_path, dst_path, *, validate=False, verbose=False)¶
Move file on backend.
If
dst_path
exists and has a different checksum, it is overwritten. Otherwise,src_path
is removed and the operation silently skipped.If
validate
is set toTrue
, a final check is performed to assert thatsrc_path
anddst_path
have the same checksum. If it fails,dst_path
is removed and anInterruptedError
is raised. To ensuresrc_path
still exists in this case it is first copied and only removed when the check has successfully passed.- Parameters
- Raises
BackendError – if an error is raised on the backend
InterruptedError – if validation fails
ValueError – if
src_path
ordst_path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
open()¶
- Artifactory.open()¶
Open connection to backend.
Repository must exist, use
audbackend.backend.Base.create()
to create it. Finally, useaudbackend.backend.Base.close()
to close the connection. Instead of explicitly callingaudbackend.backend.Base.open()
andaudbackend.backend.Base.close()
it is good practice to use a with statement.- Raises
BackendError – if an error is raised on the backend, e.g.
repository
does not exist
owner()¶
- Artifactory.owner(path)¶
Owner of file on backend.
If the owner of the file cannot be determined, an empty string is returned.
- Parameters
path (
str
) – path to file on backend- Return type
- Returns
owner
- Raises
BackendError – if an error is raised on the backend, e.g.
path
does not existValueError – if
path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
path()¶
- Artifactory.path(path)[source]¶
Convert to backend path.
This extends the relative
path
on the backend byhost
andrepository
, and returns anartifactory.ArtifactoryPath
object.- Parameters
path (
str
) – path on backend- Return type
ArtifactoryPath
- Returns
Artifactory path object
put_archive()¶
- Artifactory.put_archive(src_root, dst_path, *, files=None, tmp_root=None, validate=False, verbose=False)¶
Create archive and put on backend.
The archive type is derived from the extension of
dst_path
. Seeaudeer.create_archive()
for supported extensions.The operation is silently skipped, if an archive with the same checksum already exists on the backend.
If
validate
is set toTrue
, a final check is performed to assert that the local archive anddst_path
have the same checksum. If it fails,dst_path
is removed and anInterruptedError
is raised.- Parameters
src_root (
str
) – local root directory where files are located. By default, all files belowsrc_root
will be included into the archive. Usefiles
to select specific filesdst_path (
str
) – path to archive on backendfiles (
Union
[str
,Sequence
[str
],None
]) – file(s) to include into the archive. Must exist withinsrc_root
tmp_root (
Optional
[str
]) – directory under which archive is temporarily created. Defaults to temporary directory of systemvalidate (
bool
) – verify archive was successfully put on the backendverbose (
bool
) – show debug messages
- Raises
BackendError – if an error is raised on the backend
FileNotFoundError – if
src_root
,tmp_root
, or one or morefiles
do not existInterruptedError – if validation fails
NotADirectoryError – if
src_root
is not a folderRuntimeError – if
dst_path
does not end withzip
ortar.gz
or a file infiles
is not belowroot
ValueError – if
dst_path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
put_file()¶
- Artifactory.put_file(src_path, dst_path, *, validate=False, verbose=False)¶
Put file on backend.
The operation is silently skipped, if a file with the same checksum already exists on the backend.
If
validate
is set toTrue
, a final check is performed to assert thatsrc_path
anddst_path
have the same checksum. If it fails,dst_path
is removed and anInterruptedError
is raised.- Parameters
- Raises
BackendError – if an error is raised on the backend
FileNotFoundError – if
src_path
does not existInterruptedError – if validation fails
IsADirectoryError – if
src_path
is a folderValueError – if
dst_path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened
remove_file()¶
- Artifactory.remove_file(path)¶
Remove file from backend.
- Parameters
path (
str
) – path to file on backend- Raises
BackendError – if an error is raised on the backend, e.g.
path
does not existValueError – if
path
does not start with'/'
, ends on'/'
, or does not match'[A-Za-z0-9/._-]+'
RuntimeError – if backend was not opened