diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index c361443..a938a18 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,11 +1,12 @@ ---- +______________________________________________________________________ + name: Bug report about: Create a report to help us improve title: "[BUG]" labels: bug assignees: Tlaloc-Es ---- +______________________________________________________________________ **Issue description** Describe the issue you are experiencing in detail. @@ -20,9 +21,10 @@ Explain what you expected to happen when you encountered the issue. Explain what actually happened when you encountered the issue. **Environment** -- Python version: -- Library version: -- Operating system: + +- Python version: +- Library version: +- Operating system: **Additional context** Provide any additional context or information that may be relevant to the issue, such as relevant documentation links, screenshots, or error logs. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 99ecb28..3f1bd80 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,11 +1,12 @@ ---- +______________________________________________________________________ + name: Feature request about: Suggest an idea for this project title: '' labels: enhancement assignees: Tlaloc-Es ---- +______________________________________________________________________ **Feature description** Describe the feature you are requesting in detail. diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 01b18db..1079831 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,11 +1,12 @@ ---- +______________________________________________________________________ + name: Question about: Ask a question title: "[QUESTION]" labels: question assignees: Tlaloc-Es ---- +______________________________________________________________________ **Question** State your question clearly and concisely. diff --git a/.github/ISSUE_TEMPLATE/task.md b/.github/ISSUE_TEMPLATE/task.md index 0de1042..f6fbd87 100644 --- a/.github/ISSUE_TEMPLATE/task.md +++ b/.github/ISSUE_TEMPLATE/task.md @@ -1,33 +1,36 @@ ---- +______________________________________________________________________ + name: Task about: Use this template to track general tasks, such as improving documentation or minor adjustments title: "[TASK]" labels: task assignees: Tlaloc-Es ---- +______________________________________________________________________ -**Task description** +**Task description** Provide a detailed description of the task to be completed. Be clear and concise about the objective. -**Objective** -What is the expected outcome of completing this task? +**Objective** +What is the expected outcome of completing this task? Example: "Complete the missing sections of the project documentation, focusing on the models module." -**Steps to complete** -List the steps required to complete this task, if applicable. -Example: -1. Review the current documentation structure. -2. Add missing sections for the `models` module. -3. Validate the documentation with `mkdocs serve`. +**Steps to complete** +List the steps required to complete this task, if applicable. +Example: + +1. Review the current documentation structure. +1. Add missing sections for the `models` module. +1. Validate the documentation with `mkdocs serve`. + +**Priority** -**Priority** -- [ ] Low -- [ ] Medium -- [ ] High +- [ ] Low +- [ ] Medium +- [ ] High -**Relevant links/files** -Include any links to documentation, code, or files that might help complete this task. +**Relevant links/files** +Include any links to documentation, code, or files that might help complete this task. -**Additional context** +**Additional context** Add any additional information that might be useful, such as dependencies, deadlines, or suggestions. diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index 93ba1ab..393a05f 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -25,4 +25,4 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} - name: Print Version - run: echo "Bumped to version ${{ steps.cz.outputs.version }}" \ No newline at end of file + run: echo "Bumped to version ${{ steps.cz.outputs.version }}" diff --git a/.github/workflows/publish-package.yml b/.github/workflows/publish-package.yml index a92e4ad..7c073c6 100644 --- a/.github/workflows/publish-package.yml +++ b/.github/workflows/publish-package.yml @@ -18,11 +18,11 @@ jobs: submodules: recursive token: ${{ secrets.GITHUB_TOKEN }} - name: "build" - env: + env: POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }} id: build run: | curl -sSL https://install.python-poetry.org | python3 - poetry build poetry config pypi-token.pypi "$POETRY_PYPI_TOKEN_PYPI" - poetry publish \ No newline at end of file + poetry publish diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6343e6e..48d7512 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,23 +18,11 @@ repos: repo: https://github.com/commitizen-tools/commitizen rev: v4.0.0 - - repo: https://github.com/pycqa/isort - rev: 5.13.2 - hooks: - - id: isort - args: ["--profile", "black"] - - - repo: https://github.com/psf/black - rev: 24.10.0 - hooks: - - id: black - language_version: python3.8 - - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.8.1 hooks: - id: ruff - args: [ --fix ] + args: [ --fix] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a2853f2..43c1e90 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -10,4 +10,4 @@ mkdocs: python: install: - - requirements: docs/requirements.txt \ No newline at end of file + - requirements: docs/requirements.txt diff --git a/.ruff.toml b/.ruff.toml new file mode 100644 index 0000000..7278235 --- /dev/null +++ b/.ruff.toml @@ -0,0 +1,64 @@ +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".git-rewrite", + ".hg", + ".mypy_cache", + ".nox", + ".pants.d", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "venv", + "src/interface", + "tests" +] + +# Same as Black. +line-length = 88 +indent-width = 4 + +# Assume Python 3.10 +target-version = "py310" + +[lint.mccabe] +max-complexity = 10 + +[lint] +# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. +select = ["E", "F", "I", "N", "C", "W", "C90", "UP", "N", "PLC", "PLE", "PLR", "PLW"] +ignore = [] + +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] + +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[lint.pydocstyle] +convention = "pep257" + +[format] +# Like Black, use double quotes for strings. +quote-style = "double" + +# Like Black, indent with spaces, rather than tabs. +indent-style = "space" + +# Like Black, respect magic trailing commas. +skip-magic-trailing-comma = false + +# Like Black, automatically detect the appropriate line ending. +line-ending = "auto" diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 18c9147..0fa2967 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -5,7 +5,7 @@ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, +identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community. Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or +- The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an +standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within @@ -121,8 +121,8 @@ https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). -[homepage]: https://www.contributor-covenant.org - For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations. + +[homepage]: https://www.contributor-covenant.org diff --git a/LICENSE.txt b/LICENSE.txt index 150b520..434faf1 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -2,12 +2,12 @@ Fair Source License, version 1.0 Permission is hereby granted to any person or entity that obtains a copy of the aipose software and associated documentation to use, modify, and distribute the software, provided that this license is retained with the software. -For any use of the software by a company or organization that generates more than $10,000 USD in annual revenue, a license fee of $100 USD per year is required. +For any use of the software by a company or organization that generates more than $10,000 USD in annual revenue, a license fee of $100 USD per year is required. -For any use of the software by a company or organization that generates more than $100,000 USD in annual revenue, a license fee of $1,000 USD per year is required. +For any use of the software by a company or organization that generates more than $100,000 USD in annual revenue, a license fee of $1,000 USD per year is required. In addition, if you create a derivative work based on the aipose software, you must pay the original author a royalty of 1% of the gross revenue generated from the sale, distribution, or use of the derivative work. 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. -This license applies to all versions previous and future. \ No newline at end of file +This license applies to all versions previous and future. diff --git a/README.md b/README.md index 11bb3c2..e43156e 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ [![Downloads](https://static.pepy.tech/personalized-badge/aipose?period=month&units=international_system&left_color=grey&right_color=blue&left_text=PyPi%20Downloads)](https://pepy.tech/project/aipose) [![Stars](https://img.shields.io/github/stars/Tlaloc-Es/aipose?color=yellow&style=flat)](https://github.com/Tlaloc-Es/aipose/stargazers) [![Documentation Status](https://readthedocs.org/projects/aipose/badge/?version=latest)](https://aipose.readthedocs.io/en/latest/?badge=latest) +

@@ -12,7 +13,8 @@

Library to use pose estimation in your projects easily. -## Instalation [![PyPI](https://img.shields.io/pypi/v/aipose.svg)](https://pypi.org/project/aipose/) + +## Installation [![PyPI](https://img.shields.io/pypi/v/aipose.svg)](https://pypi.org/project/aipose/) You can install `aipose` from [Pypi](https://pypi.org/project/aipose/). It's going to install the library itself and its prerequisites as well. @@ -49,19 +51,19 @@ You can check the section notebooks in the repository to check the usage of the The examples are: -* [How to draw key points in a video](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/video.ipynb) -* [How to draw key points in a video and store it](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/process_and_save_video.ipynb) -* [How to draw key points in a webcam](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/webcam.ipynb) -* [How to draw key points in a picture](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/plot_keypoints.ipynb) -* [How to capture a frame to apply your business logic](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/custom%20manager.ipynb) -* [How to stop the video stream when anybody raises hands with YOLOv7](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/process_keypoints.ipynb) -* [How to calculate pose similarity with YOLOv7](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/pose_similarity.ipynb) -* [How to turn the pose with YOLOv7](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/pose_similarity.ipynb) -* [How to train a pose classificator](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/Pose_Classificator.ipynb) +- [How to draw key points in a video](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/video.ipynb) +- [How to draw key points in a video and store it](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/process_and_save_video.ipynb) +- [How to draw key points in a webcam](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/webcam.ipynb) +- [How to draw key points in a picture](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/plot_keypoints.ipynb) +- [How to capture a frame to apply your business logic](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/custom%20manager.ipynb) +- [How to stop the video stream when anybody raises hands with YOLOv7](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/process_keypoints.ipynb) +- [How to calculate pose similarity with YOLOv7](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/pose_similarity.ipynb) +- [How to turn the pose with YOLOv7](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/pose_similarity.ipynb) +- [How to train a pose classificator](https://github.com/Tlaloc-Es/aipose/blob/master/notebooks/Pose_Classificator.ipynb) ## References -* https://github.com/RizwanMunawar/yolov7-pose-estimation +- https://github.com/RizwanMunawar/yolov7-pose-estimation ## Support @@ -73,27 +75,26 @@ Or you can try to make a pull request with your improvements to the repo. ## Source of videos and images -* Video by Mikhail Nilov: https://www.pexels.com/video/a-woman-exercising-using-an-exercise-ball-6739975/ +- Video by Mikhail Nilov: https://www.pexels.com/video/a-woman-exercising-using-an-exercise-ball-6739975/ In folder notebooks/poses/ -* [Photo by Roman Davayposmotrim: https://www.pexels.com/photo/woman-wearing-black-sports-bra-reaching-floor-while-standing-35987/](notebooks/poses/pexels-roman-davayposmotrim-35987.jpg) -* [Photo by Vlada Karpovich: https://www.pexels.com/photo/a-woman-doing-yoga-4534689/](pexels-roman-davayposmotrim-35987.jpg) -* [Photo by Lucas Pezeta: https://www.pexels.com/photo/woman-doing-yoga-2121049/](notebooks/poses/pexels-lucas-pezeta-2121049) -* [Photo by Cliff Booth: https://www.pexels.com/photo/photo-of-woman-in-a-yoga-position-4057839/](pnotebooks/poses/exels-cliff-booth-4057839.jpg) -* [Photo by Cliff Booth: https://www.pexels.com/photo/photo-of-woman-meditating-alone-4056969/](notebooks/poses/pexels-cliff-booth-4056969.jpg) -* [Photo by MART PRODUCTION: https://www.pexels.com/photo/photo-of-a-woman-meditating-8032834/](notebooks/poses/pexels-mart-production-8032834.jpg) -* [Photo by Antoni Shkraba: https://www.pexels.com/photo/woman-in-blue-tank-top-and-black-leggings-doing-yoga-4662330/](notebooks/poses/pexels-antoni-shkraba-4662330.jpg) -* [Photo by MART PRODUCTION: https://www.pexels.com/photo/woman-wearing-a-sports-bra-8032742/](notebooks/poses/pexels-mart-production-8032742.jpg) -* [Photo by Elina Fairytale: https://www.pexels.com/photo/woman-in-pink-tank-top-and-blue-leggings-bending-her-body-3823074/](notebooks/poses/pexels-elina-fairytale-3823074.jpg) -* [Photo by Cliff Booth: https://www.pexels.com/photo/photo-of-woman-stretching-her-legs-4057525/](notebooks/poses/pexels-cliff-booth-4057525.jpg) -* [Photo by Mikhail Nilov: https://www.pexels.com/photo/woman-standing-in-a-bending-position-on-a-box-6740089/](notebooks/poses/pexels-mikhail-nilov-6740089.jpg) -* [Photo by cottonbro studio: https://www.pexels.com/photo/woman-in-black-sports-bra-and-black-panty-doing-yoga-4323290/](notebooks/poses/pexels-cottonbro-studio-4323290.jpg) -* [Photo by ArtHouse Studio: https://www.pexels.com/photo/photo-of-man-bending-his-body-4334910/](notebooks/poses/pexels-arthouse-studio-4334910.jpg) -* [Photo by Anna Shvets: https://www.pexels.com/photo/graceful-woman-performing-variation-of-setu-bandha-sarvangasana-yoga-pose-5012071/](notebooks/poses/pexels-anna-shvets-5012071.jpg) -* [Photo by Miriam Alonso: https://www.pexels.com/photo/calm-young-asian-woman-doing-supine-hand-to-big-toe-yoga-asana-7593010/](notebooks/poses/pexels-miriam-alonso-7593010.jpg) -* [Photo by Miriam Alonso: https://www.pexels.com/photo/anonymous-sportswoman-doing-stretching-exercise-during-yoga-session-7593002/](notebooks/poses/pexels-miriam-alonso-7593002.jpg) -* [Photo by Miriam Alonso: https://www.pexels.com/photo/fit-young-asian-woman-preparing-for-handstand-during-yoga-training-at-home-7593004/](notebooks/poses/pexels-miriam-alonso-7593004.jpg) -* [Photo by Anete Lusina: https://www.pexels.com/photo/concentrated-woman-standing-in-tree-pose-on-walkway-4793290/](notebooks/poses/pexels-anete-lusina-4793290.jpg) -* [Photo by Miriam Alonso: https://www.pexels.com/photo/faceless-sportive-woman-stretching-back-near-wall-7592982/](notebooks/poses/pexels-miriam-alonso-7592982.jpg) - +- [Photo by Roman Davayposmotrim: https://www.pexels.com/photo/woman-wearing-black-sports-bra-reaching-floor-while-standing-35987/](notebooks/poses/pexels-roman-davayposmotrim-35987.jpg) +- [Photo by Vlada Karpovich: https://www.pexels.com/photo/a-woman-doing-yoga-4534689/](pexels-roman-davayposmotrim-35987.jpg) +- [Photo by Lucas Pezeta: https://www.pexels.com/photo/woman-doing-yoga-2121049/](notebooks/poses/pexels-lucas-pezeta-2121049) +- [Photo by Cliff Booth: https://www.pexels.com/photo/photo-of-woman-in-a-yoga-position-4057839/](pnotebooks/poses/exels-cliff-booth-4057839.jpg) +- [Photo by Cliff Booth: https://www.pexels.com/photo/photo-of-woman-meditating-alone-4056969/](notebooks/poses/pexels-cliff-booth-4056969.jpg) +- [Photo by MART PRODUCTION: https://www.pexels.com/photo/photo-of-a-woman-meditating-8032834/](notebooks/poses/pexels-mart-production-8032834.jpg) +- [Photo by Antoni Shkraba: https://www.pexels.com/photo/woman-in-blue-tank-top-and-black-leggings-doing-yoga-4662330/](notebooks/poses/pexels-antoni-shkraba-4662330.jpg) +- [Photo by MART PRODUCTION: https://www.pexels.com/photo/woman-wearing-a-sports-bra-8032742/](notebooks/poses/pexels-mart-production-8032742.jpg) +- [Photo by Elina Fairytale: https://www.pexels.com/photo/woman-in-pink-tank-top-and-blue-leggings-bending-her-body-3823074/](notebooks/poses/pexels-elina-fairytale-3823074.jpg) +- [Photo by Cliff Booth: https://www.pexels.com/photo/photo-of-woman-stretching-her-legs-4057525/](notebooks/poses/pexels-cliff-booth-4057525.jpg) +- [Photo by Mikhail Nilov: https://www.pexels.com/photo/woman-standing-in-a-bending-position-on-a-box-6740089/](notebooks/poses/pexels-mikhail-nilov-6740089.jpg) +- [Photo by cottonbro studio: https://www.pexels.com/photo/woman-in-black-sports-bra-and-black-panty-doing-yoga-4323290/](notebooks/poses/pexels-cottonbro-studio-4323290.jpg) +- [Photo by ArtHouse Studio: https://www.pexels.com/photo/photo-of-man-bending-his-body-4334910/](notebooks/poses/pexels-arthouse-studio-4334910.jpg) +- [Photo by Anna Shvets: https://www.pexels.com/photo/graceful-woman-performing-variation-of-setu-bandha-sarvangasana-yoga-pose-5012071/](notebooks/poses/pexels-anna-shvets-5012071.jpg) +- [Photo by Miriam Alonso: https://www.pexels.com/photo/calm-young-asian-woman-doing-supine-hand-to-big-toe-yoga-asana-7593010/](notebooks/poses/pexels-miriam-alonso-7593010.jpg) +- [Photo by Miriam Alonso: https://www.pexels.com/photo/anonymous-sportswoman-doing-stretching-exercise-during-yoga-session-7593002/](notebooks/poses/pexels-miriam-alonso-7593002.jpg) +- [Photo by Miriam Alonso: https://www.pexels.com/photo/fit-young-asian-woman-preparing-for-handstand-during-yoga-training-at-home-7593004/](notebooks/poses/pexels-miriam-alonso-7593004.jpg) +- [Photo by Anete Lusina: https://www.pexels.com/photo/concentrated-woman-standing-in-tree-pose-on-walkway-4793290/](notebooks/poses/pexels-anete-lusina-4793290.jpg) +- [Photo by Miriam Alonso: https://www.pexels.com/photo/faceless-sportive-woman-stretching-back-near-wall-7592982/](notebooks/poses/pexels-miriam-alonso-7592982.jpg) diff --git a/aipose/downloader/__init__.py b/aipose/downloader/__init__.py index 9f27af3..eb7d01c 100644 --- a/aipose/downloader/__init__.py +++ b/aipose/downloader/__init__.py @@ -67,9 +67,10 @@ def _download_file(self, url: str, file_path: Path) -> None: total_size = int(r.headers.get("Content-Length", 0)) - with file_path.open("wb") as f, tqdm( - total=total_size, unit="B", unit_scale=True - ) as pbar: + with ( + file_path.open("wb") as f, + tqdm(total=total_size, unit="B", unit_scale=True) as pbar, + ): for chunk in r.iter_content(chunk_size=8192): f.write(chunk) pbar.update(len(chunk)) diff --git a/docs/frame_manager_availables.md b/docs/frame_manager_availables.md index 1ce2122..f72a1fc 100644 --- a/docs/frame_manager_availables.md +++ b/docs/frame_manager_availables.md @@ -21,14 +21,13 @@ You can use these events to perform various actions such as initializing variabl ```mermaid flowchart TD - + stream_started --> before_read_frame before_read_frame --> frame_received frame_received --> before_read_frame frame_received --> stream_ended ``` -