diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a174322..ffe2ab1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,10 +14,15 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 + with: + python-version: '3.10' + - uses: abatilo/actions-poetry@v4 + with: + poetry-version: 2.1.4 + - name: Install dependencies run: | - python -m pip install poetry==1.8.5 - poetry install --no-dev - - name: Deploy + poetry install --without dev + - name: Deploy run: poetry run make deploy diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index a255faa..4ac26f6 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -17,15 +17,17 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - - - name: Install dependencies and build - if: github.event.action != 'closed' - run: | - python -m pip install poetry==1.8.5 - poetry install --no-dev - poetry run make html + - uses: actions/setup-python@v6 + with: + python-version: '3.10' + - uses: abatilo/actions-poetry@v4 + with: + poetry-version: 2.1.4 + - name: Install dependencies + run: poetry install --without dev + - name: Deploy + run: poetry run make deploy - name: Deploy preview uses: rossjrw/pr-preview-action@v1 with: diff --git a/poetry.lock b/poetry.lock index 7c38a8f..5cb6b17 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. [[package]] name = "alabaster" @@ -6,6 +6,7 @@ version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, @@ -17,6 +18,7 @@ version = "4.2.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, @@ -30,7 +32,7 @@ typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\""] trio = ["trio (>=0.23)"] [[package]] @@ -39,6 +41,7 @@ version = "2.4.1" description = "Annotate AST trees with source code positions" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, @@ -48,8 +51,8 @@ files = [ six = ">=1.12.0" [package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +astroid = ["astroid (>=1,<2) ; python_version < \"3\"", "astroid (>=2,<4) ; python_version >= \"3\""] +test = ["astroid (>=1,<2) ; python_version < \"3\"", "astroid (>=2,<4) ; python_version >= \"3\"", "pytest"] [[package]] name = "babel" @@ -57,6 +60,7 @@ version = "2.14.0" description = "Internationalization utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, @@ -71,6 +75,7 @@ version = "4.12.2" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" +groups = ["main"] files = [ {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, @@ -89,6 +94,7 @@ version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, @@ -100,6 +106,7 @@ version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["main"] files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, @@ -199,10 +206,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = {dev = "sys_platform == \"win32\""} [[package]] name = "decorator" @@ -210,6 +219,7 @@ version = "5.1.1" description = "Decorators for Humans" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, @@ -221,6 +231,7 @@ version = "0.19" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, @@ -232,6 +243,8 @@ version = "1.2.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, @@ -246,13 +259,14 @@ version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] [[package]] name = "furo" @@ -260,6 +274,7 @@ version = "2023.3.27" description = "A clean customisable Sphinx documentation theme." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "furo-2023.3.27-py3-none-any.whl", hash = "sha256:4ab2be254a2d5e52792d0ca793a12c35582dd09897228a6dd47885dabd5c9521"}, {file = "furo-2023.3.27.tar.gz", hash = "sha256:b99e7867a5cc833b2b34d7230631dd6558c7a29f93071fdbb5709634bb33c5a5"}, @@ -277,6 +292,7 @@ version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -294,6 +310,7 @@ version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -305,6 +322,7 @@ version = "0.16.3" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, @@ -326,6 +344,7 @@ version = "0.23.3" description = "The next generation HTTP client." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, @@ -338,7 +357,7 @@ rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} sniffio = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -349,6 +368,7 @@ version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, @@ -360,6 +380,7 @@ version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, @@ -371,6 +392,7 @@ version = "0.13.13" description = "IPython-enabled pdb" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "ipdb-0.13.13-py3-none-any.whl", hash = "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4"}, {file = "ipdb-0.13.13.tar.gz", hash = "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726"}, @@ -387,6 +409,7 @@ version = "8.19.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" +groups = ["dev"] files = [ {file = "ipython-8.19.0-py3-none-any.whl", hash = "sha256:2f55d59370f59d0d2b2212109fe0e6035cfea436b1c0e6150ad2244746272ec5"}, {file = "ipython-8.19.0.tar.gz", hash = "sha256:ac4da4ecf0042fb4e0ce57c60430c2db3c719fa8bdf92f8631d6bd8a5785d1f0"}, @@ -423,6 +446,7 @@ version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, @@ -442,6 +466,7 @@ version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, @@ -459,6 +484,7 @@ version = "2.6.3" description = "Python LiveReload is an awesome tool for web developers" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "livereload-2.6.3-py2.py3-none-any.whl", hash = "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4"}, {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"}, @@ -474,6 +500,7 @@ version = "2.2.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, @@ -498,6 +525,7 @@ version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, @@ -567,6 +595,7 @@ version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"}, {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"}, @@ -581,6 +610,7 @@ version = "0.3.5" description = "Collection of plugins for markdown-it-py" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a"}, {file = "mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e"}, @@ -600,6 +630,7 @@ version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -611,6 +642,7 @@ version = "0.18.1" description = "An extended commonmark compliant parser, with bridges to docutils & sphinx." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "myst-parser-0.18.1.tar.gz", hash = "sha256:79317f4bb2c13053dd6e64f9da1ba1da6cd9c40c8a430c447a7b146a594c246d"}, {file = "myst_parser-0.18.1-py3-none-any.whl", hash = "sha256:61b275b85d9f58aa327f370913ae1bec26ebad372cc99f3ab85c8ec3ee8d9fb8"}, @@ -637,6 +669,7 @@ version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, @@ -648,6 +681,7 @@ version = "0.8.3" description = "A Python Parser" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, @@ -663,6 +697,8 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -677,6 +713,7 @@ version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" +groups = ["dev"] files = [ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, @@ -691,6 +728,8 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" +groups = ["dev"] +markers = "sys_platform != \"win32\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -702,6 +741,7 @@ version = "0.2.2" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, @@ -716,13 +756,14 @@ version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] -plugins = ["importlib-metadata"] +plugins = ["importlib-metadata ; python_version < \"3.8\""] windows-terminal = ["colorama (>=0.4.6)"] [[package]] @@ -731,6 +772,7 @@ version = "2.8.2" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] files = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, @@ -745,6 +787,7 @@ version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, @@ -756,6 +799,7 @@ version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, @@ -812,18 +856,19 @@ files = [ [[package]] name = "requests" -version = "2.32.0" +version = "2.32.5" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, - {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, + {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, + {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" @@ -837,6 +882,7 @@ version = "1.5.0" description = "Validating URI References per RFC 3986" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, @@ -854,6 +900,7 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main", "dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -865,6 +912,7 @@ version = "1.3.0" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, @@ -876,6 +924,7 @@ version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, @@ -887,6 +936,7 @@ version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, @@ -898,6 +948,7 @@ version = "5.3.0" description = "Python documentation generator" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5"}, {file = "sphinx-5.3.0-py3-none-any.whl", hash = "sha256:060ca5c9f7ba57a08a1219e547b269fadf125ae25b06b9fa7f66768efb652d6d"}, @@ -924,7 +975,7 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] -test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] +test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast ; python_version < \"3.8\""] [[package]] name = "sphinx-autobuild" @@ -932,6 +983,7 @@ version = "2021.3.14" description = "Rebuild Sphinx documentation on changes, with live-reload in the browser." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "sphinx-autobuild-2021.3.14.tar.gz", hash = "sha256:de1ca3b66e271d2b5b5140c35034c89e47f263f2cd5db302c9217065f7443f05"}, {file = "sphinx_autobuild-2021.3.14-py3-none-any.whl", hash = "sha256:8fe8cbfdb75db04475232f05187c776f46f6e9e04cacf1e49ce81bdac649ccac"}, @@ -951,6 +1003,7 @@ version = "1.0.0b2" description = "A modern skeleton for Sphinx themes." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinx_basic_ng-1.0.0b2-py3-none-any.whl", hash = "sha256:eb09aedbabfb650607e9b4b68c9d240b90b1e1be221d6ad71d61c52e29f7932b"}, {file = "sphinx_basic_ng-1.0.0b2.tar.gz", hash = "sha256:9ec55a47c90c8c002b5960c57492ec3021f5193cb26cebc2dc4ea226848651c9"}, @@ -968,6 +1021,7 @@ version = "0.1.3" description = "Handles redirects for moved pages in Sphinx documentation projects" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sphinx_reredirects-0.1.3-py3-none-any.whl", hash = "sha256:02c53437c467cf9ed89863eff3addedc01d129624b2f03ab6302518fb77a2c89"}, {file = "sphinx_reredirects-0.1.3.tar.gz", hash = "sha256:56e222d285f76c944fd370f36ad3a1a66103a88b552e97d3d24a622bb9465de8"}, @@ -982,6 +1036,7 @@ version = "1.0.7" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "sphinxcontrib_applehelp-1.0.7-py3-none-any.whl", hash = "sha256:094c4d56209d1734e7d252f6e0b3ccc090bd52ee56807a5d9315b19c122ab15d"}, {file = "sphinxcontrib_applehelp-1.0.7.tar.gz", hash = "sha256:39fdc8d762d33b01a7d8f026a3b7d71563ea3b72787d5f00ad8465bd9d6dfbfa"}, @@ -1000,6 +1055,7 @@ version = "1.0.5" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "sphinxcontrib_devhelp-1.0.5-py3-none-any.whl", hash = "sha256:fe8009aed765188f08fcaadbb3ea0d90ce8ae2d76710b7e29ea7d047177dae2f"}, {file = "sphinxcontrib_devhelp-1.0.5.tar.gz", hash = "sha256:63b41e0d38207ca40ebbeabcf4d8e51f76c03e78cd61abe118cf4435c73d4212"}, @@ -1018,6 +1074,7 @@ version = "2.0.4" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "sphinxcontrib_htmlhelp-2.0.4-py3-none-any.whl", hash = "sha256:8001661c077a73c29beaf4a79968d0726103c5605e27db92b9ebed8bab1359e9"}, {file = "sphinxcontrib_htmlhelp-2.0.4.tar.gz", hash = "sha256:6c26a118a05b76000738429b724a0568dbde5b72391a688577da08f11891092a"}, @@ -1036,6 +1093,7 @@ version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, @@ -1050,6 +1108,7 @@ version = "1.0.6" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "sphinxcontrib_qthelp-1.0.6-py3-none-any.whl", hash = "sha256:bf76886ee7470b934e363da7a954ea2825650013d367728588732c7350f49ea4"}, {file = "sphinxcontrib_qthelp-1.0.6.tar.gz", hash = "sha256:62b9d1a186ab7f5ee3356d906f648cacb7a6bdb94d201ee7adf26db55092982d"}, @@ -1068,6 +1127,7 @@ version = "1.1.9" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "sphinxcontrib_serializinghtml-1.1.9-py3-none-any.whl", hash = "sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1"}, {file = "sphinxcontrib_serializinghtml-1.1.9.tar.gz", hash = "sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"}, @@ -1086,6 +1146,7 @@ version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -1105,6 +1166,8 @@ version = "2.0.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version == \"3.10\"" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -1116,6 +1179,7 @@ version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, @@ -1136,6 +1200,7 @@ version = "5.14.1" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"}, {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"}, @@ -1151,6 +1216,7 @@ version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, @@ -1162,13 +1228,14 @@ version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -1179,12 +1246,13 @@ version = "0.2.12" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"}, {file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"}, ] [metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "f0badd53c3be4b60c2796394235d9b7f268d7e296c04cf13f545166a3143f50b" +lock-version = "2.1" +python-versions = ">=3.10" +content-hash = "1fdf20f4c34181e31d3392bae88b6273821573fe236075fc881fc90d055e3e4a" diff --git a/pyproject.toml b/pyproject.toml index 474df35..409a6eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,26 +1,32 @@ -[tool.poetry] +[project] name = "wiki" -version = "0.1.0" -description = "" -authors = ["Marco Rougeth "] +version = "0.2.0" +requires-python = ">=3.10" +description = "Site da Associação Python Brasil (APyB) disponível em https://apyb.python.org.br/" +authors = [ + {name = "Marco Rougeth", email = "rougeth@users.noreply.github.com"}, + {name = "Maria Fernanda Souza", email = "naanadr@users.noreply.github.com"} +] -[tool.poetry.dependencies] -python = "^3.10" -Sphinx = "^5.1.1" -sphinx-autobuild = "^2021.3.14" -furo = "^2023.03.27" -myst-parser = "^0.18.0" -httpx = "^0.23.0" -ghp-import = "^2.1.0" -pytz = "^2023.2" -sphinx-reredirects = "^0.1.3" +dependencies = [ + "Sphinx (>=5.1.1,<6.0.0)", + "sphinx-autobuild (>=2021.3.14,<2022.0.0)", + "furo (>=2023.03.27,<2024.0.0)", + "myst-parser (>=0.18.0,<0.19.0)", + "httpx (>=0.23.0,<0.24.0)", + "ghp-import (>=2.1.0,<3.0.0)", + "pytz (>=2023.2,<2024.0)", + "sphinx-reredirects (>=0.1.3,<0.2.0)", + "requests (>=2.32.5,<3.0.0)" +] -[tool.poetry.dev-dependencies] +[tool.poetry] +package-mode = false [tool.poetry.group.dev.dependencies] ipython = "^8.15.0" ipdb = "^0.13.13" [build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +requires = ["poetry>=0.12"] +build-backend = "poetry.masonry.api" diff --git a/source/a-associacao/associacao.md b/source/a-associacao/associacao.md index fa2c5a4..1d6becd 100644 --- a/source/a-associacao/associacao.md +++ b/source/a-associacao/associacao.md @@ -32,6 +32,10 @@ Sentados (esquerda para direita): - Marco André - Dornéles Treméa +Pessoa fotógrafa: + +- Rafahela Bazzanella + ## Objetivos e Metas diff --git a/source/a-associacao/estatuto.md b/source/a-associacao/estatuto.md index 636ab81..ed9466f 100644 --- a/source/a-associacao/estatuto.md +++ b/source/a-associacao/estatuto.md @@ -1,5 +1,5 @@ # Estatuto -O estatuto da APyB foi discutido democraticamente em nossa Assembléia de fundação em 2007 e emendado na Assembléia Geral de 2008. +O estatuto da APyB foi criado democraticamente em nossa Assembléia de fundação em 2007, e desde então vem sendo atualizado periodicamente para refletir as necessidades e valores da associação. Ele estabelece as regras e diretrizes que regem o funcionamento da APyB, incluindo a estrutura organizacional, os direitos e deveres dos associados, e os processos para tomada de decisões. -O estatuto oficial encontra-se disponível [aqui](https://github.com/pythonbrasil/estatuto). +Para mais informações sobre o conteúdo do estatuto, acesse o [repositório](https://github.com/apyb/estatuto/tree/master) do mesmo. diff --git a/source/a-associacao/integrantes-da-associacao.md b/source/a-associacao/integrantes-da-associacao.md index d0e7526..3e304ff 100644 --- a/source/a-associacao/integrantes-da-associacao.md +++ b/source/a-associacao/integrantes-da-associacao.md @@ -1,5 +1,31 @@ # Integrantes da diretoria e conselhos +## Gestão 2026-2027 + +### Diretoria + +- Juliana Karoline - Presidente +- Gustavo Alves - Diretor de Marketing +- Lucas Carvalho - Diretor de Tecnologia +- Marcelo Miky - Diretor Financeiro + +### Conselho Deliberativo + +- Ana Dulce +- Talita Rossaria +- Jailson Pereira + +### Conselho Fiscal + +- Mário Sérgio +- Belisa Renata +- Gabriel Bellon + +### Suplentes + +- Vitor Buxbaum +- Luis Flavio Rocha + ## Gestão 2024-2025 ### Diretoria @@ -22,6 +48,7 @@ - Samuel Sampaio ### Suplentes + - Murilo Viana - Luciano Ratamero @@ -47,6 +74,7 @@ - Osvaldo Santana ### Suplentes + - Patrick Mazulo - Osvaldo Santana @@ -72,6 +100,7 @@ - Judite Macedo ### Suplentes + - André Filipe - Leonardo Rochael @@ -97,6 +126,7 @@ - Luis Felipe Miléo ### Suplentes + - Tânia Andrea - Filipe Cifali @@ -123,5 +153,6 @@ - Igor dos Santos Silva ### Suplentes + - Paula Grangeiro - Annanda Sousa diff --git a/source/apyb/images/premio/pybr2024.png b/source/apyb/images/premio/pybr2024.png index ca798ac..38786f4 100644 Binary files a/source/apyb/images/premio/pybr2024.png and b/source/apyb/images/premio/pybr2024.png differ diff --git a/source/apyb/images/premio/pybr2025.png b/source/apyb/images/premio/pybr2025.png new file mode 100644 index 0000000..dda76de Binary files /dev/null and b/source/apyb/images/premio/pybr2025.png differ diff --git a/source/apyb/premio-dorneles-tremea-jean-ferri.md b/source/apyb/premio-dorneles-tremea-jean-ferri.md index df1faa7..f0ee0d8 100644 --- a/source/apyb/premio-dorneles-tremea-jean-ferri.md +++ b/source/apyb/premio-dorneles-tremea-jean-ferri.md @@ -25,6 +25,14 @@ A entrega do Prêmio Dorneles Treméa|Jean Ferri é realizada anualmente durante ## Homenageados +### 2025 - Python Brasil 2025 (São Paulo - SP) + + * Adorilson Bezerra + * Rafahela Bazzanella + * Thais Viana + +![Premiadas na Python Brasil 2025](images/premio/pybr2025.png) + ### 2024 - Python Brasil 2024 (Rio de Janeiro - RJ) * Juliany Raiol diff --git a/source/associados/assembleia/2018.md b/source/associados/assembleia/2018.md deleted file mode 100644 index 0ab319a..0000000 --- a/source/associados/assembleia/2018.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -hide-toc: true ---- - -# Assembleia Geral 2018 - -A Associação Python Brasil, através de seu Conselho Deliberativo, vem convidar os seus associados e interessados a participar da sua Assembleia Geral que acontecerá durante a décima quarta edição do encontro brasileiro da comunidade Python, [PythonBrasil[14]](https://2018.pythonbrasil.org.br/). - -## Da Pauta - -Esta assembleia visa apresentar e discutir os seguintes tópicos: -- A apresentação da situação atual da Associação Python Brasil; -- Definição de ações para o futuro; -- Votação da proposta de alteração do estatuto; -- Apresentação e votação para escolha da cidade para a Python Brasil[16] em 2020. - -## Escolha da cidade sede - -Quer sediar a Python Brasil[16] em 2020? Envie sua proposta até 13 de Outubro [utilizando este formulário](https://goo.gl/forms/5y4oKYVtHuJjFB4N2). Inscrições serão aceitas até as 23:59 deste dia. - -## Qualificação dos Participantes - -Estão qualificadas a participar da Assembleia Geral todas as pessoas associadas em situação regular conforme definido nos artigos 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). - -## Processo de Filiação - -A filiação pode ser feita através do site da associação e está aberta a todas as pessoas interessadas. Para se associar basta preencher o formulário de inscrição e efetuar o pagamento da anuidade. - -As modalidades de associação disponíveis e os respectivos valores de anuidade são: - -- Profissional: R$ 64,00 -- Estudante: R$ 32,00 - -Terão direito a voto apenas os Associados Plenos e Associados Efetivos (modalidade de associação profissional) conforme descrito no artigos 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). - -## Data e Hora - -Sábado, dia 20 de outubro de 2018, 14:00. - -## Local da Assembleia - -``` -PythonBrasil[14] - Hotel Holiday Inn -Av. Sen. Salgado Filho, 1906 -Natal / Rio Grande do Norte (RN), Brasil. -``` diff --git a/source/associados/assembleia/2019.md b/source/associados/assembleia/2019.md deleted file mode 100644 index 92e4390..0000000 --- a/source/associados/assembleia/2019.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -hide-toc: true ---- - -# Assembleia Geral 2019 - -A Associação Python Brasil, através de seu Conselho Deliberativo, vem convidar os seus associados e interessados a participar da sua Assembleia Geral que acontecerá durante a décima quinta edição do encontro brasileiro da comunidade Python, [Python Brasil 2019](https://2019.pythonbrasil.org.br/). - -## Da Pauta - -Esta assembleia visa apresentar e discutir os seguintes tópicos: - -* A apresentação da situação atual da Associação Python Brasil; -* Definição de ações para o futuro; -* Apresentação e votação para escolha da cidade para a PythonBrasil[17] em 2021. -* Votação para nova Diretoria. - -## Escolha da cidade sede - -Quer sediar a Python Brasil[17] em 2021? Envie sua proposta até 24 de Outubro [utilizando este formulário](https://forms.gle/8NEroTvpm75qZW5Y7). Inscrições serão aceitas até as 23:59 deste dia. - -## Qualificação dos Participantes - -Estão qualificadas a participar da Assembleia Geral todas as pessoas associadas em situação regular conforme definido nos artigos 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). - -## Processo de Filiação - -A filiação pode ser feita através do site da associação e está aberta a todas as pessoas interessadas. Para se associar basta preencher o formulário de inscrição e efetuar o pagamento da anuidade. - -As modalidades de associação disponíveis e os respectivos valores de anuidade são: - -- Profissional: R$ 64,00 -- Estudante: R$ 32,00 - -Terão direito a voto apenas os Associados Plenos e Associados Efetivos (modalidade de associação profissional) conforme descrito no artigos 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). - -## Data e Hora - -Domingo, dia 27 de outubro de 2019, das 10h15 até 12h30. - -## Local da Assembleia - -``` -Python Brasil 2019 - Centro de Convenções de Ribeirão Preto CCRP -Rua Bernardino de Campos, 999 -Ribeirão Preto / São Paulo (SP), Brasil. -``` diff --git a/source/associados/assembleia/2021.md b/source/associados/assembleia/2021.md deleted file mode 100644 index 1f1ea0f..0000000 --- a/source/associados/assembleia/2021.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -hide-toc: true ---- - -# Assembleia Geral 2021 - -A Associação Python Brasil, através de seu Conselho Deliberativo, vem convidar os seus associados e interessados a participar da sua Assembleia Geral que acontecerá durante a décima quinta edição do encontro brasileiro da comunidade Python, [Python Brasil 2021](https://2021.pythonbrasil.org.br/). - -## Da Pauta - -Esta assembleia visa apresentar e discutir os seguintes tópicos: - -* A apresentação da situação atual da Associação Python Brasil; -* Definição de ações para o futuro; -* Votação para nova Diretoria. - -## Qualificação dos Participantes - -Estão qualificadas a participar da Assembleia Geral todas as pessoas associadas em situação regular conforme definido nos artigos 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). - -## Processo de Filiação - -A filiação pode ser feita através do site da associação e está aberta a todas as pessoas interessadas. Para se associar basta preencher o formulário de inscrição e efetuar o pagamento da anuidade. - -As modalidades de associação disponíveis e os respectivos valores de anuidade são: - -- Profissional: R$ 64,00 -- Estudante: R$ 32,00 - -Terão direito a voto apenas os Associados Plenos e Associados Efetivos (modalidade de associação profissional) conforme descrito no artigos 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). - -## Data e Hora - -Domingo, dia 14 de novembro de 2021, das 10h15 até 12h30. - -## Local da Assembleia - -- Server do [Discord](https://discord.gg/6cb6xgsk96) da Python Brasil 2021 diff --git a/source/associados/assembleia/2022.md b/source/associados/assembleia/2022.md deleted file mode 100644 index 440f5b3..0000000 --- a/source/associados/assembleia/2022.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -hide-toc: true ---- - -# Assembleia Geral 2022 - -- Local: Manaus, Amazonas -- Data: 23 de outubro de 2022 -- Links: - - [apyb/comunidade/discussions/43](https://github.com/apyb/comunidade/discussions/43) - ---- - -Prezadas/os/es anunciamos a próxima Assembleia da Python Brasil, que será realizada no dia 23/10 às 13h no Centro de Convenções Vasco Vasques em Manaus-AM, durante a Python Brasil 2022. - -Lembramos de que para participar da Assembleia precisa associar-se à APyB (mais informações neste site: [https://python.org.br/apyb/#associar](https://python.org.br/apyb/#associar)) e poderá participar das discussões na Assembleia. - -Nessa reunião, escolheremos a cidade-sede da Python Brasil 2024, apresentaremos novas demandas da comunidade e outras demandas. - -Contamos com a sua presença e venha contribuir com a comunidade Python brasileira! - ---- - - -## Pauta - -- [Ana Cecília Vieira] Fundo para Inclusão - - Apresentação dos critérios - - Impacto na Python Brasil (comissão organizadora) - - 51 pessoas beneficiadas - - Como garantir a execução do Fundo para Inclusão para os próximos anos? - -- [Juliana Barros Lima] Ter uma consultoria jurídica dedicada para ajudar na organização de eventos - -- [Kadidja Valéria] Sugiro uma pauta: análise do formato híbrido para a Asembleia Associação Python Brasil 2024 para a participação de tod@s associad@s. - -- [Juliana Barros Lima] Uso da linguagem neutra nas comunicações oficiais na APyB - -- [Fabio C. Barrionuevo] [Grupo do Facebook](https://www.facebook.com/groups/python.brasil/?mibextid=6NoCDW), o que fazer com ele. O grupo não é da APyB (foi criado por terceiros), contudo ele pode impactar em como Python e "comunidade" é visto no brasil e nova geração. Alguns membros da APyB são administradores dele, contudo ele não possui moderadores frequentemente ativos e proativos. Em minha experiencia pessoal é difícil e dispendioso de moderar. Muitas contas fake, offtopic, pirataria, acidez e etc. - - Sobre esse ponto e add +1: Talvez seja o momento da APyB ter uma cadeira de "Pessoa/Gerente/qq nome de cargo" da Comunidade, ligada a diretoria de comunicação, mas focada só em mapear e entender o que é gerenciado pela APyB e o que não é - -- [Mari Bedran] Alteração do estatuto para que membros estudantes tenham os mesmos direitos de outros membros - -- Ideia de 2 PyBR ao ano: um em um semestre, online, e outro em outro semestre presencial. O objetivo do evento online seria com o objetivo de levantar fundos para a Python Brasil - ---- - -## Votação Cidade Sede - -**Candidaturas:** - -- Rio de Janeiro: 46 votos a favor - Candidatura única com a indicação de Bianca Rosa para Big Kahuna diff --git a/source/associados/assembleia/2023.md b/source/associados/assembleia/2023.md deleted file mode 100644 index a5681eb..0000000 --- a/source/associados/assembleia/2023.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -hide-toc: true ---- - -# Assembleia Geral 2023 - -A Associação Python Brasil vem convidar associadas/os/es a participar de sua Assembleia Geral que acontecerá durante a décima nona edição do encontro brasileiro da comunidade Python, [Python Brasil 2023](https://2023.pythonbrasil.org.br/). - -## Pauta - -Essa assembleia visa apresentar e discutir os seguintes tópicos: - -* Eleição da cidade-sede da Python Brasil 2025; -* Votação da nova diretoria; -* Prestação de contas da APyB; -* Novas demandas da comunidade. - -## Data e Hora - -Sábado, dia 04 de novembro de 2023, das 13h30 até 16h. - -## Endereço - -Faculdade Anhanguera - -Av. Alexandre Rizzo, 505 - Sala 01 - Desvio Rizzo, Caxias do Sul - RS - 95110-000 - -## Qualificação dos participantes - -Estão qualificados a participar da Assembleia Geral todas pessoas associadas em situação regular conforme definido nos artigo 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). - -Pessoas não associadas ou em situação irregular estão convidadas a participar da assembleia como ouvintes. - -## Processo de filiação - -A filiação pode ser feita através do [site da associação](http://associados.python.org.br) e está aberta a todas as pessoas interessadas. Para se associar basta preencher o formulário de inscrição e efetuar o pagamento da anuidade. - -As modalidades de associação disponíveis e os respectivos valores de anuidade são: - -- Profissional: R$ 64,00 -- Estudante: R$ 32,00 - -Terão direito a voto apenas os Associados Plenos e Associados Efetivos (modalidade de associação profissional) conforme descrito no artigos 4º, 5º e 6º do [Estatuto da Associação](https://python.org.br/estatuto/). diff --git a/source/associados/assembleia/index.md b/source/associados/assembleia/index.md index f4e0845..2373a80 100644 --- a/source/associados/assembleia/index.md +++ b/source/associados/assembleia/index.md @@ -12,7 +12,6 @@ Além das Assembleias Gerais ordinárias que acontecem anualmente, a associaçã ## Atas das Assembleias -```{toctree} -:maxdepth: 1 -2022 -``` +Por motivos de privacidade e segurança, as atas das Assembleias não estão disponíveis publicamente. + +Para ter acesso às atas das Assembleias Gerais e Extraordinárias realizadas pela Associação Python Brasil, por favor, entre em contato conosco através do e-mail `diretoria@ (python.org.br)`. Teremos o prazer em fornecer as informações necessárias. diff --git a/source/associados/guias/como-organizar-eventos.md b/source/associados/guias/como-organizar-eventos.md index af21202..6c5f9db 100644 --- a/source/associados/guias/como-organizar-eventos.md +++ b/source/associados/guias/como-organizar-eventos.md @@ -4,6 +4,12 @@ Este manual é um documento vivo que tem como objetivos (1) explicar como você Você pode contribuir diretamente para a evolução do manual enviando suas dúvidas, sugestões e observações para `APyB-condir@googlegroups.com` ou `diretoria@python.org.br`. +```{note} +No final de 2024 a diretoria vigente da APyB fez uma **reunião de onboarding** com alguns Big Kahunas, e você pode assistir a gravação dessa reunião para entender melhor como funciona o processo de organização de eventos com o apoio da APyB. + +[Reunião de Onboarding - Organização de Eventos com a APyB](https://drive.google.com/file/d/11guz90FWsRVVQdlqa6XZcwvxs1lM8EbM/view?usp=sharing) +``` + ## O que é preciso para usar a infraestrutura da APyB? Os critérios para usar a infraestrutura da APyB são simples: @@ -235,4 +241,4 @@ Neste caso, a APyB fica fora do processo e você deverá gerenciar estes recurso Se você preferir receber a receita das inscrições diretamente, não será possível passar estes recursos pela conta bancária da APyB, nem solicitar que a APyB emita notas fiscais referentes às inscrições. ::: -Isso não afeta os patrocínios. \ No newline at end of file +Isso não afeta os patrocínios. diff --git a/source/conf.py b/source/conf.py index 8c91f99..3ae07d8 100644 --- a/source/conf.py +++ b/source/conf.py @@ -24,7 +24,7 @@ # -- Project information ----------------------------------------------------- project = "APyB" -copyright = "APyB, 2024" +copyright = "APyB, 2026" author = "Associação Python Brasil" html_baseurl = "https://apyb.python.org.br" diff --git a/source/index.md b/source/index.md index aabb281..76b3c80 100644 --- a/source/index.md +++ b/source/index.md @@ -22,6 +22,9 @@ Boas vindas ao nosso site! Aqui, você encontrará informações sobre a associa - [Domínios mantidos pela APyB](/infraestrutura/domínios.md) - [Repositórios ativos ativos nas organizações /apyb e /pythonbrasil](/infraestrutura/repositórios.md) - [Como utilizar o cofre de senhas da APyB?](/infraestrutura/cofre.md) +- [Como gerenciar pagamentos com Stripe?](/infraestrutura/stripe.md) +- [Como acessar o backup dos dados dos associados?](/infraestrutura/backup-associados.md) +- [Como realizar a Assembleia Online?](/infraestrutura/assembleia.md) ```{toctree} :maxdepth: 1 @@ -56,8 +59,10 @@ pythonbrasil/cdc :caption: Infraestrutura :hidden: +infraestrutura/assembleia +infraestrutura/backup-associados +infraestrutura/cofre infraestrutura/domínios infraestrutura/repositórios -infraestrutura/cofre -infraestrutura/backup-associados -``` \ No newline at end of file +infraestrutura/stripe +``` diff --git a/source/infraestrutura/assembleia.md b/source/infraestrutura/assembleia.md new file mode 100644 index 0000000..038742d --- /dev/null +++ b/source/infraestrutura/assembleia.md @@ -0,0 +1,58 @@ +# Assembleia + +## Divulgação da assembleia + +De acordo com o nosso estatuto, a chamada para à assembleia deverá ocorrer com pelo menos 30 dias de antecedência, mediante correspondência online aos associados ([Capítulo 3, artigo 10](https://github.com/apyb/estatuto/tree/master?tab=readme-ov-file#cap%C3%ADtulo-iii---da-assembleia)). + +Em alguns anos viemos utilizando o [GitHub Discussion](https://github.com/apyb/comunidade) que está integrado a nossa lista de e-mail `apyb-associados (@googlegroups.com)`, e posts nas redes sociais. No entanto muitos associados não acompanham as discussões do fórum, ou não entram na lista de e-mail, ou não olham as redes sociais. Por isso, mesmo que uma diretória escolha utilizar alguma ferramenta de disparo de e-mail, é recomendado sempre utilizar mais de uma meio de comunicação, visto que nossos associados possuem um perfil muito diverso. + +## Assembleia Online + +No nosso estatuto está previsto que as assembleias gerais podem ser realizadas de forma online, permitindo a participação remota dos associados ([Capítulo 3, artigo 12](https://github.com/apyb/estatuto/blob/master/README.rst#cap%C3%ADtulo-iii---da-assembleia)). No entanto, não é permitido que a assembleia ocorra de forma hibrida (presencial e online ao mesmo tempo), pois isso poderia gerar desigualdade entre os participantes, além de dificultar o gerenciamento da mesma, e não estar previsto no estatuto. + +Nessa página você encontrará alguns aprendizados que foram adquiridos ao longo das assembleias online realizadas pela APyB, bem como sugestões de ferramentas que podem ser utilizadas para facilitar o processo. + +### Ferramentas recomendadas + +#### Plataforma de videoconferência + +Para a realização da assembleia online, é importante escolher uma plataforma de videoconferência que atenda às necessidades do grupo. Como a APyB possui o plano non-profit do [Google Workspace](https://www.google.com/nonprofits/offerings/workspace/), utilizamos o [Google Meet](https://meet.google.com/) para as nossas assembleias, visto que ele permite a participação de até 150 pessoas, além de ser integrado ao Google Calendar, facilitando o agendamento e o envio de convites. + +##### Funcionalidades interessantes + +Ao longo de algumas assembleias percebemos que o Google Meet oferece algumas funcionalidades muito úteis para o gerenciamento de uma assembleia online, como por exemplo: +- Limitar quando as pessoas podem encontrar na sala de reunião; +- Configurar quem pode abrir o microfone; +- Criar enquentes para realizar votações; +- Seção de perguntas/respostas que permitem centralizar as dúvidas dos participantes. + +#### Gerenciamento de presença + +Para que a assembleia tenha validade, precisamos saber quantas pessoas associadas e não associadas estavam presentes, além de coletar a assinatura delas. Uma das formas que o cartório considera válido é a lista de presença com assinatura digital. + +Para isso, utilizamos o [Google Forms](https://docs.google.com/forms/) junto com o [Autentique](https://www.autentique.com.br/). O forms serve para coletar os e-mails dos participantes, enquanto que o Autentique serve como ferramenta para coletar as assinaturas digitais. Reforçamos que o uso do Autentique é fundamental, visto que ele é uma ferramenta reconhecida juridicamente para a coleta de assinaturas digitais no Brasil. + +Abaixo você encontra o passo a passo de como fazer isso: + +1. Criar uma nova cópia do nosso formulário de presença (`Assinatura participação`) que se encontra no driver da APyB; +2. Editar o formulário para adicionar as informações da assembleia (data, hora, pauta, etc); +3. Crie um novo documento no Autentique da APyB (*informações de acesso se encontram no cofre*), referente a assembleia que irá ocorrer e configure o documento para não receber novas assinaturas após às 23:59 do dia da assembleia; +4. Compartilhar o link do formulário no chat da reunião, pedindo para que todos os participantes informem os seus dados (e-mail, nome completo, CPF, etc); +5. Ao longo da assembleia, ou ao final da mesma, você deve começar a adicionar os e-mails informados no formulário na lista de remetentes do Autentique. + +```{danger} As assinaturas digitais precisam ser coletadas via Autentique entre **00:01 até 23:59 do dia que a assembleia ocorrer**, para que tenham validade jurídica. Também não esqueça de lembrar sempre aos participantes da assembleia a importância de assinar a ata de presença que será enviada via Autentique, pois **sem a assinatura a pessoa não poderá ser considerada presente na assembleia**. +``` + +## Ata da assembleia + +No driver da APyB, temos um modelo de ata de assembleia que pode ser utilizado para registrar as decisões tomadas durante a reunião. É importante que a ata seja clara e objetiva, contendo todas as informações relevantes, como data, hora, local (no caso online, informar a plataforma utilizada), participantes, pauta discutida, decisões tomadas e responsáveis por cada ação. + +```{important} +Qualquer dúvida que você tenha durante esse processo, por favor entre em contato com o escritório de contabilidade contratado pela APyB, que eles poderão te auxiliar. +``` + +Essa ata deverá ser assinada via GovBr, ou manualmente com reconhecimento de firma, pela pessoa presidente da mesa e pelas pessoas secretárias da assembleia, conforme previsto no nosso estatuto ([Capítulo 3, artigo 12](https://github.com/apyb/estatuto/blob/master/README.rst#cap%C3%ADtulo-iii---da-assembleia)). + +```{attention} +Todo o material referente à assembleia (ata, lista de presença, gravação da reunião, etc) deve ser armazenado em um local seguro e de fácil acesso para futuras consultas. Recomendamos que esse material seja salvo no driver da APyB, em uma pasta específica para assembleias. +``` diff --git a/source/infraestrutura/backup-associados.md b/source/infraestrutura/backup-associados.md index e1a456c..9f9eb3a 100644 --- a/source/infraestrutura/backup-associados.md +++ b/source/infraestrutura/backup-associados.md @@ -98,3 +98,35 @@ pg_restore \ > **Se quiser restaurar só uma tabela**: liste o conteúdo (`pg_restore -l backup_banco_associados.dump > toc.list`), edite a lista e use `pg_restore -L toc.list ...`. --- + +## O que você pode fazer com o banco restaurado? + +### Consultar quando uma pessoa associada entrou na APyB + +:::{important} +Essa consulta só é válida se a pessoa associada tiver feito ao menos um pagamento registrado no sistema legado da APyB. Caso contrário, deverá ser consultado o sistema atual de associados via Stripe. +::: + +Rotineiramente recebemos pedidos de pessoas associadas solicitando um termo que comprove que elas são asssociadas, e nesse termo precisamos informar a data em que a pessoa se associou. Para isso, você pode rodar a seguinte query SQL no banco restaurado, substituindo o placeholder `[USER-EMAIL]` pelo email da pessoa associada: + +```sql +SELECT + MIN(tb_transaction."date") AS first_payment +FROM ( + SELECT id, email + FROM public.auth_user + WHERE email = '[USER-EMAIL]' -- substitua pelo email da pessoa associada +) AS tb_users +LEFT JOIN ( + SELECT id AS member_id, user_id, cpf + FROM public.members_member +) AS tb_members ON tb_users.id = tb_members.user_id +LEFT JOIN ( + SELECT id AS payment_id, member_id + FROM public.payment_payment +) AS tb_payment ON tb_members.member_id = tb_payment.member_id +LEFT JOIN ( + SELECT payment_id, date + FROM public.payment_transaction +) AS tb_transaction ON tb_transaction.payment_id = tb_payment.payment_id +``` diff --git a/source/infraestrutura/cofre.md b/source/infraestrutura/cofre.md index 206ac0e..648a184 100644 --- a/source/infraestrutura/cofre.md +++ b/source/infraestrutura/cofre.md @@ -24,3 +24,11 @@ Os segredos da APyB são encriptados usando o gerenciador de senhas KeePassXC. E 1. Sempre que for adicionar uma senha no cofre, antes de abrir o Keepass, execute `git pull`. 1. Após adicionar um novo item no cofre, crie um novo *commit* e atualize o repositório com `git push`. 1. Por fim, notifique os diretores da atualização. + +## Python Brasil + +No caso da Python Brasil, para auxiliar o gerenciamneto de senha utilizamos o [1password](https://1password.com/). Apenas a APyB e a comissão organizadora da Python Brasil têm acesso a esse cofre. Para saber mais como que funciona o nosso plano no 1password, consulte o repositório [1Password for Open Source](https://github.com/1Password/for-open-source). + +```{important} +A senha de acesso ao 1password é diferente da senha de acesso ao KeePassXC, e para saber mais detalhes sobre como acessar o cofre da Python Brasil, pesquise por `1password` no cofre da APyB. +``` diff --git "a/source/infraestrutura/dom\303\255nios.md" "b/source/infraestrutura/dom\303\255nios.md" index fab1f3b..bcad93e 100644 --- "a/source/infraestrutura/dom\303\255nios.md" +++ "b/source/infraestrutura/dom\303\255nios.md" @@ -4,23 +4,52 @@ A APyB mantém uma série de domínios e subdomínios relacionados à Associação, à Python Brasil e eventos da comunidade e outras iniciativas. - ## Domínios mantidos pela APyB -- [python.org.br](https://python.org.br) -- [pythonbrasil.org.br](https://pythonbrasil.org.br) -- [pythonnorte.org](https://pythonnorte.org) -- [pythonnordeste.org](https://pythonnordeste.org) -- [plone.org.br](https://plone.org.br) +### Domínios que apenas a APyB mantém + +```{note} +Os domínios abaixo são **gerenciados diretamente pela APyB via `Cloudflare`**. No caso dos subdomínios dos eventos regionais, também configuramos regras de redirecionamento para os sites de anos anteriores, garantindo que os links antigos continuem funcionando. +``` + +| Domínio | Descrição | +|---------|-----------| +| [python.org.br](https://python.org.br) | | +| [sudeste.python.org.br](https://sudeste.python.org.br/) | Site do evento regional Python Sudeste | +| [sul.python.org.br](https://sul.python.org.br/) | Site do evento regional Python Sul | +| [eventos.python.org.br](https://eventos.python.org.br) | Lista de eventos Python espalhados pelo Brasil | +| [talks.python.org.br](https://talks.python.org.br) | Servidor da plataforma de submissão de palestras Pretalx mantido pela comunidade Python brasileira. | + +### Domínios que a APyB mantém em parceria com outras organizações + +```{note} +Os domínios abaixo **são gerenciados via `Cloudflare`**, que permite que possamos adicionar grupos de administradores para cada domínio, facilitando a **gestão compartilhada com as comunidades organizadoras dos eventos**. Dessa forma, a APyB não precisa ser a única responsável por gerenciar os domínios. +``` + +| Domínio | Descrição | +|---------|-----------| +| [pythonbrasil.org.br](https://pythonbrasil.org.br) | Site oficial da conferência Python Brasil, mantido em parceria com a comunidade organizadora do evento. | +| [pythonbrasil.com.br](https://pythonbrasil.com.br) | Redireciona para o site oficial da conferência Python Brasil. | +| [pythonnorte.org](https://pythonnorte.org) | Site do evento regional Python Norte, mantido em parceria com a comunidade organizadora do evento. | +| [pythonnordeste.org](https://pythonnordeste.org) | Site do evento regional Python Nordeste, mantido em parceria com a comunidade organizadora do evento. | + +### Domínios comprados pela APyB a partir de solicitações da comunidade + +```{note} +Os domínios abaixo foram adquiridos pela APyB via `RegistroBR`, a partir de solicitações feitas por membros da comunidade Python brasileira. O pagamento é realizado trianualmente, a partir de doações feitas à APyB especificamente para este fim. +``` + - [django.org.br](https://django.org.br) - [odoobrasil.org.br](https://odoobrasil.org.br) +- [plone.org.br](https://plone.org.br) +- [portalbrasil.org.br](https://portalbrasil.org.br) -Exemplos de alguns dos subdomínios: +## Como solicitar um novo registro ou domínio? -- [eventos.python.org.br](https://eventos.python.org.br): Lista de eventos Python espalhados pelo Brasil -- [talks.python.org.br](https://talks.python.org.br): Servidor da plataforma de submissão de palestras Pretalx mantido pela comunidade Python brasileira. -- [2023.pythonbrasil.org.br](https://2023.pythonbrasil.org.br): Edição 2023 da Python Brasil +Se você gostaria de usar um subdomínio para seu evento ou acha que um novo domínio deveria ser mantido pela APyB, inicie uma discussão no nosso repositório [apyb/comunidade](https://github.com/apyb/comunidade/discussions/new?category=geral) explicando as alterações que você deseja e nós continuaremos a conversa por lá. -## Como solicitar um novo registro ou domínio +## Como acompanhar a renovação dos domínios? -Se você gostaria de usar um subdomínio para seu evento ou acha que um novo domínio deveria ser mantido pela APyB, inicie uma discussão no nosso repositório [apyb/comunidade](https://github.com/apyb/comunidade/discussions/new?category=geral) explicando as alterações que você deseja e nós continuaremos a conversa por lá. +Em ambos os casos (domínios comprados via Cloudflare ou via RegistroBR) o pagamento é realizado com recursos da APyB. Em alguns casos, o pagamento é realizado com doações específicas feitas por membros da comunidade Python brasileira. + +Para acompanhar a renovação dos domínios, você deve acompanhar o e-mail `tecnologia@ (python.org.br)`, onde os avisos de renovação são enviados. \ No newline at end of file diff --git a/source/infraestrutura/images/stripe/associados-ativos.png b/source/infraestrutura/images/stripe/associados-ativos.png new file mode 100644 index 0000000..ce0039b Binary files /dev/null and b/source/infraestrutura/images/stripe/associados-ativos.png differ diff --git a/source/infraestrutura/images/stripe/associados-canceladas.png b/source/infraestrutura/images/stripe/associados-canceladas.png new file mode 100644 index 0000000..bb90b31 Binary files /dev/null and b/source/infraestrutura/images/stripe/associados-canceladas.png differ diff --git a/source/infraestrutura/images/stripe/exportar-assinaturas.png b/source/infraestrutura/images/stripe/exportar-assinaturas.png new file mode 100644 index 0000000..7295d94 Binary files /dev/null and b/source/infraestrutura/images/stripe/exportar-assinaturas.png differ diff --git "a/source/infraestrutura/reposit\303\263rios.md" "b/source/infraestrutura/reposit\303\263rios.md" index ba0ffa6..c169e67 100644 --- "a/source/infraestrutura/reposit\303\263rios.md" +++ "b/source/infraestrutura/reposit\303\263rios.md" @@ -35,3 +35,20 @@ Atualizado em: `{{ now }}` {% for repo in github_repositories|selectattr("owner.login", "equalto", "pythonbrasil")|rejectattr("archived") -%} {{ repo_row(repo) }} {% endfor %} + +## Como é feito o controle de acesso aos repositórios? + +O controle de acesso aos repositórios é feito via times do GitHub. + +```{important} +Recomenda-se que as pessoas usuárias sejam adicionadas aos times corretos, ao invés de serem adicionadas diretamente aos repositórios. Além disso, é importante que você habilite as notificações do GitHub para receber atualizações nos repositórios que você tem acesso. +``` + +| Organização | Time | Repositórios com acesso | +|-----------------------------------------------|----------------------|--------------------------------------------------------------------------------| +| [apyb](https://github.com/apyb) | [Conselho Deliberativo](https://github.com/orgs/apyb/teams/conselho-deliberativo) | [apyb/associados](https://github.com/apyb/associados), [apyb/estatuto](https://github.com/apyb/estatuto), [apyb/wiki](https://github.com/apyb/wiki) | +| | [Conselho Fiscal](https://github.com/orgs/apyb/teams/conselho-fiscal) | [apyb/financeiro](https://github.com/apyb/financeiro) | +| | [Diretoria](https://github.com/orgs/apyb/teams/diretoria) | Todos os repositórios | +| [pythonbrasil](https://github.com/pythonbrasil) | [APyB](https://github.com/orgs/pythonbrasil/teams/apyb) | [pythonbrasil/dados](https://github.com/pythonbrasil/dados), [pythonbrasil/manual](https://github.com/pythonbrasil/manual), [pythonbrasil/wiki](https://github.com/pythonbrasil/wiki) | +| | [Conselho Deliberativo](https://github.com/orgs/pythonbrasil/teams/conselho-deliberativo) | [pythonbrasil/dados](https://github.com/pythonbrasil/dados), [pythonbrasil/manual](https://github.com/pythonbrasil/manual) | +| | [Conselho Fiscal](https://github.com/orgs/pythonbrasil/teams/conselho-fiscal) | [pythonbrasil/manual](https://github.com/pythonbrasil/manual) | \ No newline at end of file diff --git a/source/infraestrutura/stripe.md b/source/infraestrutura/stripe.md new file mode 100644 index 0000000..e52593f --- /dev/null +++ b/source/infraestrutura/stripe.md @@ -0,0 +1,31 @@ +# Stripe + +Utilizamos o [Stripe](https://stripe.com/br) como plataforma de gestão de pagamentos e associados da APyB. A Stripe é uma plataforma globalmente reconhecida e utilizada por diversas organizações sem fins lucrativos ao redor do mundo. + +Abaixo você encontrará informações sobre como gerenciar e utilizar a Stripe no contexto da APyB. + +## Como gerar lista de associados ativos? + +No [dashboard da Stripe](https://dashboard.stripe.com), acesse **Assinaturas** (Subscriptions) e utilize os filtros para selecionar apenas os **associados ativos**. + +![print do dashboard - selecionando todos os associados ativos](images/stripe/associados-ativos.png) + +Lembre-se de selecionar **todo o período** desejado antes de exportar. Você pode exportar essa lista em formato CSV para análise ou integração com outros sistemas. + +![print da tela de exportação de assinaturas](images/stripe/exportar-assinaturas.png) + +Com o csv em mãos, você pode abrir em um editor de planilhas (Excel, Google Sheets, LibreOffice Calc, etc) e consultar os dados como for necessário. Por exemplo, você consegue saber quantas pessoas associadas efetivas temos atualmente, filtrando pela coluna `Plan` (Plano) e contando as linhas que possuem o valor `price_1Pa0m7P5zaoo6rIQBDr6J3jR`. + +## Como gerar lista de associados inadimplentes? + +Gerar a lista de associados inadimplentes é semelhante ao processo de geração da lista de associados ativos. No [dashboard da Stripe](https://dashboard.stripe.com), acesse **Assinaturas** (Subscriptions) e utilize os filtros para selecionar apenas os associados com status **Canceladas**: + +![print do dashboard - selecionando todos os associados cancelados](images/stripe/associados-canceladas.png) + +Para exportar, siga o mesmo processo descrito na seção anterior. Com o CSV em mãos, você pode abrir em um editor de planilhas e analisar os dados conforme necessário. + +## Como editar página de pagamento? + +Você consegue editar os tipos de planos e preços acessando o [dashboard da Stripe](https://dashboard.stripe.com) e navegando até a seção **Catálogo de produtos**. Lá, você pode criar novos planos, editar preços existentes e configurar detalhes adicionais conforme necessário. + +Agora caso você deseje atualizar a página de pagamento hospedada pela Stripe (Stripe Hosted Checkout Page), você pode fazer isso acessando a seção **Catálogo de produtos -> Tabelas de preços** (Products -> Prices) e clicando no catálogo de preços que deseja editar. Na página de detalhes do preço, você encontrará a opção para editar a página de checkout hospedada. diff --git "a/source/pythonbrasil/o-que-\303\251.md" "b/source/pythonbrasil/o-que-\303\251.md" index ce22cff..45b2c15 100644 --- "a/source/pythonbrasil/o-que-\303\251.md" +++ "b/source/pythonbrasil/o-que-\303\251.md" @@ -2,7 +2,10 @@ **Python Brasil** é uma conferência vibrante de Python que estimula a comunidade, o debate, propicia negócios, motiva e **conecta pessoas**. -É uma conferência sem fins lucrativos mantida por voluntários com o suporte da Associação Python Brasil (APyB) e a Python Software Foundation (PSF). +É uma conferência **sem fins lucrativos** mantida por **voluntários** com o suporte da Associação Python Brasil (APyB). + +```{note} Para acessar o site oficial da Python Brasil, clique [aqui](https://pythonbrasil.org.br/). +``` ## Audiência @@ -10,29 +13,32 @@ Desenvolvedores de software freelancers, de startups e grandes empresas, ativist ## Quem já palestrou nas Python Brasil? +- Alex Gaynor, engenheiro de software do OpenStack - Alan Runyan, cofundador do Plone e presidente da Enfold - Alexander Limi, líder de UX do Firefox na Mozilla +- Bryan Van de Ven, engenheiro de software na Continuum Analytics e líder do projeto Open Source Bokeh - Bruce Eckel, autor de Thinking in Java e Thinking in C++ - Collin Winter, Google +- Daniel Greenfeld e Audrey Roy, autores de Two Scoops of Django +- David Beasley, autor de Python Essential Reference e Python Cookbook - Dorneles Tremea, desenvolvedor Plone - Facundo Batista, líder técnico da Canonical +- Fernando Perez, criador do IPython Notebook - Gustavo Niemeyer, líder técnico da Canonical - Jacob Kaplan-Moss, cofundador do Django +- Jeferson Fernando, Co-Founder LINUXtips - Jim Fulton, Zope Corp. +- José Valim, criador da linguagem de programação Elixir - Kenneth Rohde Christiansen, CTO INdT +- Luciano Ramalho, autor de Fluent Python +- Lynn Root, desenvolvedora de software do Spotify e fundadora do Pyladies SF - Maciej Fijalkowski, core developer do PyPy -- Steve Holden, presidente da Python Software Foundation -- Wesley Chun, developer advocate do Google +- Naomi Ceder, autora de Quick Python e membro do conselho da Python Software Foundation - Paul Everitt, core developer do Plone e core developer do Pyramid - Paul Hildebrandt, engenheiro sênior da Walt Disney Studios -- Daniel Greenfeld e Audrey Roy, autores de Two Scoops of Django -- Fernando Perez, criador do IPython Notebook -- José Valim, criador da linguagem de programação Elixir -- Lynn Root, desenvolvedora de software do Spotify e fundadora do Pyladies SF -- Alex Gaynor, engenheiro de software do OpenStack -- Bryan Van de Ven, engenheiro de software na Continuum Analytics e líder do projeto Open Source Bokeh -- David Beasley, autor de Python Essential Reference e Python Cookbook -- Naomi Ceder, autora de Quick Python e membro do conselho da Python Software Foundation +- Sebastián Ramírez, criador do FastAPI e Typer +- Steve Holden, presidente da Python Software Foundation +- Wesley Chun, developer advocate do Google ## Histórico das Python Brasil @@ -40,7 +46,8 @@ Em todas as edições da PythonBrasil uma pessoa da comunidade fica responsável Essa pessoa recebe, por razões históricas, o título de ‘Big Kahuna’. O ‘Big Kahuna’ é o grande chefe, o maestro da organização, se ele trabalha bem o evento é um sucesso, se ele não trabalha bem o evento não sairá direito. -> Para saber mais sobre o Big Kahuna, leia o [manual do Big Kahuna](https://manual.pythonbrasil.org.br/). +```{note} Para saber mais sobre o Big Kahuna, leia o [manual do Big Kahuna](https://manual.pythonbrasil.org.br/). +``` Todavia, em todas as edições, o evento é fruto do trabalho de diversas pessoas, e é responsabilidade de todos o sucesso da empreitada. @@ -62,7 +69,9 @@ Todavia, em todas as edições, o evento é fruto do trabalho de diversas pessoa - 2020 - [Edição Online](https://2020.pythonbrasil.org.br/) - Ana Dulce - 2021 - [Edição Online](https://2021.pythonbrasil.org.br/) - Alynne Ferreira - 2022 - [Manaus - Amazonas - Centro de Convenções do Amazonas](https://2022.pythonbrasil.org.br/) - Juliany Raiol -- 2023 - [Caxias do Sul - Rio Grande do Sul - Centro de Convenções do Amazonas](https://2023.pythonbrasil.org.br/) - Adriano Margarin +- 2023 - [Caxias do Sul - Rio Grande do Sul - Faculdade Anhanguera](https://2023.pythonbrasil.org.br/) - Adriano Margarin +- 2024 - [Rio de Janeiro - Rio de Janeiro - Centro de Convenções Bolsa do Rio](https://2024.pythonbrasil.org.br/) - Thais Viana e Bianca Rosa +- 2025 - [São Paulo - São Paulo - Centro de Evento São Luiz](https://2025.pythonbrasil.org.br/) - Renan de Assis e Izabela Cardoso Mais informações sobre as edições passadas, como quantidade de inscritos e palestrantes você encontra no [Manual do Big Kahuna](https://manual.pythonbrasil.org.br/)