a *Na@sddlmZddlmZmZmZmZmZddlZddl m Z ddl m Z ddl m Z ddlmZmZddlmZmZmZmZgd ZGd d d eZGd d d eZGdddeZGdddeeZGdddeeZGdddeeeeZGdddeZGdddeeZdS))Path)AnyCallableOptional TYPE_CHECKINGUnionN)cli) exceptions)utils) RESTManager RESTObject) DeleteMixinGetMixin ListMixinObjectDeleteMixin)GenericPackageGenericPackageManager GroupPackageGroupPackageManagerProjectPackageProjectPackageManagerProjectPackageFileProjectPackageFileManagerc@seZdZdZdS)r package_nameN)__name__ __module__ __qualname__Z_id_attrrru/private/var/folders/js/6pj4vh5d4zd0k6bxv74qrbhr0000gr/T/pip-target-22xwyzbs/lib/python/gitlab/v4/objects/packages.pyrsrc @seZdZdZeZddiZedde e j e e e e e efedddZedde e jde e e eeeeeeed d dZd S)rz)/projects/%(project_id)s/packages/generic project_idid)rpackage_version file_namepath)rr!r"r#returnc Ksz6t|d}|}Wdn1s*0YWn"tyXtd|Yn0|jd|d|d|}|jj|f|dd|} |j|||||| ddd S) aUpload a file as a generic package. Args: package_name (str): The package name. Must follow generic package name regex rules package_version (str): The package version. Must follow semantic version regex rules file_name (str): The name of the file as uploaded in the registry path (str): The path to a local file to upload Raises: GitlabConnectionError: If the server cannot be reached GitlabUploadError: If the file upload fails GitlabUploadError: If ``filepath`` cannot be read Returns: GenericPackage: An object storing the metadata of the uploaded package. rbNzFailed to read package file /T)Z post_datarawmessage)rr!r"r#r()attrs) openreadOSErrorexcGitlabUploadError_computed_pathgitlabZhttp_put_obj_cls) selfrr!r"r#kwargsfZ file_dataurlZ server_datarrrupload!s  * zGenericPackageManager.upload)rr!r"FN)rr!r"streamedaction chunk_sizer3r$c KsZ|jd|d|d|}|jj|f|dd|} trJt| tjsJJt| |||S)aaDownload a generic package. Args: package_name (str): The package name. package_version (str): The package version. file_name (str): The name of the file in the registry streamed (bool): If True the data will be processed by chunks of `chunk_size` and each chunk is passed to `action` for reatment action (callable): Callable responsible of dealing with chunk of data chunk_size (int): Size of each chunk **kwargs: Extra options to send to the server (e.g. sudo) Raises: GitlabAuthenticationError: If authentication is not correct GitlabGetError: If the server failed to perform the request Returns: str: The package content if streamed is False, None otherwise r&T)r8r') r/r0Zhttp_getr isinstancerequestsResponser Zresponse_content) r2rr!r"r8r9r:r3r#resultrrrdownloadUs $zGenericPackageManager.download)FNr7)rrr_pathrr1_from_parent_attrsrZregister_custom_actionr-Z on_http_errorr.strrrr6ZGitlabGetErrorboolrrintrbytesr?rrrrrs@  / rc@s eZdZdS)rNrrrrrrrrsrc@s eZdZdZeZddiZdZdS)rz/groups/%(group_id)s/packagesZgroup_idr )Zexclude_subgroupsorder_bysort package_typerN)rrrr@rr1rA _list_filtersrrrrrsrc@seZdZdZdS)r))Z package_filesrN)rrrZ _managersrrrrrsrc@s eZdZdZeZddiZdZdS)rz!/projects/%(project_id)s/packagesrr )rGrHrIrN)rrrr@rr1rArJrrrrrsrc@s eZdZdS)rNrFrrrrrsrc@seZdZdZeZdddZdS)rz>/projects/%(project_id)s/packages/%(package_id)s/package_filesrr )rZ package_idN)rrrr@rr1rArrrrrsr)pathlibrtypingrrrrrr<r0rr r-r Z gitlab.baser r Z gitlab.mixinsr rrr__all__rrrrrrrrrrrrs     d