diff --git a/.github/workflows/lint_python.yaml b/.github/workflows/lint_python.yaml index 7922929..bb2344d 100644 --- a/.github/workflows/lint_python.yaml +++ b/.github/workflows/lint_python.yaml @@ -3,6 +3,7 @@ name: linter on: pull_request: paths: + - .github/workflows/lint_python.yaml - "**.py" - pyproject.toml - requirements-dev.txt @@ -12,6 +13,7 @@ on: branches: - develop paths: + - .github/workflows/lint_python.yaml - "**.py" - pyproject.toml - requirements-dev.txt diff --git a/.github/workflows/publish-pypi.yaml b/.github/workflows/publish-pypi.yaml new file mode 100644 index 0000000..392e8dc --- /dev/null +++ b/.github/workflows/publish-pypi.yaml @@ -0,0 +1,31 @@ +name: Publish package + +on: + release: + types: + - published + +jobs: + pypi: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python 3.8 + uses: actions/setup-python@v4 + with: + python-version: 3.8 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements-dev.txt + pip install -r requirements.txt + + - name: Build + run: | + make build + + - name: Publish Pypi + run: | + twine upload --repository-url https://upload.pypi.org/legacy/ dist/* -u __token__ -p ${{ secrets.PYPI_TOKEN }} --verbose diff --git a/.github/workflows/publish-test-pypi.yaml b/.github/workflows/publish-test-pypi.yaml new file mode 100644 index 0000000..e4cd7c7 --- /dev/null +++ b/.github/workflows/publish-test-pypi.yaml @@ -0,0 +1,46 @@ +name: Publish package + +on: + workflow_dispatch: + inputs: + version: + description: 'Input test-pypi version' + required: true + +jobs: + test-pypi: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python 3.8 + uses: actions/setup-python@v4 + with: + python-version: 3.8 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements-dev.txt + pip install -r requirements.txt + + - name: Update VERSION + run: | + echo '${{ inputs.version }}' > VERSION + + - name: Build + run: | + make build + + - name: Publish Test Pypi + run: | + twine upload --repository-url https://test.pypi.org/legacy/ dist/* -u __token__ -p ${{ secrets.TEST_PYPI_TOKEN }} --verbose + + - uses: peter-evans/create-pull-request@v5 + with: + commit-message: Update VERSION + delete-branch: true + title: Update VERSION (${{ inputs.version }}) + body: link https://test.pypi.org/project/line-notify-sdk/${{ inputs.version }}/ + reviewers: nanato12 + labels: auto generate diff --git a/Makefile b/Makefile index c1825ff..803545b 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,24 @@ init: .PHONY: lint lint: + rm -rf .mypy_cache black . flake8 . isort . mypy . + +.PHONY: build +build: + rm -rf build + rm -rf dist + rm -rf *.egg-info + python setup.py sdist + python setup.py bdist_wheel + +.PHONY: test-pypi +test-pypi: + twine upload --repository pypitest dist/* --verbose + +.PHONY: pypi +pypi: + twine upload --repository pypi dist/* --verbose diff --git a/README.md b/README.md index 0d9e3bc..3d2b753 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,66 @@ -# pyci-lint +# line-notify-sdk -Python GitHub Actions +LINE Notify SDK for Pyrhon -## Create requirements.txt +## pip ```bash -$ pip freeze | grep -e black -e isort -e flake8 -e mypy > requirements.txt +$ pip install line-notify-sdk +``` + +## Usage + +```python +from notify import Notify + +n = Notify(token="YOUR_NOTIFY_TOKEN") +r = n.send_text("hello") + +print(r.json()) +# {'status': 200, 'message': 'ok'} +``` + +![notify](doc/image.png) + +## Methods + +| method | description | +| :- | :- | +| send_image_with_url(text, url) | Send image by specifying the image URL | +| send_image_with_local_path(text, path) | Send images by specifying the local image path | +| send_image(text, image) | Send images using BufferedReader or BytesIO | +| send_text(text) | Send text | +| send(files) | Customization request to notify (use this for anything other than images and text) | +| revoke() | Disable access token and remove notification settings | +| get_status() | Check linkage status | +| get_rate_limit() | Get the number of times the API can be called in an hour | + +## Documentation + + + +## License + +```plain +MIT License + +Copyright (c) 2024 nanato12 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ``` diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..8acdd82 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0.1 diff --git a/doc/image.png b/doc/image.png new file mode 100644 index 0000000..12b8d4a Binary files /dev/null and b/doc/image.png differ diff --git a/notify/__init__.py b/notify/__init__.py index 7bcf336..628ca59 100644 --- a/notify/__init__.py +++ b/notify/__init__.py @@ -58,6 +58,9 @@ def send(self, files: Dict[str, Any]) -> Response: files=files, ) + def revoke(self) -> Response: + return requests.post(f"{self.host}/api/revoke", headers=self.headers) + def get_status(self) -> Status: j: Dict[str, Any] = requests.get( f"{self.host}/api/status", headers=self.headers @@ -65,9 +68,6 @@ def get_status(self) -> Status: j["target_type"] = j.pop("targetType") return Status(**j) - def revoke(self) -> Response: - return requests.post(f"{self.host}/api/revoke", headers=self.headers) - def get_rate_limit(self) -> RateLimit: headers = requests.head( f"{self.host}/api/status", headers=self.headers diff --git a/requirements-dev.txt b/requirements-dev.txt index 5538a77..e918031 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,7 +1,10 @@ -black==24.4.2 -flake8==7.0.0 -isort==5.13.2 -mypy==1.10.0 -mypy-extensions==1.0.0 -python-dotenv==1.0.1 -types-requests==2.32.0.20240523 +black>=24.4.2 +flake8>=7.0.0 +isort>=5.13.2 +mypy>=1.10.0 +mypy-extensions>=1.0.0 +python-dotenv>=1.0.1 +types-requests>=2.32.0.20240523 +setuptools>=70.0.0 +wheel>=0.43.0 +twine>=5.1.0 diff --git a/requirements.txt b/requirements.txt index e0f1d70..128f14a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -pydantic==2.7.1 -requests==2.32.2 +pydantic>=2.7.1 +requests>=2.32.2 diff --git a/setup.cfg b/setup.cfg index ee0bbed..478495a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,36 @@ +[metadata] +name = line-notify-sdk +version = file: VERSION +description = LINE Notify SDK for Pyrhon +author = nanato12 +author_email = admin@nanato12.info +maintainer = nanato12 +maintainer_email = admin@nanato12.info +url = https://github.com/nanato12/line-notify-sdk +license = MIT License +license_file = LICENSE +long_description = file: README.md +long_description_content_type = text/markdown +keywords = line line-notify line-notify-sdk +classifiers = + License :: OSI Approved :: MIT License + Intended Audience :: Developers + Programming Language :: Python :: 3 + Programming Language :: Python :: 3 :: Only + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 + Programming Language :: Python :: 3.12 + Topic :: Software Development + +[options] +python_requires = >=3.8 +packages = find: +include_package_data = true +zip_safe = false +install_requires = file: requirements.txt + [flake8] extend-ignore=E501 exclude=venv/** diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..6068493 --- /dev/null +++ b/setup.py @@ -0,0 +1,3 @@ +from setuptools import setup + +setup()