storage¶
base module¶
Base Storage¶
BaseStorage define all methods needed by storages.
All storage must be inherited from BaseStorage
and implement the following methods
- delete_package
- delete_release
- create_package
- create_release
- get_files
- get_file
Storages classes handle all packages and releases operation outside of the SQL database, this include storage of packages sources, listing of files, removing deleted packages, etc.
-
class
extrapypi.storage.base.
BaseStorage
(**kwargs)¶ Bases:
object
Base class for storage drivers, should be inherited by all sub-classes
In the constructor, kwargs are used to pass settings to the driver. By default it will set an attribute for each item in kwargs
-
NAME
= None¶
-
create_package
(package)¶ Must create a new location for a package
Parameters: package (models.Package) – new package that need an emplacement Returns: True if creation successful, else return False Return type: bool
-
create_release
(package, release_file)¶ Must copy release_file to the correct location
Note
release_file will be a werkzeug.datastructures.FileStorage object
Parameters: - package (models.Package) – package for the release
- release_file (FileStorage) – release file to save
-
delete_package
(package)¶ Must delete an entire package
Parameters: package (models.Package) – package to delete Returns: True if deletion is successful or False Return type: bool
-
delete_release
(package, version)¶ Must delete all files of a package version
Parameters: - models.Package – package to delete
- version (str) – version to delete
Returns: True if deletion is successful or False
Return type: bool
-
get_file
(package, file, release=None)¶ Must return a given file
Returned value will be directly send to Flask.send_file in most cases, be sure that return format is compatible with this function
Parameters: - package (models.Package) – package objet
- file (str) – file name to find
-
get_files
(package, release=None)¶ Must return all files for a given package / release
Parameters: - package (models.Package) – package object for which we want files
- release (models.Release) – for filter files returned based on release
Returns: list of all avaible files for this package or None if an error append
Return type: list
-
get_releases_metadata
()¶ Must return an iterable of tuples containing name of the package and release metadata
Returns: list of all distributions contained in storage Return type: iterable
-
local module¶
LocalStorage¶
Simple local storage that create directories for packages and put releases files in it.
-
class
extrapypi.storage.local.
LocalStorage
(packages_root=None)¶ Bases:
extrapypi.storage.base.BaseStorage
-
NAME
= 'LocalStorage'¶
-
create_package
(package)¶ Create new directory for a given package
-
create_release
(package, release_file)¶ Copy release file inside package directory
If package directory does not exists, it will create it before
-
delete_package
(package)¶ Delete entire package directory
-
delete_release
(package, version)¶ Delete all files matching specified version
-
get_file
(package, file, release=None)¶ Get a single file from filesystem
-
get_files
(package, release=None)¶ Get all files associated to a package
If release is not None, it will filter files on release version, based on a regex
-
get_releases_metadata
()¶ List all releases metadata from PACKAGES_ROOT
Returns: generator Return type: list
-