shihua-cask


Nameshihua-cask JSON
Version 0.1 PyPI version JSON
download
home_pagehttps://github.com/redblue0216/Cask
SummaryCash is a storage management tool, including project packaging and remote storage.
upload_time2023-03-14 10:17:50
maintainer
docs_urlNone
authorshihua
requires_python>=3.9.12
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Cask-存储管理工具

![shields_version](/static/shields_version.svg)    ![shields_license](/static/shields_license.svg)    ![shields_author](/static/shields_author.svg)    ![shiedls_python](/static/shields_python.svg)

![casksymbol](/static/casksymbol.JPG)

## 介绍
+ cask是一个存储管理工具,主要功能包括项目本地打包,远端存储管理两大功能,主要设计仿制wheel文件格式,远端存储采用MinIO技术。


## 安装
cask采用Python开发,得益于Python良好的社区环境,安装支持Pythonic风格的各种管理器。
```
	$ pip install cask-0.1-xxxxxxxxxxxx.whl
```


## 快速指南

### python-sdk使用
+ cask提供python-sdk的存储管理,以下是cask主程脚本示例::

```python
	from cask import create_cask_workspace,generate_cask_package,install_caskpkg,seriallize,deseriallize
	from cask.package import Caskpkg
	from cask.store import CaskStore


	### 创建cask工作空间,生成.cask隐藏文件夹
	# create_cask_workspace()


	### 生成cask包
	# generate_cask_package(caskpkg_name='testcask')


	### 安装cask包,生成.cask隐藏文件夹
	# install_caskpkg(caskpkg_file='testcask.caskpkg')


	### 添加object_file到.cask下
	# tmp_caskpkg = Caskpkg(objects=['logtest'],scripts=['install_script.sh'],configs=['test.yaml'])
	# tmp_caskpkg.commit()


	### 初始化cask存储对象               
	caskstore = CaskStore(endpoint='192.168.1.82:9000')


	### 临时函数
	def testfunc(a):
	    return a + 1

	### 序列化对象到文件
	seriallize(target_object=testfunc,filepath='testfunc.dill')


	### 序列化对象
	testfunc_bytes_obj = seriallize(target_object=testfunc)


	### 上传二进制对象
	result = caskstore.push_object(bucket_name='cask',object_name='testfunc',bytes_obj=testfunc_bytes_obj)
	print(result)


	### 获取二进制对象
	tmp_bytes_obj = caskstore.pull_object(bucket_name='cask',object_name='testfunc')


	### 反序列化对象
	testfunc_bytes_obj_a = deseriallize(target_object=tmp_bytes_obj)
	print(testfunc_bytes_obj_a(1))


	### 上传文件
	result = caskstore.push_file(bucket_name='cask',object_name='testfunc.dill',file_path='testfunc.dill')
	print(result)


	### 获取文件
	caskstore.pull_file(bucket_name='cask',object_name='testfunc.dill',file_path='testfunc.dill')


	### 反序列化对象
	testfunc_bytes_obj_aaa = deseriallize(filepath='testfunc.dill')
	print(testfunc_bytes_obj_aaa(2))
```

### 命令行使用
+ cask提供命令行的存储管理,以下是cask命令行示例:
```bash
	$ caskctl create-workspace

	$ caskctl generate-package --caskpkg_name testcask

	$ caskctl install-package --caskpkg_file testcask.caskpkg

	$ caskctl upload-file --endpoint 192.168.1.82:9000 --bucket_name cask --object_name test.yaml --file_path test.yaml  

	$ caskctl doenload-file --endpoint 192.168.1.82:9000 --bucket_name cask --object_name test.yaml --file_path test.yaml
```

## 设计
+ 仿制wheel格式设计caskpkg打包格式
+ 使用MinIO作为远端存储
+ 支持本地打包和远端存储两大功能

### 技术列表
+ __init__收集基础操作函数
+ __all__暴露指定功能
+ .cask隐藏文件夹
+ yaml配置文件
+ MinIO远端存储
+ Tar压缩包技术


### 设计UML图
以下是设计的UML图:
![caskuml](/static/caskUML.png)




            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/redblue0216/Cask",
    "name": "shihua-cask",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9.12",
    "maintainer_email": "",
    "keywords": "",
    "author": "shihua",
    "author_email": "15021408795@163.com",
    "download_url": "https://files.pythonhosted.org/packages/e5/c9/89f5b974d0d3394a549ced4cbcbf9b2bd20cda4b00648622031cd9a089dd/shihua-cask-0.1.tar.gz",
    "platform": null,
    "description": "# Cask-\u5b58\u50a8\u7ba1\u7406\u5de5\u5177\n\n![shields_version](/static/shields_version.svg)    ![shields_license](/static/shields_license.svg)    ![shields_author](/static/shields_author.svg)    ![shiedls_python](/static/shields_python.svg)\n\n![casksymbol](/static/casksymbol.JPG)\n\n## \u4ecb\u7ecd\n+ cask\u662f\u4e00\u4e2a\u5b58\u50a8\u7ba1\u7406\u5de5\u5177\uff0c\u4e3b\u8981\u529f\u80fd\u5305\u62ec\u9879\u76ee\u672c\u5730\u6253\u5305\uff0c\u8fdc\u7aef\u5b58\u50a8\u7ba1\u7406\u4e24\u5927\u529f\u80fd\uff0c\u4e3b\u8981\u8bbe\u8ba1\u4eff\u5236wheel\u6587\u4ef6\u683c\u5f0f\uff0c\u8fdc\u7aef\u5b58\u50a8\u91c7\u7528MinIO\u6280\u672f\u3002\n\n\n## \u5b89\u88c5\ncask\u91c7\u7528Python\u5f00\u53d1\uff0c\u5f97\u76ca\u4e8ePython\u826f\u597d\u7684\u793e\u533a\u73af\u5883\uff0c\u5b89\u88c5\u652f\u6301Pythonic\u98ce\u683c\u7684\u5404\u79cd\u7ba1\u7406\u5668\u3002\n```\n\t$ pip install cask-0.1-xxxxxxxxxxxx.whl\n```\n\n\n## \u5feb\u901f\u6307\u5357\n\n### python-sdk\u4f7f\u7528\n+ cask\u63d0\u4f9bpython-sdk\u7684\u5b58\u50a8\u7ba1\u7406\uff0c\u4ee5\u4e0b\u662fcask\u4e3b\u7a0b\u811a\u672c\u793a\u4f8b\uff1a\uff1a\n\n```python\n\tfrom cask import create_cask_workspace,generate_cask_package,install_caskpkg,seriallize,deseriallize\n\tfrom cask.package import Caskpkg\n\tfrom cask.store import CaskStore\n\n\n\t### \u521b\u5efacask\u5de5\u4f5c\u7a7a\u95f4\uff0c\u751f\u6210.cask\u9690\u85cf\u6587\u4ef6\u5939\n\t# create_cask_workspace()\n\n\n\t### \u751f\u6210cask\u5305\n\t# generate_cask_package(caskpkg_name='testcask')\n\n\n\t### \u5b89\u88c5cask\u5305\uff0c\u751f\u6210.cask\u9690\u85cf\u6587\u4ef6\u5939\n\t# install_caskpkg(caskpkg_file='testcask.caskpkg')\n\n\n\t### \u6dfb\u52a0object_file\u5230.cask\u4e0b\n\t# tmp_caskpkg = Caskpkg(objects=['logtest'],scripts=['install_script.sh'],configs=['test.yaml'])\n\t# tmp_caskpkg.commit()\n\n\n\t### \u521d\u59cb\u5316cask\u5b58\u50a8\u5bf9\u8c61               \n\tcaskstore = CaskStore(endpoint='192.168.1.82:9000')\n\n\n\t### \u4e34\u65f6\u51fd\u6570\n\tdef testfunc(a):\n\t    return a + 1\n\n\t### \u5e8f\u5217\u5316\u5bf9\u8c61\u5230\u6587\u4ef6\n\tseriallize(target_object=testfunc,filepath='testfunc.dill')\n\n\n\t### \u5e8f\u5217\u5316\u5bf9\u8c61\n\ttestfunc_bytes_obj = seriallize(target_object=testfunc)\n\n\n\t### \u4e0a\u4f20\u4e8c\u8fdb\u5236\u5bf9\u8c61\n\tresult = caskstore.push_object(bucket_name='cask',object_name='testfunc',bytes_obj=testfunc_bytes_obj)\n\tprint(result)\n\n\n\t### \u83b7\u53d6\u4e8c\u8fdb\u5236\u5bf9\u8c61\n\ttmp_bytes_obj = caskstore.pull_object(bucket_name='cask',object_name='testfunc')\n\n\n\t### \u53cd\u5e8f\u5217\u5316\u5bf9\u8c61\n\ttestfunc_bytes_obj_a = deseriallize(target_object=tmp_bytes_obj)\n\tprint(testfunc_bytes_obj_a(1))\n\n\n\t### \u4e0a\u4f20\u6587\u4ef6\n\tresult = caskstore.push_file(bucket_name='cask',object_name='testfunc.dill',file_path='testfunc.dill')\n\tprint(result)\n\n\n\t### \u83b7\u53d6\u6587\u4ef6\n\tcaskstore.pull_file(bucket_name='cask',object_name='testfunc.dill',file_path='testfunc.dill')\n\n\n\t### \u53cd\u5e8f\u5217\u5316\u5bf9\u8c61\n\ttestfunc_bytes_obj_aaa = deseriallize(filepath='testfunc.dill')\n\tprint(testfunc_bytes_obj_aaa(2))\n```\n\n### \u547d\u4ee4\u884c\u4f7f\u7528\n+ cask\u63d0\u4f9b\u547d\u4ee4\u884c\u7684\u5b58\u50a8\u7ba1\u7406\uff0c\u4ee5\u4e0b\u662fcask\u547d\u4ee4\u884c\u793a\u4f8b\uff1a\n```bash\n\t$ caskctl create-workspace\n\n\t$ caskctl generate-package --caskpkg_name testcask\n\n\t$ caskctl install-package --caskpkg_file testcask.caskpkg\n\n\t$ caskctl upload-file --endpoint 192.168.1.82:9000 --bucket_name cask --object_name test.yaml --file_path test.yaml  \n\n\t$ caskctl doenload-file --endpoint 192.168.1.82:9000 --bucket_name cask --object_name test.yaml --file_path test.yaml\n```\n\n## \u8bbe\u8ba1\n+ \u4eff\u5236wheel\u683c\u5f0f\u8bbe\u8ba1caskpkg\u6253\u5305\u683c\u5f0f\n+ \u4f7f\u7528MinIO\u4f5c\u4e3a\u8fdc\u7aef\u5b58\u50a8\n+ \u652f\u6301\u672c\u5730\u6253\u5305\u548c\u8fdc\u7aef\u5b58\u50a8\u4e24\u5927\u529f\u80fd\n\n### \u6280\u672f\u5217\u8868\n+ __init__\u6536\u96c6\u57fa\u7840\u64cd\u4f5c\u51fd\u6570\n+ __all__\u66b4\u9732\u6307\u5b9a\u529f\u80fd\n+ .cask\u9690\u85cf\u6587\u4ef6\u5939\n+ yaml\u914d\u7f6e\u6587\u4ef6\n+ MinIO\u8fdc\u7aef\u5b58\u50a8\n+ Tar\u538b\u7f29\u5305\u6280\u672f\n\n\n### \u8bbe\u8ba1UML\u56fe\n\u4ee5\u4e0b\u662f\u8bbe\u8ba1\u7684UML\u56fe\uff1a\n![caskuml](/static/caskUML.png)\n\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Cash is a storage management tool, including project packaging and remote storage.",
    "version": "0.1",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "910c8b99c72d53a2a969d0a692920db489c0994769a35c4cb0c9402bf5c8e62d",
                "md5": "ac9f3091dfeb9111e8eceff0a8692e10",
                "sha256": "6b397bacd65f72992240192d02ecaffcde231cce5ffa7737090355cc5d595189"
            },
            "downloads": -1,
            "filename": "shihua_cask-0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ac9f3091dfeb9111e8eceff0a8692e10",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9.12",
            "size": 14066,
            "upload_time": "2023-03-14T10:17:47",
            "upload_time_iso_8601": "2023-03-14T10:17:47.908591Z",
            "url": "https://files.pythonhosted.org/packages/91/0c/8b99c72d53a2a969d0a692920db489c0994769a35c4cb0c9402bf5c8e62d/shihua_cask-0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e5c989f5b974d0d3394a549ced4cbcbf9b2bd20cda4b00648622031cd9a089dd",
                "md5": "876ef1f5e5b2cf630d95620356b6088d",
                "sha256": "22456f630dac18779a193515d2fd068879833a59c0e21b7f40f9d091a44a3007"
            },
            "downloads": -1,
            "filename": "shihua-cask-0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "876ef1f5e5b2cf630d95620356b6088d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9.12",
            "size": 11087,
            "upload_time": "2023-03-14T10:17:50",
            "upload_time_iso_8601": "2023-03-14T10:17:50.199745Z",
            "url": "https://files.pythonhosted.org/packages/e5/c9/89f5b974d0d3394a549ced4cbcbf9b2bd20cda4b00648622031cd9a089dd/shihua-cask-0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-03-14 10:17:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "redblue0216",
    "github_project": "Cask",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "shihua-cask"
}
        
Elapsed time: 0.18952s