# -*- coding: utf-8 -*-
from setuptools import setup

packages = \
['azure', 'azure.gen1', 'azure.gen2']

package_data = \
{'': ['*']}

install_requires = \
['azure-identity>=1.12.0,<2.0',
 'azure-storage-blob>=12.14.1,<13.0',
 'azure-storage-file-datalake>=12.9.1,<13.0.0',
 'joblib>=1.2.0,<2.0.0',
 'pandas>=1.5.2',
 'pyarrow>=15.0.0,<16.0.0',
 'pyyaml>=6.0,<7.0']

setup_kwargs = {
    'name': 'azure-storage-helper',
    'version': '0.3.0',
    'description': '',
    'long_description': '# azure-storage-helper\n\nAzure의 storage 서비스를 사용하기 위한 Python SDK를 좀 더 쉽게 사용할 수 있도록 도와줍니다.  \n현재 지원하고 있는 SDK는 다음 2개 라이브러리이며, Blob container만 지원하고 있습니다.\n\n- Blob Storage (azure-storage-blob)\n- Datalake Storage Gen2 (azure-storage-file-datalake)\n\n## 목차\n\n- [azure-storage-helper](#azure-storage-helper)\n  - [목차](#목차)\n  - [Getting started](#getting-started)\n    - [Installation](#installation)\n    - [Package overview](#package-overview)\n  - [User Guide](#user-guide)\n    - [StorageClient](#storageclient)\n      - [Example](#example)\n      - [Property](#property)\n      - [Method](#method)\n    - [ContainerClient](#containerclient)\n      - [Example](#example-1)\n      - [Property](#property-1)\n      - [Method](#method-1)\n    - [DirectoryClient](#directoryclient)\n      - [Example](#example-2)\n      - [Property](#property-2)\n      - [Method](#method-2)\n    - [BlobClient](#blobclient)\n      - [Example](#example-3)\n      - [Property](#property-3)\n      - [Method](#method-3)\n    - [helper](#helper)\n\n## Getting started\n\n### Installation\n\nazure-storage-helper는 pip 명령어를 통해 PyPI으로부터 설치할 수 있습니다.\n\n```cmd\npip install pandas\n```\n\n### Package overview\n\n본 패키지에서는 4개의 Client를 제공합니다.\n\n> StorageClient > ContainerClient > DirectoryClient(gen2만 해당) > BlobClient\n\n`helper`에서는 BlobClient를 이용하여 파일 업로드/다운로드 등 자주 수행하는 작업을 함수로 제공합니다.\n\n## User Guide\n\n본 가이드는 `gen2`를 기준으로 작성되었습니다.  \n`gen1`은 `DirectoryClient`가 없으며, 일부 기능에 제한이 있을 수 있습니다.\n\n### StorageClient\n\nAzure Storage Account에 대한 클라이언트입니다.  \n다음 두 개의 인자를 이용해 생성할 수 있습니다.\n\n- `account_name` : Storage Account의 이름\n- `account_key` : Storage Account에 접근하기 위한 key\n\n#### Example\n\n```python\nfrom azure.gen2 import StorageClient\n\naccount_name = "account_name"\naccount_key = "account_key"\n\nstorage = StorageClient(account_name=account_name, account_key=account_key)\n```\n\n#### Property\n\n- `client`\n  - Original SDK의 client(azure.storage.filedatalake.DataLakeServiceClient)를 반환합니다. 본 패키지에서 제공하지 않는 기능이 필요한 경우 사용할 수 있습니다.\n  - *gen1에서는 azure.storage.blob.BlobServiceClient*\n\n#### Method\n\n- `containers(name_starts_with: str = None) -> list[ContainerClient]`\n  - 현재 스토리지 계정에 존재하는 컨테이너 리스트를 반환합니다.\n- `get_container(name: str) -> ContainerClient`\n  - 특정 이름의 컨테이너를 반환합니다.\n- `get_directory(path: str) -> DirectoryClient`\n  - 특정 경로의 디렉토리를 반환합니다.\n  - 경로는 `<container>/<directory-path>`로 나타냅니다.\n  - *gen1에서는 제공하지 않습니다.*\n- `get_blob(path: str) -> BlobClient`\n  - 특정 경로의 블랍을 반환합니다.\n  - 경로는 `<container>/<directory-path>/<blob-name>`으로 나타냅니다.\n\n### ContainerClient\n\nContainer에 대한 클라이언트입니다.  \n다음 두 개의 인자를 이용해 생성할 수 있습니다.\n\n- `name` : 컨테이너 이름\n- `storage` : StorageClient\n\n#### Example\n\n```python\nfrom azure.gen2 import ContainerClient\n\ncontainer = ContainerClient("raw", storage)\n\nif not container.exists():\n    container.create()\n```\n\n#### Property\n\n- `name`\n  - 컨테이너 이름\n- `client`\n  - Original SDK의 client(azure.storage.filedatalake.FileSystemClient)를 반환합니다. 본 패키지에서 제공하지 않는 기능이 필요한 경우 사용할 수 있습니다.\n  - *gen1에서는 azure.storage.blob.ContainerClient*\n\n#### Method\n\n- `exists() -> bool`\n  - 컨테이너의 존재 유무를 반환합니다.\n- `create(exist_ok=False, **kwargs) -> None`\n  - 컨테이너를 생성합니다.\n  - `exist_ok`가 `True`이면 컨테이너가 이미 존재할 시 에러가 발생하지 않습니다.\n- `delete(**kwargs) -> None`\n  - 컨테이너를 삭제합니다.\n- `glob(path: str = None, name_starts_with: str = None, recursive: bool = True) -> list[BlobClient]`\n  - 현재 컨테이너에 존재하는 조건에 부합하는 모든 blob을 반환합니다.\n  - `path`는 현재 컨테이너로부터 검색하려는 디렉토리의 상대 경로입니다.\n  - `name_starts_with`는 blob 이름의 접두사입니다.\n  - `recursive`는 재귀적으로 하위 디렉토리에 대한 검색 여부를 나타냅니다.\n  - *gen1에서는 `recursive` 옵션 기능을 제공하지 않습니다.*\n- `get_directory(path: str) -> DirectoryClient`\n  - 현재 컨테이너로부터 특정 경로에 있는 DirectoryClient를 반환합니다.\n  - 경로는 컨테이너 이름을 제외한 현재 컨테이너로부터 디렉토리의 상대 경로입니다.\n  - *gen1에서는 제공하지 않습니다.*\n- `get_blob(path: str) -> BlobClient`\n  - 현재 컨테이너로부터 특정 경로의 BlobClient를 반환합니다.\n  - 경로는 컨테이너 이름을 제외한 현재 컨테이너로부터 blob의 상대 경로입니다.\n\n### DirectoryClient\n\nDirectory에 대한 클라이언트입니다.  \n다음 두 개의 인자를 이용해 생성할 수 있습니다.  \n*※ gen1에서는 제공하지 않습니다.*\n\n- `path` : 컨테이너를 포함하는 디렉토리의 절대 경로\n- `storage` : StorageClient\n\n#### Example\n\n```python\nfrom azure.gen2 import DirectoryClient\n\ndirectory = DirectoryClient("raw/folder/subfolder", storage)\n\nif not directory.exists():\n    directory.create()\n```\n\n#### Property\n\n- `name`\n  - 디렉토리 이름\n- `path`\n  - 컨테이너를 포함하는 디렉토리의 절대 경로\n- `client`\n  - Original SDK의 client(azure.storage.filedatalake.DataLakeDirectoryClient)를 반환합니다. 본 패키지에서 제공하지 않는 기능이 필요한 경우 사용할 수 있습니다.\n- `container`\n  - 현재 디렉토리의 상위 컨테이너에 대한 ContainerClient\n- `parent`\n  - 현재 디렉토리의 상위 클라이언트\n  - DirectoryClient 또는 ContainerClient\n\n#### Method\n\n- `exists() -> bool`\n  - 디렉토리의 존재 유무를 반환합니다.\n- `create(exist_ok=False, **kwargs) -> None`\n  - 디렉토리를 생성합니다.\n  - `exist_ok`가 `True`이면 디렉토리가 이미 존재할 시 에러가 발생하지 않습니다.\n- `delete(**kwargs) -> None`\n  - 디렉토리를 삭제합니다.\n- `glob(name_starts_with: str = None, recursive: bool = True) -> list[BlobClient]`\n  - 현재 디렉토리에 존재하는 조건에 부합하는 모든 blob을 반환합니다.\n  - `name_starts_with`는 blob 이름의 접두사입니다.\n  - `recursive`는 재귀적으로 하위 디렉토리에 대한 검색 여부를 나타냅니다.\n- `get_directory(path: str) -> DirectoryClient`\n  - 현재 디렉토리로부터 특정 경로에 있는 DirectoryClient를 반환합니다.\n  - 경로는 현재 디렉토리로부터 해당 디렉토리의 상대 경로입니다.\n- `get_blob(path: str) -> BlobClient`\n  - 현재 디렉토리로부터 특정 경로의 BlobClient를 반환합니다.\n  - 경로는 현재 디렉토리로부터 blob의 상대 경로입니다.\n\n### BlobClient\n\nBlob에 대한 클라이언트입니다.  \n다음 두 개의 인자를 이용해 생성할 수 있습니다.\n\n- `path` : 컨테이너를 포함하는 디렉토리의 절대 경로\n- `storage` : StorageClient\n\n#### Example\n\n```python\nfrom azure.gen2 import BlobClient\n\nblob = BlobClient("raw/folder/blob.txt", storage)\n\nif not blob.exists():\n    blob.create()\n```\n\n#### Property\n\n- `name`\n  - Blob 이름\n- `path`\n  - 컨테이너를 포함하는 Blob의 절대 경로\n- `client`\n  - Original SDK의 client(azure.storage.filedatalake.DataLakeFileClient)를 반환합니다. 본 패키지에서 제공하지 않는 기능이 필요한 경우 사용할 수 있습니다.\n  - *gen1에서는 azure.storage.blob.BLobClient*\n- `container`\n  - 현재 Blob의 상위 컨테이너에 대한 ContainerClient\n- `parent`\n  - 현재 Blob의 상위 클라이언트\n  - DirectoryClient 또는 ContainerClient\n  - *gen1에서는 제공하지 않습니다.*\n\n#### Method\n\n- `exists() -> bool`\n  - Blob의 존재 유무를 반환합니다.\n- `create(exist_ok=False, **kwargs) -> None`\n  - Blob를 생성합니다.\n  - `exist_ok`가 `True`이면 Blob이 이미 존재할 시 에러가 발생하지 않습니다.\n  - *gen1에서는 제공하지 않습니다.*\n- `delete(**kwargs) -> None`\n  - Blob을 삭제합니다.\n- `upload(bytes: BytesIO, overwrite: bool = True) -> None`\n  - 현재 blob에 바이트 스트림의 내용을 작성합니다.\n- `download() -> BytesIO`\n  - 현재 blob의 내용을 바이트 스트림으로 받아옵니다.\n\n### helper\n\n- `load_yaml(blob: BlobClient) -> dict`\n- `load_csv(blob: BlobClient, **kwargs) -> DataFrame`\n- `load_jobib(blob: BlobClient) -> Any`\n- `upload_to_csv(blob: BlobClient, data: DataFrame, encode: str = "utf-8", **kwargs)`\n- `upload_to_parquet(blob: BlobClient, data: DataFrame, **kwargs)`\n- `upload_file(blob: BlobClient, local_path: str, overwrite: bool = True)`\n- `download_file(blob: BlobClient, local_path: str, file_name: str = None) -> str`\n',
    'author': 'gbhwang',
    'author_email': 'None',
    'maintainer': 'None',
    'maintainer_email': 'None',
    'url': 'None',
    'packages': packages,
    'package_data': package_data,
    'install_requires': install_requires,
    'python_requires': '>=3.8.1,<4.0',
}


setup(**setup_kwargs)
