diff --git a/docs/learning/mkdocs_tutorial/deploy.en.md b/docs/learning/mkdocs_tutorial/deploy.en.md new file mode 100644 index 0000000..f0266c3 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/deploy.en.md @@ -0,0 +1,40 @@ +--- +title: Deployment +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +Once we have completed the content of our site and tested its functionality locally, we need to make it visible to everyone for accessibility. To do this, we have several options: + +## GitHub Pages + +1. Host your MkDocs project on GitHub. +2. Use the `mkdocs gh-deploy` command to build your documentation and upload it to the `gh-pages` branch of your GitHub repository. +3. Your documentation will be automatically hosted on GitHub Pages at the address `https://username.github.io/repository`. + +## Netlify + +1. Connect your MkDocs project to a repository on a service like GitHub. +2. Create a Netlify account and a new site, linking it to your repository. +3. Configure the build settings in Netlify to run the `mkdocs build` command during the build process. +4. Netlify will automatically publish and host your MkDocs site. + +## Read the Docs + +1. If your project is open source, you can use Read the Docs to automatically build and host your MkDocs documentation. +2. Connect your project's repository to Read the Docs and configure the build settings. +3. Every time you make changes in your repository, Read the Docs will automatically build and update your documentation. + +## Manual Deployment + +1. Build your MkDocs documentation using the `mkdocs build` command. +2. Copy the generated files from the `site` directory to your web server. +3. Configure your web server to serve the static files. For example, if you are using Apache or Nginx, configure a virtual host to point to the documentation directory. + +## Docker + +1. Build a Docker image containing your MkDocs documentation. +2. Upload the Docker image to a container registry like Docker Hub. +3. Deploy the Docker image on a container orchestration platform such as Kubernetes or Docker Swarm. diff --git a/docs/learning/mkdocs_tutorial/deploy.md b/docs/learning/mkdocs_tutorial/deploy.md new file mode 100644 index 0000000..1d206ef --- /dev/null +++ b/docs/learning/mkdocs_tutorial/deploy.md @@ -0,0 +1,41 @@ +--- +title: Deploy +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +Una volta che abbiamo completato il contenuto del nostro sito e abbiamo testato il suo funzionamento in locale dobbiamo renderlo visibile a tutti perchè sia consultabile. +Per fare ciò abbiamo diverse possibilità: + +## GitHub Pages + +1. Ospita il tuo progetto MkDocs su GitHub. +2. Usa il comando mkdocs gh-deploy per costruire la tua documentazione e caricarla sul ramo gh-pages del tuo repository GitHub. +3. La tua documentazione sarà automaticamente ospitata su GitHub Pages all'indirizzo https://username.github.io.repository + +## Netlify + +1. Collega il tuo progetto MkDocs a un repository su un servizio come GitHub. +2. Crea un account Netlify e crea un nuovo sito, collegandolo al tuo repository +3. Configura le impostazioni di compilazione in Netlify per eseguire il comando mkdocs build durante il processo di compilazione. +4. Netlify pubblicherà e ospiterà automaticamente il tuo sito MkDocs. + +## Read the Docs + +1. Se il tuo progetto è open source, puoi utilizzare Read the Docs per compilare e ospitare automaticamente la tua documentazione MkDocs. +2. Collega il repository del tuo progetto a Read the Docs e configura le impostazioni di compilazione. +3. Ogni volta che effettui modifiche nel tuo repository, Read the Docs compilerà automaticamente e aggiornerà la tua documentazione. + +## Pubblicazione Manuale + +1. Costruisci la tua documentazione MkDocs usando il comando mkdocs build. +2. Copia i file generati dalla directory site sul tuo server web. +3. Configura il tuo server web per servire i file statici. Ad esempio, se stai utilizzando Apache o Nginx, configura un virtual host per puntare alla directory della documentazione. + +## Docker + +1. Costruisci un'immagine Docker contenente la tua documentazione MkDocs. +2. Carica l'immagine Docker in un registro dei container come Docker Hub. +3. Distribuisci l'immagine Docker su una piattaforma di orchestrazione dei container come Kubernetes o Docker Swarm. \ No newline at end of file diff --git a/docs/learning/mkdocs_tutorial/document_code.en.md b/docs/learning/mkdocs_tutorial/document_code.en.md new file mode 100644 index 0000000..9ff1910 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/document_code.en.md @@ -0,0 +1,72 @@ +--- +title: Documenting code +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +As we have seen mkdocs is very convenient and fast, one of the most used features of the library is to quickly comment and share technical documentation related to code. + +To do this you need to use a [particular extension](https://mkdocstrings.github.io/) called `mkdocstring`. + +This extension allows you to automatically create documentation of Python functions and classes, being able to read notations and `docstrings` by turning them into HTML code. + +Be careful in installing the library which is called: `mkdocstrings-python` and not just `mkdocstrings`, you must therefore do with poetry: + +`poetry add mkdocstrings-python`. + +The difference is that `mkdocstrings-python` is the handler to support python code. + +With mkdocstrings you can also document and support `shell` code by installing: `mkdocstrings-shell` + +Once the library is installed you will also need to configure it, to do this it is important to put in the `mkdocs.yaml` file within the `plugins` section this configuration + +```yaml + - mkdocstrings: + default_handler: python + handlers: + python: + options: + show_source: true + show_root_heading: yes + heading_level: 0 + filters: + - '!^_' # exclude all members starting with _ + - '!^__init__$' # exclude __init__ modules and methods + +``` + +To do this try creating a function, for example: + +```python + +def sum_numbers(num1: int, num2: int) -> int: + ``` + def sum_numbers(num1: int, num2: int) -> int: + """Sum 2 int numbers and obtain a result + + Args: + num1 (int): the first number you want to sum + num2 (int): the second number you want to sum + + Returns: + result (int): the sum of the two numbers + """ + return num1 + num2 + +``` + +After that you will have to import the package inside a markdown file using a special notation, suppose your code is in the following folder (or module): `myapp/test/utils.py` + +Inside a markdown file you will need to write: + +```markdown + +::: myapp.test.utils.sum_numbers + +``` + +Automatically mkdocstring will display within the site your example. + +Of course we always recommend that you try to edit markdown files and always check the result, you can always make sure to add more comments or embellishments in markdown normally. diff --git a/docs/learning/mkdocs_tutorial/document_code.md b/docs/learning/mkdocs_tutorial/document_code.md new file mode 100644 index 0000000..17527e0 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/document_code.md @@ -0,0 +1,72 @@ +--- +title: Documentare il codice +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +Come abbiamo visto mkdocs è molto comodo e veloce, una delle funzionalità più utilizzate della libreria è per commentare e condividere velocemente documentazione tecnica relativa al codice. + +Per farlo è necessario utilizzare una [particolare estensione](https://mkdocstrings.github.io/) chiamata `mkdocstring`. + +Questa estensione consente di creare automaticamente la documentazione delle funzioni e delle classi Python, riuscendo a leggedere le notazioni e le `docstring` trasformandole in codice HTML. + +Attenzione nell'installazione della libreria che si chiama: `mkdocstrings-python` e non solamente `mkdocstrings`, dovete quindi fare con poetry: + +`poetry add mkdocstrings-python` + +La differenza è che `mkdocstrings-python` è l'handler per supportare il codice python. + +Con mkdocstrings è anche possibile documentare e supportare codice `shell` installando: `mkdocstrings-shell` + +Una volta installata la libreria sarà necessario anche configurarla, per farlo è importante inserire nel `mkdocs.yaml` file all'interno della sezione `plugins` questa configurazione + +```yaml + - mkdocstrings: + default_handler: python + handlers: + python: + options: + show_source: true + show_root_heading: yes + heading_level: 0 + filters: + - '!^_' # exclude all members starting with _ + - '!^__init__$' # exclude __init__ modules and methods + +``` + +Per farlo prova a creare una funzione, ad esempio: + +```python + +def sum_numbers(num1: int, num2: int) -> int: + ``` + def sum_numbers(num1: int, num2: int) -> int: + """Sum 2 int numbers and obtain a result + + Args: + num1 (int): the first number you want to sum + num2 (int): the second number you want to sum + + Returns: + result (int): the sum of the two numbers + """ + return num1 + num2 + +``` + +Dopodiche dovrai importare il package all'interno di un file markdown utilizzando una speciale notazione, supponiamo che il tuo codice sia nella seguente cartella (o modulo): `myapp/test/utils.py` + +All'interno di un file markdown dovrai scrivere: + +```markdown + +::: myapp.test.utils.sum_numbers + +``` + +In automatico mkdocstring visualizzerà all'interno del sito il tuo esempio. + +Ovviamente consigliamo sempre di provare a modificare i file markdown e di controllare sempre il risultato, potete sempre fare in modo di aggiungere altri commenti o abbellimenti in markdown normalmente. \ No newline at end of file diff --git a/docs/learning/mkdocs_tutorial/extensions.en.md b/docs/learning/mkdocs_tutorial/extensions.en.md new file mode 100644 index 0000000..a96e1ae --- /dev/null +++ b/docs/learning/mkdocs_tutorial/extensions.en.md @@ -0,0 +1,19 @@ +--- +title: Extensions +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +In this section, you can find MkDocs extensions that we consider most useful for creating a truly comprehensive documentation site. + +| Extension | Description | Link | +| -------------- | ------------------------------------ | -------------------------------------------------- | +| mkdocs-material | Feature-rich template compared to the basic mkdocs template | [mkdocs-material](https://squidfunk.github.io/mkdocs-material/) | +| mkdocs-git-revision-date-localized-plugin | Inserts the last modification date at the bottom of the page based on the latest commit | [mkdocs-git-revision-date-localized-plugin](https://pypi.org/project/mkdocs-git-revision-date-localized-plugin/) | +| mkdocs-jupyter | Renders a Jupyter notebook within a page, including any charts | [mkdocs-jupyter](https://github.com/danielfrg/mkdocs-jupyter) | +| mkdocs-static-i18n | Supports your site in multiple languages | [mkdocs-static-i18n](https://github.com/ultrabug/mkdocs-static-i18n) | +| mkdocs-autorefs | Allows linking to another page on the site without knowing the full path | [mkdocs-autorefs](https://pypi.org/project/mkdocs-autorefs/) | +| neoteroi-mkdocs | Allows inserting graphical elements such as cards, timelines, and Gantt charts | [neoteroi-mkdocs](https://github.com/Neoteroi/mkdocs-plugins) | +| mkdocs-timetoread-plugin | it allows you to add an indicative reading time for a page, ideal for those who want to create a website with articles or blog posts. | https://pypi.org/project/mkdocs-timetoread-plugin/ | diff --git a/docs/learning/mkdocs_tutorial/extensions.md b/docs/learning/mkdocs_tutorial/extensions.md new file mode 100644 index 0000000..3a91e60 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/extensions.md @@ -0,0 +1,19 @@ +--- +title: Estensioni +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +In questa sezione potete trovare le estensioni di mkdocs che sono secondo noi più utili per poter creare un sito documentale davvero completo. + +| Estensione | Descrizione | Link| +| ----------- | ------------------------------------ |-----------------| +| mkdocs-material| template ricchissimo di funzionalità rispetto a mkdocs base| https://squidfunk.github.io/mkdocs-material/ | +| mkdocs-git-revision-date-localized-plugin | permette di inserire a fondo pagina la data relativa all'ultima modifica sulla base dell'ultima commit effettuata| https://pypi.org/project/mkdocs-git-revision-date-localized-plugin/ | +| mkdocs-jupyter | permette di renderizzare uno jupyter notebook all'interno di una pagina compresi eventuali grafici | https://github.com/danielfrg/mkdocs-jupyter | +| mkdocs-static-i18n | consente di supportare il tuo sito in diverse lingue | https://github.com/ultrabug/mkdocs-static-i18n | +|mkdocs-autorefs| permette di puntare ad un'altra pagina del sito senza conoscere il path completo | https://pypi.org/project/mkdocs-autorefs/ | +| neoteroi-mkdocs | permette di inserire elementi grafici come cards, timelines e diagrammi di gantt| https://github.com/Neoteroi/mkdocs-plugins | +| mkdocs-timetoread-plugin | permette di aggiungere un tempo di lettura indicativo per una pagina, ideale per chi vuole fare un sito con articoli o blog post | https://pypi.org/project/mkdocs-timetoread-plugin/ | \ No newline at end of file diff --git a/docs/learning/mkdocs_tutorial/extra_functions.en.md b/docs/learning/mkdocs_tutorial/extra_functions.en.md new file mode 100644 index 0000000..bf10d5b --- /dev/null +++ b/docs/learning/mkdocs_tutorial/extra_functions.en.md @@ -0,0 +1,195 @@ +--- +title: Documenting code +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +After looking at the basic functionality of Markdown, let's explore together some somewhat more advanced and convenient features that can help to perform different tasks and add different functionality such as: + +- Viewing youtube videos +- Viewing and sharing jupyter notebooks +- Writing scientific equations + +This versality and extensibility of **mkdocs** allows you to do so many things, in addition to our PythonBiellaGroup site that you are seeing there are lots of examples of sites made with mkdocs to do different things: + +- share documentation with other co-workers privately via the Internet +- create documentation websites +- personal blogs +- conference and event sites and small landing pages +- much much more... + +## How to insert images + +To insert images you can use the classic features of `markdown`, but we recommend that you pay attention to where the images are inserted within the site and how they are then retrieved based on the chosen path. + +In particular, we suggest creating a folder: `docs/static/images` where the images are organized into subfolders. + +Recallable then from the markdown syntax: + +```markdown +![Python env](../../static/images/articles/python-env.png) +``` + +In particular, you always use the syntax of **relative path** based on where you are in the file. + +This allows the mkdocs solver to create the site correctly. + +## Create banners + +You can create banners within markdown pages by taking advantage of a special markdown feature. + +You can find an example here that we also use on our site + +```markdown +[![Github](https://img.shields.io/badge/GitHub-181717.svg?style=for-the-badge&logo=GitHub&logoColor=white)](https://github.com/PythonBiellaGroup/MaterialeSerate/tree/master/ModernPythonDevelopment) +``` + +To generate the banners you can also use this [very useful site](https://leviarista.github.io/github-profile-header-generator/) which allows you to create custom banners. + +Alternatively [this other site](https://kapasia-dev-ed.my.site.com/Badges4Me/s/) allows you to create small simple banners for reference. + +Since markdown also allows you to insert html code, you can also use this [banner type](https://app.getguru.com/card/RcAndBGc/Custom-Banners-using-the-Markdown-Block-in-the-Guru-Editor) + +## View youtube videos + +To insert youtube videos necessary to make iframes: the hardest part is always to find the right size so that the site is also usable from mobile. + +We can take advantage of this functionality because it is always possible to write **html** code inside markdown. +Thus making markdown really extensible and powerful, although a bit more difficult to manage. +**mkdocs** will render the html in markdown automatically into the page. + +In this regard we would like to suggest this configuration that we also use on our site + +```markdown +## Meetup video + + +``` + +## Share jupyter notebooks + +On mkdocs you can also share jupyter notebooks, there are two ways to do this: + +- make jupyter notebooks viewable in full using a plugin [mkdocs-jupyter](https://github.com/danielfrg/mkdocs-jupyter) +- export notebooks with `nbconverter` to `html` or `pdf` format and display them within pages, to do this we refer you to the following section [Sharing PDF](#sharing-pdf) + +## Sharing PDF + +If you want to transform a **jupyter notebook** to **pdf** format you can also use the **nbconvert** functionality. + +To do this you can run the following command from the terminal (enabling virtualenv with jupyter installed) + +```shell +@jupyter nbconvert --no-prompt --no-input --output-dir "./docs/notebooks" --to html notebooks/*.ipynb +``` + +This command allows you to convert the notebook to pdf in a particular `docs/notebooks` folder. + +You can also run this command via pipeline **ci/cd**. + +For more information check out the [official nbconvert guide](https://nbconvert.readthedocs.io/en/latest/usage.html) because it has so many other settings and allows you to do so many other transformations to other formats as well. + +Once you have the PDF you can use the ufnalities of **html5** to display the PDF in an Iframe. + +The referring browser will then take care of handling your PDF by adding various features. + +You can use the following code to do this: + +```markdown +documentation-link + + + + + +``` + +With this code you will have the notebook in **pdf** format on the page, but also a clickable link to see the notebook full screen in a new page. + +We also recommend using a **custom css** so that you can handle the size of the iframe correctly. + +You can do this by creating a new folder and a new file: `style/custom.css` with the following content inside: + +```css +iframe { + position: relative; + width: 80%; + height: 100vh; + border: none; +} +object { + position: relative; + width: 100%; + height: 100vh; + border: none; +} + +``` + +To activate the **css** you will then need to add the custom style inside the `mkdocs.yaml` file. + +```yaml +extra_css: + - style/custom.css + +``` + +## Writing scientific equations + +## Using tags + +## Neuteroi components + +**Neuteroi** is a library of add-ons for **mkdocs** that we loved and also used for our PythonBiellaGroup site. + +This is the [official site with description](https://www.neoteroi.dev/mkdocs-plugins/) + +In order to use these components you need to install the library always with poetry + +`poetry add neoteroi-mkdocs`. + +After that you need to add in the file `mkdocs.yaml` in the markdown extensions the various components available in the library, such as `cards` and `timeline`. + +```yaml +markdown_extensions: + - neoteroi.cards + - neoteroi.timeline +``` + +In this case as you can see it is not necessary to give any definition in the plugins. + +To use the components we refer to the official site, in general you will need to **open the component**, insert the content and then **close the component**. + +Here is an example with the timeline: + +```markdown +::timeline:: + +- content: A group of friends, including Mario and Davide C., start meeting once a week to figure out how Python can help solve problems as simple as winning the lotto + sub_title: 09/2016 + title: The beginnings +- content: The group of friends is joined by Maria Teresa, one of the founders, to introduce Python to a group of kids. Andrea arrives and the community is born, with the goal of sharing knowledge. + sub_title: 05/2018 + title: The first meetings in the Biella library. +- content: Because of or thanks to Covid-19 and the Internet, the desire to share spreads, even outside Biella, to all interested parties. Every week we organize a meetup on Zoom to allow everyone to participate + sub_title: 02/2020 + title: Meetup open to all + + +::/timeline:: +``` + +Of course we refer to the [official site](https://www.neoteroi.dev/mkdocs-plugins/timeline/) to see examples and different configurations + +## Problems encountered + +Sometimes when you have a lot of plugins it is hard to tell if something works or something goes wrong, but more importantly it is hard to know where to intervene. +We recommend making small changes a little at a time and not changing many things together when editing the `mkdocs.yaml` file. + +Some plugins should be launched after others: for example, the `i18n` translation plugin should go before the `git` configuration plugin. + +It is often not easy to find the correct plugin names, pay attention :) + +Some advanced plugins available in the `mkdocs-material-insider` version are not compatible with other standard plugins, such as the translation system. diff --git a/docs/learning/mkdocs_tutorial/extra_functions.md b/docs/learning/mkdocs_tutorial/extra_functions.md new file mode 100644 index 0000000..6d237a0 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/extra_functions.md @@ -0,0 +1,196 @@ +--- +title: Documentare il codice +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +Dopo aver visto le funzionalità base di Markdown, esploriamo assieme alcune funzionalità un po' più avanzate e comode che possono aiutare per svolgere diversi compiti e aggiungere diverse funzionalità come: + +- Visualizzare video youtube +- Visualizzare e condividere jupyter notebooks +- Scrivere equazioni scientifiche + +Questa versalità ed estensibilità di **mkdocs** consente di fare tantissime cose, oltre al nostro sito di PythonBiellaGroup che state vedendo ci sono tantissimi esempi di siti realizzati con mkdocs per fare diverse cose: + +- condividere documentazione con altri colleghi di lavoro privatamente tramite internet +- creare siti web documentali +- blog personali +- siti di conferenze, eventi e piccole landing pages +- molto molto altro... + +## Come inserire immagini + +Per inserire le immagini si possono utilizzare le funzionalità classiche si `markdown`, ma consigliamo di prestare attenzione a dove le immagini vengono inserite all'interno del sito e come poi vengono richiamate in base al path scelto. + +In particolare suggeriamo di creare una cartella: `docs/static/images` dove organizzare le immagini in sottocartelle. + +Richiamabili poi dalla sintassi markdown: + +```markdown +![Python env](../../static/images/articles/python-env.png) +``` + +In particolare si utilizza sempre la sintassi di **path relativo** in base a dove ti trovi nel file. + +Questo consente al risolutore di mkdocs di creare il sito correttamente. + +## Creare dei banner + +È possibile creare all'interno delle pagine markdown dei banner sfruttando una particolare funzionalità markdown. + +Potete trovare qui un esempio che utilizziamo anche nel nostro sito + +```markdown +[![Github](https://img.shields.io/badge/GitHub-181717.svg?style=for-the-badge&logo=GitHub&logoColor=white)](https://github.com/PythonBiellaGroup/MaterialeSerate/tree/master/ModernPythonDevelopment) +``` + +Per generare i banner potete anche utilizzare questo [utilissimo sito](https://leviarista.github.io/github-profile-header-generator/) che vi consente di creare dei banner personalizzati. + +Alternativamente [questo altro sito](https://kapasia-dev-ed.my.site.com/Badges4Me/s/) consente di creare dei piccoli banner semplici come riferimento. + +Siccome markdown consente anche si inserire codice html, potete anche utilizzare questo [tipo di banner](https://app.getguru.com/card/RcAndBGc/Custom-Banners-using-the-Markdown-Block-in-the-Guru-Editor) + +## Visualizzare video youtube + +Per inserire video youtube necessario fare degli iframe: la parte più difficile è sempre quella di trovare le dimensioni giuste affinchè il sito sia anche fruibile da mobile. + +Questa funzionalità la possiamo sfruttare perchè è sempre possibile scrivere codice **html** all'interno di markdown. +Rendendo quindi markdown veramente estendibile e potente, anche se un po' più difficile da gestire. +**mkdocs** renderizzerà l'html nei markdown automaticamente nella pagina. + +A tal proposito ci sentiamo di suggerire questa configurazione che usiamo anche sul nostro sito + +```markdown +## Video del meetup + + +``` + +## Condividere jupyter notebooks + +Su mkdocs è anche possibile condividere jupyter notebooks, ci sono due modi per farlo: + +- rendere visualizzabile il jupyter notebook per intero utilizzando un plugin [mkdocs-jupyter](https://github.com/danielfrg/mkdocs-jupyter) +- esportare i notebooks con `nbconverter` in formato `html` o `pdf` e visualizzarli all'interno delle pagine, per fare questo vi rimandiamo alla sezione seguente [Condividere PDF](#condividere-pdf) + +## Condividere PDF + +Se vuoi trasformare un **jupyter notebook** in formato **pdf** puoi usare anche la funzionalità di **nbconvert**. + +Per farlo puoi lanciare il seguente comando da terminale (attivando il virtualenv con jupyter installato) + +```shell +@jupyter nbconvert --no-prompt --no-input --output-dir "./docs/notebooks" --to html notebooks/*.ipynb +``` + +Questo comando consente di convertire il notebook in pdf in una particolare cartella `docs/notebooks`. + +Puoi anche eseguire questo comando tramite pipeline **ci/cd**. + +Per ulteriori informazioni consulta la [guida ufficiale di nbconvert](https://nbconvert.readthedocs.io/en/latest/usage.html) perchè ha tantissime altre impostazioni e consente di fare tantissime altre trasformazioni anche in altri formati. + +Una volta ottenuto il PDF puoi utilizzare le ufnzionalità di **html5** per visualizzare il PDF in un Iframe. + +Si occuperà poi il browser di riferimento di gestire il tuo PDF aggiungendo diverse funzionalità. + +Per farlo puoi usare il seguente codice: + +```markdown + +documentation-link + + + + + +``` + +Con questo codice avrai a disposizione il notebook in formato **pdf** in pagina, ma anche un link clickabile per vedere il notebook a tutto schermo in una nuova pagina. + +Consigliamo anche di usare un **custom css** in modo da gestire le dimensioni dell'iframe correttamente. + +Per farlo è possibile creare una nuova cartella e un nuovo file: `style/custom.css` con all'interno il seguente contenuto: + +```css +iframe { + position: relative; + width: 80%; + height: 100vh; + border: none; +} +object { + position: relative; + width: 100%; + height: 100vh; + border: none; +} + +``` + +Per attivare il **css** dovrai poi aggiungere lo stile custom all'interno del file `mkdocs.yaml`. + +```yaml +extra_css: + - style/custom.css + +``` + +## Scrivere equazioni scientifiche + +## Utilizzare i tags + +## Componenti neuteroi + +**Neuteroi** è una libreria di componenti aggiuntivi per **mkdocs** che a noi ci è piaciuta tantissimo e che abbiamo utilizzato anche per il nostro sito di PythonBiellaGroup. + +Questo è il [sito ufficiale con la descrizione](https://www.neoteroi.dev/mkdocs-plugins/) + +Per poter utilizzare questi componenti è necessario installare la libreria sempre con poetry + +`poetry add neoteroi-mkdocs` + +Dopodichè è necessario aggiungere nel file `mkdocs.yaml` nelle estensioni markdown i vari componenti disponibili nella libreria, come ad esempio `cards` e `timeline`. + +```yaml +markdown_extensions: + - neoteroi.cards + - neoteroi.timeline +``` + +In questo caso come puoi vedere non è necessario dare nessuna definizione nei plugins. + +Per usare i componenti rimandiamo sul sito ufficiale, in generale sarà necessario **aprire il componente**, inserire il contenuto e poi **chiudere il componente**. + +Qui un esempio con la timeline: + +```markdown +::timeline:: + +- content: Un gruppo di amici, tra cui Mario e Davide C., inizia a trovarsi una volta alla settimana per capire come Python possa aiutare a risolvere problemi semplici come vincere al lotto + sub_title: 09/2016 + title: Gli inizi +- content: Al gruppo di amici si unisce al team di Maria Teresa, una delle fondatrici, per presentare Python ad un gruppo di ragazzi. Arriva Andrea e nasce la community, con l'obiettivo di condividere le proprie conoscenze. + sub_title: 05/2018 + title: I primi incontri nella biblioteca di Biella +- content: A causa o grazie al Covid-19 e ad Internet, la voglia di condivisione si allarga, anche fuori da Biella, a tutti gli interessati. Ogni settimana organizziamo un meetup su Zoom per permettere a tutti di partecipare + sub_title: 02/2020 + title: Meetup aperti a tutti + + +::/timeline:: +``` + +Ovviamente rimandiamo al [sito ufficiale](https://www.neoteroi.dev/mkdocs-plugins/timeline/) per vedere esempi e differenti configurazioni + +## Problemi riscontrati + +A volte quando si hanno tanti plugin è difficile capire se qualcosa funziona o qualcosa va storto, ma soprattutto è difficile capire dove intervenire. +Consigliamo di fare delle piccole modifiche un po' per volta e non cambiare tante cose assieme quando si modifica il file `mkdocs.yaml`. + +Alcuni plugin devono essere lanciati dopo altri: ad esempio il plugin di traduzione `i18n` deve andare prima del plugin di configurazione di `git`. + +Spesso non è facile trovare i nomi corretti dei plugin, prestate attenzione :) + +Alcuni plugin avanzati disponibili nella versione `mkdocs-material-insider` non sono compatibili con altri plugin standard, come ad esempio il sistema di traduzione. diff --git a/docs/learning/mkdocs_tutorial/github_pages.en.md b/docs/learning/mkdocs_tutorial/github_pages.en.md new file mode 100644 index 0000000..32d388c --- /dev/null +++ b/docs/learning/mkdocs_tutorial/github_pages.en.md @@ -0,0 +1,33 @@ +--- +title: GitHub Pages +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +There are various hosting services to consider when hosting a website. In this tutorial, we will show you how to publish and host a site on **GitHub Pages**. + +## What is GitHub Pages + +GitHub Pages is a free web hosting service provided by GitHub. It allows users to publish static websites directly from a GitHub repository. +Here are some features: + +- Only static websites can be hosted. +- The hosting service is free. +- By default, a domain like https://username.github.io/my-project is set up, but you can configure a domain from another provider. + +## Getting Started + +1. Create your repository on GitHub. +2. After creating your repository, ensure that the repository is public to use GitHub Pages. For those with a GitHub Enterprise subscription, it's possible to keep the repository private. + + !!! note "tip" + + To check if the repository is public, go to **Settings > Danger Zone > Change repository visibility.** + +3. To publish on GitHub Pages, we use GitHub Actions, which allows building CI/CD pipelines from a YAML configuration file. + + !!! note "tip" + + Set this option in **Settings > Pages > Build and deployment > Source = GitHub Actions.** diff --git a/docs/learning/mkdocs_tutorial/github_pages.md b/docs/learning/mkdocs_tutorial/github_pages.md new file mode 100644 index 0000000..f5e212a --- /dev/null +++ b/docs/learning/mkdocs_tutorial/github_pages.md @@ -0,0 +1,33 @@ +--- +title: Github Pages +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +Ci sono vari servizi di hosting che si possono valutare per ospitare un sito. In questo tutorial vi mostreremo come poter pubblicare e ospitare un sito su **Github Pages**. + +## Cos'é Github Pages + +GitHub Pages è un servizio di hosting web gratuito offerto da GitHub. Consente agli utenti di pubblicare siti web statici direttamente da una repository github. +Ecco alcune caratteristiche: + +- Possono essere hostati solo siti web statici. +- Il servizio di hosting é gratuito +- Di default viene impostato un dominio del tipo https://username.github.io/my-project ma é possibile impostare un dominio di un altro provider. + +## Primi passi + +1. Creare la propria repository su Github +2. Dopo aver creato la propria repository é necessario assicurarsi che la repository sia pubblica per poter usufruire di Github Pages. Per chi possiede una sottoscrizione a github enterprise é possibile mantenere la repository privata. + + !!! note "tip" + + Per verificare che la repository sia pubblica andare su **Settings > Danger Zone > Change repository visibility.** + +3. Per poter pubblicare su github Pages noi utilizziamo le github actions che permettono di costruire delle pipeline di CI/CD a partire da un file di configurazione YAML. + + !!! note "tip" + + Bisogna quindi impostare questa opzione in **Settings > Pages > Build and deployment > Source = Github Actions** diff --git a/docs/learning/mkdocs_tutorial/index.en.md b/docs/learning/mkdocs_tutorial/index.en.md new file mode 100644 index 0000000..2e42e41 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/index.en.md @@ -0,0 +1,54 @@ +--- +title: Intro +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +## What is MkDocs? + +MkDocs is a documentation generation tool designed to simplify the process of creating documents for software projects, personal web pages, and more. With MkDocs, you can write documentation using the Markdown markup language, making the process of creating and maintaining documentation accessible even to those who are not familiar with more complex markup languages like HTML. + +## Why Use MkDocs? + +There are several reasons to choose MkDocs as a tool for documentation creation. Here are some of the main motivations: + +1. **Ease of use**: MkDocs is based on the Markdown markup language, known for its simplicity and clarity. This makes the creation and maintenance of documentation accessible even to those who are not familiar with more complex markup languages like HTML. + +2. **Speed in creation**: MkDocs simplifies the documentation creation process. With just a few commands, you can initialize a project, add new pages, and generate a complete documentation site. This allows you to focus more on content, reducing the time required for documentation creation. + +3. **Professional and elegant appearance**: MkDocs generates documentation websites with a modern and elegant design. The clean appearance and intuitive navigation enhance the user experience, making the documentation more enjoyable to read and consult. + +4. **Flexible configuration**: MkDocs offers many configuration options that allow you to customize the appearance and behavior of the documentation site. You can customize the theme, add navigation elements, and embed code snippets to tailor the documentation to the needs of your project. + +5. **Large support community**: MkDocs has an active community and a plugin ecosystem that provides additional functionality. You can find support online, tutorials, and additional resources thanks to the community that continually contributes to the improvement of the MkDocs ecosystem. + +## What Will We Cover? + +In this tutorial, we will explore step by step how to use MkDocs to create clean and easily navigable documentation for your project. You can also use MkDocs to build a site for a community (as we did 😉). + +* Introduction to MkDocs +* Initializing the project +* Creating documentation pages using Markdown. +* Customizing the appearance of your documentation site. +* Developing your site locally +* Deploying your site + +## Some personal considerations + +We feel like sharing some considerations after using mkdocs both at work and here in the community: + +* It is a very good library that allows you to get good results, but which are often similar to each other, if you are looking for the extreme customization that a frontend with javascript can offer you it is not for you +* It is a very flexible tool, but it is difficult sometimes to integrate different libraries that conflict. +* There are very good and viable alternatives on Python, but they are often less beautiful. +* Wordpress is definitely a good alternative to landing pages, but we are nerds and like things a little nerdy :) Plus you can version the code and your own files, plus it's much more collaborative, without weird point-and-clicks or weird plugins +* Customizing the template to create your own style is not that easy + +However we were very happy with the library, it allows you to make very good websites very fast and light. + +## Why Markdown? + +Markdown is a widely used standard format for creating rich text quickly and easily, it is also the same format used in README files on Github in every repository. + +There are many extensions that allow you to enrich Markdown, however we recommend that you look at and practice with Github's standard help, especially keeping this [very handy official Github cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) handy at all times. diff --git a/docs/learning/mkdocs_tutorial/index.md b/docs/learning/mkdocs_tutorial/index.md new file mode 100644 index 0000000..7ba6756 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/index.md @@ -0,0 +1,54 @@ +--- +title: Intro +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +## Cos'é MkDocs? + +MkDocs è uno strumento di generazione di documentazione progettato per semplificare il processo di creazione di documenti per progetti software, pagine web personali e altro ancora. Con MkDocs, è possibile scrivere la documentazione utilizzando il linguaggio di markup Markdown, rendendo il processo di creazione e manutenzione della documentazione accessibile anche a chi non è esperto di HTML o altri linguaggi di markup più complessi. + +## Perchè utilizzare MkDocs? + +Ci sono diverse ragioni per scegliere MkDocs come strumento per la creazione della documentazione. Ecco qualche esempio: + +1. **Semplicità d'uso**: MkDocs si basa sul linguaggio di markup Markdown, che è noto per la sua semplicità e chiarezza. Questo rende la creazione e la manutenzione della documentazione accessibile anche a coloro che non hanno familiarità con linguaggi di markup più complessi come HTML. + +2. **Rapidità nella creazione**: MkDocs semplifica il processo di creazione della documentazione. Con pochi comandi, è possibile inizializzare un progetto, aggiungere nuove pagine e generare un sito di documentazione completo. Ciò consente di concentrarsi maggiormente sul contenuto, riducendo il tempo necessario per la creazione della documentazione. + +3. **Aspetto professionale ed elegante**: MkDocs genera siti web di documentazione con un design moderno ed elegante. L'aspetto pulito e la navigazione intuitiva migliorano l'esperienza dell'utente, rendendo la documentazione più piacevole da leggere e consultare. + +4. **Configurazione flessibile**: MkDocs offre molte opzioni di configurazione che consentono di personalizzare l'aspetto e il comportamento del sito di documentazione. Puoi personalizzare il tema, aggiungere elementi di navigazione e incorporare snippet di codice per adattare la documentazione alle esigenze del tuo progetto. + +5. **Ampia community**: MkDocs gode di una comunità attiva e di un ecosistema di plugin che offre ulteriori funzionalità. Puoi trovare supporto online, tutorial, e risorse aggiuntive grazie alla comunità che contribuisce continuamente al miglioramento dell'ecosistema MkDocs. + +## Cosa vedremo? + +In questo tutorial, esploreremo passo dopo passo come utilizzare MkDocs per creare una documentazione pulita e facilmente navigabile per il tuo progetto. Puoi usare Mkdocs anche per poter realizzare un sito per una community (come abbiamo fatto noi 😉) + +* Introduzione a MkDocs +* Inizializzare il progetto +* Creare pagine di documentazione utilizzando il Markdown. +* Personalizzare l'aspetto del tuo sito di documentazione. +* Sviluppare il tuo sito in locale +* Deployare il tuo sito + +## Alcune considerazioni personali + +Ci sentiamo di condividere alcune considerazioni dopo aver utilizzato mkdocs sia al lavoro che qui nella community: + +* È un'ottima libreria che consente di ottenere buoni risultati, ma che spesso sono simili tra loro, se cerchi la personalizzazione estrema che un frontend con javascript può offrirti non fa al caso tuo +* È uno strumento molto flessibile, ma è difficile a volte integrare librerie diverse che vanno in conflitto +* Ci sono delle ottime e valide alternative su Python, ma spesso sono meno belle +* Wordpress è sicuramente un'alternativa valida alle landing page, ma siamo nerd e ci piaccono le cose un po' nerd :) Inoltre puoi versionare il codice e i tuoi file, oltre ad essere molto più collaborativo, senza strani punta e clicca o strani plugins +* Personalizzare il template per creare un proprio stile non è così facile + +Tuttavia noi ci siamo trovati molto bene con la libreria, consente di realizzare degli ottimi siti web molto veloci e leggeri. + +## Perchè Markdown? + +Markdown è un formato standard molto usato per creare testo ricco in maniera facile e veloce, è lo stesso formato utilizzato anche nei file README su Github in ogni repository. + +Ci sono tante estensioni che consentono di arricchire Markdown, tuttavia vi consigliamo di guardare e fare pratica con la guida standard di Github, in particolare tenendo sempre sotto mano questo [comodissimo cheatsheet ufficiale di Github](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). diff --git a/docs/learning/mkdocs_tutorial/setup.en.md b/docs/learning/mkdocs_tutorial/setup.en.md new file mode 100644 index 0000000..2fc87e0 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/setup.en.md @@ -0,0 +1,72 @@ +--- +title: Setup +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +## Installation + +In this guide and tutorial we will mainly use `poetry` as a library manager, for several reasons that you can look at in our series: `Modern Python Development` and in our [python template called Bear](https://github.com/PythonBiellaGroup/Bear). + +In particular we remind you to: + +1. Install Poetry +2. Initialize a new project: `poetry init` or clone our `Bear` template. +3. Remember to add the `pyproject.toml` file with the `in-project = true` flag to create a new virtualenv `.venv` directly in the project folder. + +You can install MkDocs like any other Python library, but it is advisable to use a dependency manager such as PDM or Poetry. + +```shell +poetry add mkdocs +``` + +In addition to the basic installation of MkDocs, you can use various templates that enhance the configuration and initial layout of MkDocs. The library we prefer and recommend is MkDocs Material, which is among the most widely used and appreciated. We will explore some of the features it provides in this tutorial. + +```shell +poetry add mkdocs-material +``` + +With MkDocs, you have the option to enhance functionality with numerous interesting and highly useful extensions, providing a better user experience. + +## Initialization + +Once you have finished developing your code, you can run this command: + +```shell +poetry mkdocs new . +``` + +The result of this instruction is the creation of: + +- **docs folder**: In this folder, you can place all the Markdown files that will constitute the documentation. +- **mkdocs.yml**: It is the main configuration file of MkDocs where you set all the properties of the documentation site. + +## mkdocs.yml + +This file is the most important in MkDocs and provides all the information needed to create and customize the final site. + +Here are some of the main sections: + +| Section | Attributes | Description | +|-----------------------|----------------------------------------------------------|-----------------------------------------------| +| project information | site_name, site_url, author, site_description | Basic information for the site | +| repo information | repo_name, repo_url | It is possible to link the repository to the site, allowing visitors to view the source code | +| nav | -- | Defines the site's tree structure; it can be built on multiple levels | +| extra css | extra_css | It is possible to extend certain aspects of the site with custom CSS | +| theme | -- | Properties of the chosen theme; in our case, mkdocs-material | +| markdown_extensions | -- | Here we can specify the properties of our Markdown that will determine the layout of individual pages within the site | +| plugins | -- | In this section, we specify all the plugins we have installed with the options required for each | +| extra | analytics, social, consent, alternate | In this section, we can specify additional functionalities for our site, including: linking to Google Analytics, social links in the footer of the site, consent to use cookies, and a switcher for multilingual sites | + +## Run locally + +After compiling the mkdocs.yml file and creating the Markdown files inside the docs folder, you can check the final result locally by running: + +```shell +poetry run mkdocs serve +``` + +MkDocs will generate all artifacts in the **site** folder and make the site available at **http://127.0.0.1:8000/** + diff --git a/docs/learning/mkdocs_tutorial/setup.md b/docs/learning/mkdocs_tutorial/setup.md new file mode 100644 index 0000000..a6b92f7 --- /dev/null +++ b/docs/learning/mkdocs_tutorial/setup.md @@ -0,0 +1,73 @@ +--- +title: Setup +disquis: PythonBiellaGroup +timetoread: true +tags: + - mdkocs +--- + +## Installazione + +In questa guida e tutorial utilizzeremo principalmente `poetry` come gestore delle librerie, per diverse motivazioni che potete guardare nella nostra serie: `Modern Python Development` e nel nostro [template python chiamato Bear](https://github.com/PythonBiellaGroup/Bear). + +In particolare vi ricordiamo di: + +1. Installare Poetry +2. Inizializzare un nuovo progetto: `poetry init` oppure clonare il nostro template `Bear`. +3. Ricordarsi di aggiungere il file `pyproject.toml` con il flag `in-project = true` per creare un nuovo virtualenv `.venv` direttamente nella cartella di progetto. + +Puoi installare mkdocs come ogni altra libreria di python ma ovviamente il consiglio é di utilizzare un dependencies manager come pdm o poetry. + +```shell +poetry add mkdocs +``` + +Oltre all' installazione base di mkdocs puoi usare diversi template che vanno ad arricchire la configurazione e il layout iniziale di mkdocs. +La libreria che preferiamo e suggeriamo é [mkdocs material](https://squidfunk.github.io/mkdocs-material/) che é tra le più usate ed apprezzate. +Alcune delle features che mette a disposizione le vedremo in questo tutorial. + +```shell +poetry add mkdocs-material +``` + +Con mkdocs abbiamo la possibilità di ampliare le funzionalità con tantissime estensioni interessanti e molto utili che permettono di fornire una migliore esperienza d'uso all'utente. + +## Inizializzazione + +Una volta che avrai finito di sviluppare il tuo codice potrai lanciare questo comando + +```shell +poetry mkdocs new . +``` + +Il risultato di questa istruzione é la creazione di: + +- **cartella docs**: in questa folder potrai mettere tutti i markdown che andranno a costituire la documentazione. +- **mkdocs.yml**: é il file di configurazione principale di mkdocs in cui impostare tutte le proprietà del sito documentale. + +## mkdocs.yml + +Questo file é il più importante in mkdocs e fornisce tutte le informazioni per poter creare e personalizzare il sito finale. + +Ecco alcune delle sezioni principali: + +| Sezione | Attributi | Descrizione | +| ----------- | ------------------------------------ |-----------------| +| project information | site_name, site_url, author, site_description | informazioni di base per il sito | +| repo information | repo_name, repo_url | é possibile linkare la repository al sito in modo da poter permettere ai visitatori di visionare il codice sorgente | +| nav | -- | definisce l'alberatura del sito ed é possibile costruirla su più livelli | +| extra css | extra_css | é possibile estendere alcuni aspetti del sito con dei css custom| +| theme | -- | sono tutte le proprietà del tema scelto nel nostro caso mkdocs-material | +| markdown_extensions | -- | qui possiamo specificare le proprietà dei nostri markdown che di fatto andranno a determinare il layout delle singole pagine all'interno del sito| +| plugins | -- | in questa sezione andiamo a specificare tutti i plugin che abbiamo installato con le opzioni richieste da ciascuno| +| extra | analytics, social, consent, alternate | in questa sezione possiamo specificare funzionalità ulteriori per il nostro sito tra cui: collegamento a google analytics, social link nel footer del sito, consenso ad utilizzare cookie, switcher per siti multilingua| + +## Run in locale + +Quando avremo compilato il file mkdocs.yml e creato i markdown all'interno della cartella docs possiamo verificare in locale il risultato finale eseguendo: + +```shell +poetry run mkdocs serve +``` + +MkDocs genererà tutti gli artefatti all'interno della folder **site** e metterà a disposizione il sito all'indirizzo **http://127.0.0.1:8000/** \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 5176133..64fe7ce 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -13,496 +13,508 @@ edit_uri: edit/main/docs # Page tree nav: - - Home: - - index.md - - board.md - - community_history.md - - code_conduct.md - - tags.md - - Meetup: - - meetup/index.md - - meetup/next_meetup.md - - Meetup passati: - - ANTLR: - - meetup/archive/antlr/index.md - - Parser e ANTLR4: meetup/archive/antlr/antlr_1.md - - Dal parser all'interpreter: meetup/archive/antlr/antlr_2.md - - Parser, intepreter e compilatori: meetup/archive/antlr/antlr_3.md - - Airflow + PySpark: meetup/archive/airflow_pyspark.md - - Calcolo parallelo e distribuito: - - meetup/archive/distributed_compute/index.md - - Intro: meetup/archive/distributed_compute/distr_comp_1.md - - Comunicazione tra i processi: meetup/archive/distributed_compute/distr_comp_2.md - - Librerie python Dask, Modin e Celery: meetup/archive/distributed_compute/distr_comp_3.md - - Data versioning: meetup/archive/data_versioning.md - - Data Science - focus Pharma: meetup/archive/ds_pharma.md - - Debito tecnico e architectural smell: meetup/archive/technical_dept.md - - Django: - - meetup/archive/django/index.md - - Introduzione a Django: meetup/archive/django/django_1.md - - Modelli Django: meetup/archive/django/django_2.md - - Autenticazione Django e model form: meetup/archive/django/django_3.md - - Docker: - - meetup/archive/docker_track/index.md - - Intro Docker: meetup/archive/docker_track/docker_1.md - - Concetti avanzati: meetup/archive/docker_track/docker_2.md - - FastAPI: - - meetup/archive/fastapi/index.md - - Intro: meetup/archive/fastapi/fastapi_1.md - - Le prime API con approccio TDD: meetup/archive/fastapi/fastapi_2.md - - SQLModel: meetup/archive/fastapi/fastapi_3.md - - Back-end con FastAPI e SQLModel: meetup/archive/fastapi/fastapi_4.md - - Async, OAuth2, profiling e dockerizzazione: meetup/archive/fastapi/fastapi_5.md - - Flask: - - meetup/archive/flask/index.md - - Intro a Flask: meetup/archive/flask/flask_1.md - - Jinja avanzato e forms: meetup/archive/flask/flask_2.md - - Flask con database: meetup/archive/flask/flask_3.md - - Review: meetup/archive/flask/flask_4.md - - Evoluzioni dell' app: meetup/archive/flask/flask_5.md - - Blueprints, refactoring e test automatici: meetup/archive/flask/flask_6.md - - Autenticazione: meetup/archive/flask/flask_7.md - - Profili, ruoli e blog: meetup/archive/flask/flask_8.md - - Heroku e docker - deploy: meetup/archive/flask/flask_9.md - - Rest API: meetup/archive/flask/flask_10.md - - Genropy: - - meetup/archive/genropy/index.md - - Intro, demo e primi passi: meetup/archive/genropy/genropy_1.md - - Bag, Structure, ORM e inizio progetto: meetup/archive/genropy/genropy_2.md - - Risorse UI, lookup tables e formula columns: meetup/archive/genropy/genropy_3.md - - Altre risorse UI, import dati, tabelle gerarchiche, stampe, utenti, multi-tenant: meetup/archive/genropy/genropy_4.md - - Utenti, Staff e Donatori in ottica multi-tenant: meetup/archive/genropy/genropy_5.md - - Gestione delle eccezioni: meetup/archive/handle_except.md - - Gioco dell' Orso: - - meetup/archive/orso_game/index.md - - Parte 1: meetup/archive/orso_game/orso_game_1.md - - Parte 2: meetup/archive/orso_game/orso_game_2.md - - Git base: meetup/archive/git.md - - GitHub Actions: meetup/archive/github_actions.md - - GPT Detection system: meetup/archive/gpt_detection.md - - GraphQL e Strawberry: meetup/archive/graphql.md - - Introduzione al Machine Learning: - - meetup/archive/intro_ml/index.md - - Introduzione al Machine Learning e a Scikit-Learn: meetup/archive/intro_ml/intro_ml_1.md - - Scikit-Learn pipeline, metriche e regressione lineare: meetup/archive/intro_ml/intro_ml_2.md - - Scikit-Learn - unsupervised learning: meetup/archive/intro_ml/intro_ml_3.md - - Introduzione al Deep learning: - - meetup/archive/intro_dl/index.md - - Introduzione a Deep Learning e TensorFlow: meetup/archive/intro_dl/intro_dl_1.md - - Reti Neurali per le immagini: meetup/archive/intro_dl/intro_dl_2.md - - Reti Neurali Ricorrenti: meetup/archive/intro_dl/intro_dl_3.md - - Introduzione a Kubernetes: - - meetup/archive/intro_k8s/index.md - - Parte 1: meetup/archive/intro_k8s/intro_k8s_1.md - - Parte 2: meetup/archive/intro_k8s/intro_k8s_2.md - - Introduzione a Databricks: meetup/archive/intro_databricks.md - - Imparare Python giocando: - - meetup/archive/learn_python_with_game/index.md - - Le basi di Python: meetup/archive/learn_python_with_game/learn_game_1.md - - PyGameZero: meetup/archive/learn_python_with_game/learn_game_2.md - - Creazione giochi: meetup/archive/learn_python_with_game/learn_game_3.md - - Review e creazione di giochi complessi: meetup/archive/learn_python_with_game/learn_game_4.md - - Manipolazione del testo: - - meetup/archive/text_manipulation/index.md - - Intro espressioni regolari: meetup/archive/text_manipulation/text_1.md - - Libreria regex in python: meetup/archive/text_manipulation/text_2.md - - Pipeline di analisi testo e Spacy: meetup/archive/text_manipulation/text_3.md - - Un progetto di analisi e classificazione di testi con ML: meetup/archive/text_manipulation/text_4.md - - Modern data engineering: - - meetup/archive/modern_data_eng/index.md - - Stato dell'arte e Apache Airflow: meetup/archive/modern_data_eng/modern_de_1.md - - Progetto: meetup/archive/modern_data_eng/modern_de_2.md - - Modern python development: - - meetup/archive/modern_python/index.md - - Strumenti, librerie, buone pratiche per sviluppare in Python: meetup/archive/modern_python/modern_python_1.md - - Poetry, PDM, Ruff e altri strumenti utili: meetup/archive/modern_python/modern_python_2.md - - MLOps: - - meetup/archive/mlops_aws/index.md - - Introduzione MLOps: meetup/archive/mlops_aws/mlops_aws_1.md - - MLOps su AWS: meetup/archive/mlops_aws/mlops_aws_2.md - - ML Pipeline: - - meetup/archive/ml_pipeline/index.md - - Introduzione a Pytorch: meetup/archive/ml_pipeline/ml_pipeline_1.md - - Introduzione a Hydra: meetup/archive/ml_pipeline/ml_pipeline_2.md - - NLP - topic modeling: meetup/archive/nlp_topic_modeling.md - - NVIDIA Triton: meetup/archive/nvidia_triton.md - - Open Source: - - meetup/archive/open_source/index.md - - Primo incontro - Marcelo Trylesinski: meetup/archive/open_source/open_source_1.md - - Secondo incontro - Patrick Arminio: meetup/archive/open_source/open_source_2.md - - Terzo incontro - Juliana Nicacio: meetup/archive/open_source/open_source_3.md - - Quarto incontro - Giovanni Barillari: meetup/archive/open_source/open_source_4.md - - Pandas base: - - meetup/archive/pandas/index.md - - Intro e modulo csv: meetup/archive/pandas/pandas_1.md - - Operazioni con i dataframe: meetup/archive/pandas/pandas_2.md - - Serie ed esercitazioni: meetup/archive/pandas/pandas_3.md - - Live coding ed approfondimenti: meetup/archive/pandas/pandas_4.md - - Approfondimenti, indexing, filtri, multiIndexing: meetup/archive/pandas/pandas_5.md - - Percorso dati: - - meetup/archive/data_track/index.md - - Pandas - manipolazione dei dati: meetup/archive/data_track/data_track_1.md - - Strumenti per la visualizzazione dei dati: meetup/archive/data_track/data_track_2.md - - Strumenti per l'ingegnerizzazione dei dati: meetup/archive/data_track/data_track_3.md - - Strumenti per il passaggio in produzione: meetup/archive/data_track/data_track_4.md - - Pygame: - - meetup/archive/pygame/index.md - - Intro a pygame: meetup/archive/pygame/pygame_1.md - - Sprites, collisioni e simulazioni: meetup/archive/pygame/pygame_2.md - - Animazioni, camera e gravità: meetup/archive/pygame/pygame_3.md - - Python base: - - meetup/archive/python_base/index.md - - Concetti di base e tipi primitivi: meetup/archive/python_base/python_base_1.md - - Controlli di flusso, iterazioni e funzioni: meetup/archive/python_base/python_base_2.md - - OOP base: meetup/archive/python_base/python_base_3.md - - OOP avanzato: meetup/archive/python_base/python_base_4.md - - Reinforcement learning - DIAMBRA: - - meetup/archive/reinforcement_learning/index.md - - Concetti teorici e costruzione ambiente: meetup/archive/reinforcement_learning/rl_1.md - - Sessione pratica e coding: meetup/archive/reinforcement_learning/rl_2.md - - Robotic Process Automation: meetup/archive/rpa.md - - Squirrel Telegram Bot: meetup/archive/telegram_bot_squirrel.md - - Telegram Bot: meetup/archive/telegram_bot.md - - Tensorflow serving: meetup/archive/tensorflow_serving.md - - Testare e documentare i dati: meetup/archive/data_testing.md - - Testing con python: - - meetup/archive/testing_python/index.md - - Testing - Intro: meetup/archive/testing_python/testing_1.md - - Testing - Pytest e unittest: meetup/archive/testing_python/testing_2.md - - Testing - Doctest e behave: meetup/archive/testing_python/testing_3.md - - Twitter sentiment analysis: meetup/archive/sentiment_analysis.md - - Web scraping: - - meetup/archive/web_scraping/index.md - - Beautiful soup e requests: meetup/archive/web_scraping/web_scraping_1.md - - Selenium e Scrapy: meetup/archive/web_scraping/web_scraping_2.md - - XGBoost: meetup/archive/xgboost.md - - Learning: - - learning/index.md - - Better code: - - learning/better_code/index.md - - Bandit: learning/better_code/bandit/index.md - - Black: learning/better_code/black/index.md - - Flake8: learning/better_code/flake8/index.md - - Mypy: learning/better_code/mypy/index.md - - Pydantic: learning/better_code/pydantic/index.md - - Ruff: learning/better_code/ruff/index.md - - Creare un pacchetto: - - learning/create_package/index.md - - Data analysis: - - learning/data_analysis/index.md - - DuckDB: learning/data_analysis/duckdb/index.md - - Numpy: learning/data_analysis/numpy/index.md - - Pandas: learning/data_analysis/pandas/index.md - - Polars: learning/data_analysis/polars/index.md - - Documentare il codice: - - learning/document_code/index.md - - Linux base: - - learning/linux_base/index.md - - Gestire dipendenze: - - learning/manage_dependencies/index.md - - Anaconda: learning/manage_dependencies/anaconda/index.md - - PDM: learning/manage_dependencies/pdm/index.md - - Pipx: learning/manage_dependencies/pipx/index.md - - Poetry: learning/manage_dependencies/poetry/index.md - - Poetry avanzato: learning/manage_dependencies/poetry/advance.md - - Pyenv: learning/manage_dependencies/pyenv/index.md - - Virtualenv: learning/manage_dependencies/virtualenv/index.md - - Materiale extra: learning/material/index.md - - Pre-commit: learning/pre-commit/index.md - - Struttura di progetto: - - learning/project_structure/index.md - - Bear: learning/project_structure/bear/index.md - - Python base: - - learning/python_base/index.md - - Perchè Python: learning/python_base/why_python/index.md - - Python avanzato: - - learning/python_advanced/index.md - - Gestire diverse versioni di python: - - learning/python_version/index.md - - ASDF: learning/python_version/asdf/index.md - - REPL: learning/python_version/repl/index.md - - Roadmap: - - learning/roadmap/index.md - - Gestione delle configurazioni: - - learning/settings_management/index.md - - Indipendenza tecnologica: - - learning/tech_independence/index.md - - Testing: - - learning/testing_python/index.md - - Tutorial: - - learning/testing_python/tutorial/index.md - - learning/testing_python/tutorial/intro.md - - learning/testing_python/tutorial/test.md - - learning/testing_python/tutorial/tipi.md - - learning/testing_python/tutorial/pratiche.md - - learning/testing_python/tutorial/unittest.md - - learning/testing_python/tutorial/pytest.md - - learning/testing_python/tutorial/doctest.md - - learning/testing_python/tutorial/behave.md - - Risorse: - - learning/testing_python/resources/index.md - - learning/testing_python/resources/letteratura.md - - learning/testing_python/resources/software.md - - learning/testing_python/resources/snippet.md - - learning/testing_python/resources/talk.md - - VS Code: learning/vscode/index.md - - Supporters: - - supporters/index.md - - Speakers: - - speakers/index.md - - Guida speaker: speakers/speaker_guide.md + - Home: + - index.md + - board.md + - community_history.md + - code_conduct.md + - tags.md + - Meetup: + - meetup/index.md + - meetup/next_meetup.md + - Meetup passati: + - ANTLR: + - meetup/archive/antlr/index.md + - Parser e ANTLR4: meetup/archive/antlr/antlr_1.md + - Dal parser all'interpreter: meetup/archive/antlr/antlr_2.md + - Parser, intepreter e compilatori: meetup/archive/antlr/antlr_3.md + - Airflow + PySpark: meetup/archive/airflow_pyspark.md + - Calcolo parallelo e distribuito: + - meetup/archive/distributed_compute/index.md + - Intro: meetup/archive/distributed_compute/distr_comp_1.md + - Comunicazione tra i processi: meetup/archive/distributed_compute/distr_comp_2.md + - Librerie python Dask, Modin e Celery: meetup/archive/distributed_compute/distr_comp_3.md + - Data versioning: meetup/archive/data_versioning.md + - Data Science - focus Pharma: meetup/archive/ds_pharma.md + - Debito tecnico e architectural smell: meetup/archive/technical_dept.md + - Django: + - meetup/archive/django/index.md + - Introduzione a Django: meetup/archive/django/django_1.md + - Modelli Django: meetup/archive/django/django_2.md + - Autenticazione Django e model form: meetup/archive/django/django_3.md + - Docker: + - meetup/archive/docker_track/index.md + - Intro Docker: meetup/archive/docker_track/docker_1.md + - Concetti avanzati: meetup/archive/docker_track/docker_2.md + - FastAPI: + - meetup/archive/fastapi/index.md + - Intro: meetup/archive/fastapi/fastapi_1.md + - Le prime API con approccio TDD: meetup/archive/fastapi/fastapi_2.md + - SQLModel: meetup/archive/fastapi/fastapi_3.md + - Back-end con FastAPI e SQLModel: meetup/archive/fastapi/fastapi_4.md + - Async, OAuth2, profiling e dockerizzazione: meetup/archive/fastapi/fastapi_5.md + - Flask: + - meetup/archive/flask/index.md + - Intro a Flask: meetup/archive/flask/flask_1.md + - Jinja avanzato e forms: meetup/archive/flask/flask_2.md + - Flask con database: meetup/archive/flask/flask_3.md + - Review: meetup/archive/flask/flask_4.md + - Evoluzioni dell' app: meetup/archive/flask/flask_5.md + - Blueprints, refactoring e test automatici: meetup/archive/flask/flask_6.md + - Autenticazione: meetup/archive/flask/flask_7.md + - Profili, ruoli e blog: meetup/archive/flask/flask_8.md + - Heroku e docker - deploy: meetup/archive/flask/flask_9.md + - Rest API: meetup/archive/flask/flask_10.md + - Genropy: + - meetup/archive/genropy/index.md + - Intro, demo e primi passi: meetup/archive/genropy/genropy_1.md + - Bag, Structure, ORM e inizio progetto: meetup/archive/genropy/genropy_2.md + - Risorse UI, lookup tables e formula columns: meetup/archive/genropy/genropy_3.md + - Altre risorse UI, import dati, tabelle gerarchiche, stampe, utenti, multi-tenant: meetup/archive/genropy/genropy_4.md + - Utenti, Staff e Donatori in ottica multi-tenant: meetup/archive/genropy/genropy_5.md + - Gestione delle eccezioni: meetup/archive/handle_except.md + - Gioco dell' Orso: + - meetup/archive/orso_game/index.md + - Parte 1: meetup/archive/orso_game/orso_game_1.md + - Parte 2: meetup/archive/orso_game/orso_game_2.md + - Git base: meetup/archive/git.md + - GitHub Actions: meetup/archive/github_actions.md + - GPT Detection system: meetup/archive/gpt_detection.md + - GraphQL e Strawberry: meetup/archive/graphql.md + - Introduzione al Machine Learning: + - meetup/archive/intro_ml/index.md + - Introduzione al Machine Learning e a Scikit-Learn: meetup/archive/intro_ml/intro_ml_1.md + - Scikit-Learn pipeline, metriche e regressione lineare: meetup/archive/intro_ml/intro_ml_2.md + - Scikit-Learn - unsupervised learning: meetup/archive/intro_ml/intro_ml_3.md + - Introduzione al Deep learning: + - meetup/archive/intro_dl/index.md + - Introduzione a Deep Learning e TensorFlow: meetup/archive/intro_dl/intro_dl_1.md + - Reti Neurali per le immagini: meetup/archive/intro_dl/intro_dl_2.md + - Reti Neurali Ricorrenti: meetup/archive/intro_dl/intro_dl_3.md + - Introduzione a Kubernetes: + - meetup/archive/intro_k8s/index.md + - Parte 1: meetup/archive/intro_k8s/intro_k8s_1.md + - Parte 2: meetup/archive/intro_k8s/intro_k8s_2.md + - Introduzione a Databricks: meetup/archive/intro_databricks.md + - Imparare Python giocando: + - meetup/archive/learn_python_with_game/index.md + - Le basi di Python: meetup/archive/learn_python_with_game/learn_game_1.md + - PyGameZero: meetup/archive/learn_python_with_game/learn_game_2.md + - Creazione giochi: meetup/archive/learn_python_with_game/learn_game_3.md + - Review e creazione di giochi complessi: meetup/archive/learn_python_with_game/learn_game_4.md + - Manipolazione del testo: + - meetup/archive/text_manipulation/index.md + - Intro espressioni regolari: meetup/archive/text_manipulation/text_1.md + - Libreria regex in python: meetup/archive/text_manipulation/text_2.md + - Pipeline di analisi testo e Spacy: meetup/archive/text_manipulation/text_3.md + - Un progetto di analisi e classificazione di testi con ML: meetup/archive/text_manipulation/text_4.md + - Modern data engineering: + - meetup/archive/modern_data_eng/index.md + - Stato dell'arte e Apache Airflow: meetup/archive/modern_data_eng/modern_de_1.md + - Progetto: meetup/archive/modern_data_eng/modern_de_2.md + - Modern python development: + - meetup/archive/modern_python/index.md + - Strumenti, librerie, buone pratiche per sviluppare in Python: meetup/archive/modern_python/modern_python_1.md + - Poetry, PDM, Ruff e altri strumenti utili: meetup/archive/modern_python/modern_python_2.md + - MLOps: + - meetup/archive/mlops_aws/index.md + - Introduzione MLOps: meetup/archive/mlops_aws/mlops_aws_1.md + - MLOps su AWS: meetup/archive/mlops_aws/mlops_aws_2.md + - ML Pipeline: + - meetup/archive/ml_pipeline/index.md + - Introduzione a Pytorch: meetup/archive/ml_pipeline/ml_pipeline_1.md + - Introduzione a Hydra: meetup/archive/ml_pipeline/ml_pipeline_2.md + - NLP - topic modeling: meetup/archive/nlp_topic_modeling.md + - NVIDIA Triton: meetup/archive/nvidia_triton.md + - Open Source: + - meetup/archive/open_source/index.md + - Primo incontro - Marcelo Trylesinski: meetup/archive/open_source/open_source_1.md + - Secondo incontro - Patrick Arminio: meetup/archive/open_source/open_source_2.md + - Terzo incontro - Juliana Nicacio: meetup/archive/open_source/open_source_3.md + - Quarto incontro - Giovanni Barillari: meetup/archive/open_source/open_source_4.md + - Pandas base: + - meetup/archive/pandas/index.md + - Intro e modulo csv: meetup/archive/pandas/pandas_1.md + - Operazioni con i dataframe: meetup/archive/pandas/pandas_2.md + - Serie ed esercitazioni: meetup/archive/pandas/pandas_3.md + - Live coding ed approfondimenti: meetup/archive/pandas/pandas_4.md + - Approfondimenti, indexing, filtri, multiIndexing: meetup/archive/pandas/pandas_5.md + - Percorso dati: + - meetup/archive/data_track/index.md + - Pandas - manipolazione dei dati: meetup/archive/data_track/data_track_1.md + - Strumenti per la visualizzazione dei dati: meetup/archive/data_track/data_track_2.md + - Strumenti per l'ingegnerizzazione dei dati: meetup/archive/data_track/data_track_3.md + - Strumenti per il passaggio in produzione: meetup/archive/data_track/data_track_4.md + - Pygame: + - meetup/archive/pygame/index.md + - Intro a pygame: meetup/archive/pygame/pygame_1.md + - Sprites, collisioni e simulazioni: meetup/archive/pygame/pygame_2.md + - Animazioni, camera e gravità: meetup/archive/pygame/pygame_3.md + - Python base: + - meetup/archive/python_base/index.md + - Concetti di base e tipi primitivi: meetup/archive/python_base/python_base_1.md + - Controlli di flusso, iterazioni e funzioni: meetup/archive/python_base/python_base_2.md + - OOP base: meetup/archive/python_base/python_base_3.md + - OOP avanzato: meetup/archive/python_base/python_base_4.md + - Reinforcement learning - DIAMBRA: + - meetup/archive/reinforcement_learning/index.md + - Concetti teorici e costruzione ambiente: meetup/archive/reinforcement_learning/rl_1.md + - Sessione pratica e coding: meetup/archive/reinforcement_learning/rl_2.md + - Robotic Process Automation: meetup/archive/rpa.md + - Squirrel Telegram Bot: meetup/archive/telegram_bot_squirrel.md + - Telegram Bot: meetup/archive/telegram_bot.md + - Tensorflow serving: meetup/archive/tensorflow_serving.md + - Testare e documentare i dati: meetup/archive/data_testing.md + - Testing con python: + - meetup/archive/testing_python/index.md + - Testing - Intro: meetup/archive/testing_python/testing_1.md + - Testing - Pytest e unittest: meetup/archive/testing_python/testing_2.md + - Testing - Doctest e behave: meetup/archive/testing_python/testing_3.md + - Twitter sentiment analysis: meetup/archive/sentiment_analysis.md + - Web scraping: + - meetup/archive/web_scraping/index.md + - Beautiful soup e requests: meetup/archive/web_scraping/web_scraping_1.md + - Selenium e Scrapy: meetup/archive/web_scraping/web_scraping_2.md + - XGBoost: meetup/archive/xgboost.md + - Learning: + - learning/index.md + - Better code: + - learning/better_code/index.md + - Bandit: learning/better_code/bandit/index.md + - Black: learning/better_code/black/index.md + - Flake8: learning/better_code/flake8/index.md + - Mypy: learning/better_code/mypy/index.md + - Pydantic: learning/better_code/pydantic/index.md + - Ruff: learning/better_code/ruff/index.md + - Creare un pacchetto: + - learning/create_package/index.md + - Data analysis: + - learning/data_analysis/index.md + - DuckDB: learning/data_analysis/duckdb/index.md + - Numpy: learning/data_analysis/numpy/index.md + - Pandas: learning/data_analysis/pandas/index.md + - Polars: learning/data_analysis/polars/index.md + - Documentare il codice: + - learning/document_code/index.md + - Linux base: + - learning/linux_base/index.md + - Gestire dipendenze: + - learning/manage_dependencies/index.md + - Anaconda: learning/manage_dependencies/anaconda/index.md + - PDM: learning/manage_dependencies/pdm/index.md + - Pipx: learning/manage_dependencies/pipx/index.md + - Poetry: learning/manage_dependencies/poetry/index.md + - Poetry avanzato: learning/manage_dependencies/poetry/advance.md + - Pyenv: learning/manage_dependencies/pyenv/index.md + - Virtualenv: learning/manage_dependencies/virtualenv/index.md + - Materiale extra: learning/material/index.md + - MkDocs tutorial: + - learning/mkdocs_tutorial/index.md + - Setup: learning/mkdocs_tutorial/setup.md + - Documentare il codice: learning/document_code.md + - Funzionalità extra: learning/extra_functions.md + - Deploy: + - learning/mkdocs_tutorial/deploy.md + - Github pages: learning/mkdocs_tutorial/github_pages.md + - Estensioni: learning/mkdocs_tutorial/extensions.md + - Pre-commit: learning/pre-commit/index.md + - Struttura di progetto: + - learning/project_structure/index.md + - Bear: learning/project_structure/bear/index.md + - Python base: + - learning/python_base/index.md + - Perchè Python: learning/python_base/why_python/index.md + - Python avanzato: + - learning/python_advanced/index.md + - Gestire diverse versioni di python: + - learning/python_version/index.md + - ASDF: learning/python_version/asdf/index.md + - REPL: learning/python_version/repl/index.md + - Roadmap: + - learning/roadmap/index.md + - Gestione delle configurazioni: + - learning/settings_management/index.md + - Indipendenza tecnologica: + - learning/tech_independence/index.md + - Testing: + - learning/testing_python/index.md + - Tutorial: + - learning/testing_python/tutorial/index.md + - learning/testing_python/tutorial/intro.md + - learning/testing_python/tutorial/test.md + - learning/testing_python/tutorial/tipi.md + - learning/testing_python/tutorial/pratiche.md + - learning/testing_python/tutorial/unittest.md + - learning/testing_python/tutorial/pytest.md + - learning/testing_python/tutorial/doctest.md + - learning/testing_python/tutorial/behave.md + - Risorse: + - learning/testing_python/resources/index.md + - learning/testing_python/resources/letteratura.md + - learning/testing_python/resources/software.md + - learning/testing_python/resources/snippet.md + - learning/testing_python/resources/talk.md + - VS Code: learning/vscode/index.md + - Supporters: + - supporters/index.md + - Speakers: + - speakers/index.md + - Guida speaker: speakers/speaker_guide.md extra_css: - - style/neoteroi-mkdocs.css + - style/neoteroi-mkdocs.css # Configuration theme: - name: material - docs_dir: docs - site_dir: site - extra_css: - - style/custom.css - extra_javascript: - - https://polyfill.io/v3/polyfill.min.js?features=es6 - - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js - include_search_page: false - search_index_only: true - features: - - announce.dismiss - - content.action.edit - - content.action.view - - content.code.annotate - - content.code.copy - - content.tooltips - - header.autohide - - navigation.footer - - navigation.indexes - - navigation.top - - navigation.tracking - - navigation.path - - navigation.tabs - - navigation.tabs.sticky - - search.suggest - - search.highlight - - search.share - - toc.follow + name: material + docs_dir: docs + site_dir: site + extra_css: + - style/custom.css + extra_javascript: + - https://polyfill.io/v3/polyfill.min.js?features=es6 + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js + include_search_page: false + search_index_only: true + features: + - announce.dismiss + - content.action.edit + - content.action.view + - content.code.annotate + - content.code.copy + - content.tooltips + - header.autohide + - navigation.footer + - navigation.indexes + - navigation.top + - navigation.tracking + - navigation.path + - navigation.tabs + - navigation.tabs.sticky + - search.suggest + - search.highlight + - search.share + - toc.follow - logo: static/images/logo/PBG_logo_W_2@300x.png - favicon: static/images/favicon.ico - font: - text: Helvetica - code: Roboto mono - palette: + logo: static/images/logo/PBG_logo_W_2@300x.png + favicon: static/images/favicon.ico + font: + text: Helvetica + code: Roboto mono + palette: # Light mode - - scheme: default - primary: black - accent: black - toggle: - icon: material/toggle-switch - name: Switch to dark mode + - scheme: default + primary: black + accent: black + toggle: + icon: material/toggle-switch + name: + Switch to dark mode # Dark mode - - scheme: slate - primary: white - accent: white - toggle: - icon: material/toggle-switch-off-outline - name: Switch to light mode + - scheme: slate + primary: white + accent: white + toggle: + icon: material/toggle-switch-off-outline + name: Switch to light mode # Markdown extensions markdown_extensions: - - abbr - - admonition - - attr_list - - codehilite - - def_list - - neoteroi.cards - - neoteroi.timeline - - footnotes - - meta - - md_in_html - - toc: - title: On this page - permalink: true - permalink_title: Anchor link to this section for reference - - pymdownx.arithmatex: - generic: true - - pymdownx.betterem: - smart_enable: all - - pymdownx.caret - - pymdownx.superfences - - pymdownx.details - - pymdownx.highlight: - anchor_linenums: true - line_spans: __span - pygments_lang_class: true - - pymdownx.inlinehilite - - pymdownx.keys - - pymdownx.magiclink: - repo_url_shorthand: true - user: pythonbiellagroup - repo: website - - pymdownx.mark - - pymdownx.smartsymbols - - pymdownx.tabbed: - alternate_style: true - - pymdownx.tasklist: - custom_checkbox: true - - pymdownx.tilde + - abbr + - admonition + - attr_list + - codehilite + - def_list + - neoteroi.cards + - neoteroi.timeline + - footnotes + - meta + - md_in_html + - toc: + title: On this page + permalink: true + permalink_title: Anchor link to this section for reference + - pymdownx.arithmatex: + generic: true + - pymdownx.betterem: + smart_enable: all + - pymdownx.caret + - pymdownx.superfences + - pymdownx.details + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.magiclink: + repo_url_shorthand: true + user: pythonbiellagroup + repo: website + - pymdownx.mark + - pymdownx.smartsymbols + - pymdownx.tabbed: + alternate_style: true + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.tilde plugins: - - macros - - timetoread: - allPages: false - - minify: - minify_html: true - minify_js: true - minify_css: true - htmlmin_opts: - remove_comments: true - - tags: - tags_file: tags.md - - search: - separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' - - i18n: - docs_structure: suffix - fallback_to_default: true - reconfigure_material: true - reconfigure_search: true - languages: - - locale: it - name: Italian - build: true - default: true - site_name: PythonBiellaGroup - site_description: PythonBiellaGroup sito ufficiale che contiene tutte le guide, informazioni, materiale e risorse per la community. - - locale: en - name: English - build: true - default: false - site_name: PythonBiellaGroup - site_description: PythonBiellaGroup official website with all the guides, information, materials, and resource for the community. - nav_translations: - Guida speaker: Speaker guide - Meetup passati: Previous meetup - Parser e ANTLR4: Parser and ANTLR4 - Dal parser all'interpreter: From parser to interpreter - Parser, intepreter e compilatori: Parser, intepreter and compiler - Calcolo parallelo e distribuito: Parallel and distributed computing - Comunicazione tra i processi: Communication between processes - Librerie python Dask, Modin e Celery: Dask, Modin and Celery libraries - Debito tecnico e architectural smell: Technical debt and architectural smell - Introduzione a Django: Introduction to Django - Modelli Django: Django models - Autenticazione Django e model form: Django authentication and model form - Concetti avanzati: Advanced concepts - Le prime API con approccio TDD: First API with TDD approach - Back-end con FastAPI e SQLModel: Back-end with FastAPI and SQLModel - Async, OAuth2, profiling e dockerizzazione: Async, OAuth2, profiling and dockerization - Intro a Flask: Intro to Flask - Jinja avanzato e forms: Advanced Jinja and forms - Flask con database: Flask with database - Evoluzioni dell' app: App evolution - Blueprints, refactoring e test automatici: Blueprints, refactoring and automated testing - Autenticazione: Authentication - Profili, ruoli e blog: Profiles, roles and blog - Heroku e docker - deploy: Heroku and docker - deploy - Intro, demo e primi passi: Introduction, demo, and first steps - Bag, Structure, ORM e inizio progetto: Bag, Structure, ORM, and project start - Risorse UI, lookup tables e formula columns: UI resources, lookup tables, and formula columns - Altre risorse UI, import dati, tabelle gerarchiche, stampe, utenti, multi-tenant: Other UI resources, data import, hierarchical tables,printing, - users, multi-tenancy - Utenti, Staff e Donatori in ottica multi-tenant: Users, Staff, and Donors in a multi-tenant perspective - Gestione delle eccezioni: Exception handling - Gioco dell' Orso: Bear and hunters game - Creare un package in python: Create a python package - Parte 1: Part 1 - Parte 2: Part 2 - Git base: Git basics - GraphQL e Strawberry: GraphQL and Strawberry - Introduzione al Machine Learning: Introduction to Machine Learning - Introduzione al Machine Learning e a Scikit-Learn: Introduction to Machine Learning and Scikit-Learn - Scikit-Learn pipeline, metriche e regressione lineare: Scikit-Learn pipeline, metrics, and linear regression - Introduzione al Deep learning: Introduction to Deep Learning - Introduzione a Deep Learning e TensorFlow: Introduction to Deep Learning and TensorFlow - Reti Neurali per le immagini: Neural Networks for images - Reti Neurali Ricorrenti: Recurrent Neural Networks - Introduzione a Kubernetes: Introduction to Kubernetes - Introduzione a Databricks: Introduction to Databricks - Imparare Python giocando: Learning Python through games - Le basi di Python: Python basics - Creazione giochi: Creating games - Review e creazione di giochi complessi: Review and creation of complex games - Manipolazione del testo: Text manipulation - Intro espressioni regolari: Introduction to regular expressions - Libreria regex in python: Regex library in Python - Pipeline di analisi testo e Spacy: Text analysis pipeline and Spacy - Un progetto di analisi e classificazione di testi con ML: A text analysis and classification project with ML - Stato dell'arte e Apache Airflow: State of the art and Apache Airflow - Progetto: Project - Strumenti, librerie, buone pratiche per sviluppare in Python: Tools, libraries, best practices for Python development - Poetry, PDM, Ruff e altri strumenti utili: Poetry, PDM, Ruff, and other useful tools - Introduzione MLOps: Introduction to MLOps - MLOps su AWS: MLOps on AWS - Introduzione a Pytorch: Introduction to Pytorch - Introduzione a Hydra: Introduction to Hydra - Pandas base: Pandas basics - Intro e modulo csv: Introduction and csv module - Operazioni con i dataframe: Operations with dataframes - Serie ed esercitazioni: Series and exercises - Live coding ed approfondimenti: Live coding and in-depth discussions - Approfondimenti, indexing, filtri, multiIndexing: In-depth, indexing, filters, multiIndexing - Percorso dati: Data analysis learning path - Pandas - manipolazione dei dati: Pandas - data manipulation - Strumenti per la visualizzazione dei dati: Tools for data visualization - Strumenti per l'ingegnerizzazione dei dati: Tools for data engineering - Strumenti per il passaggio in produzione: Tools for production deployment - Intro a pygame: Introduction to pygame - Sprites, collisioni e simulazioni: Sprites, collisions, and simulations - Animazioni, camera e gravità: Animations, camera, and gravity - Concetti di base e tipi primitivi: Basic concepts and primitive types - Controlli di flusso, iterazioni e funzioni: Flow control, iterations, and functions - OOP base: Basic OOP - OOP avanzato: Advanced OOP - Concetti teorici e costruzione ambiente: Theoretical concepts and environment setup - Sessione pratica e coding: Practical session and coding - Testare e documentare i dati: Testing and documenting data - Beautiful soup e requests: Beautiful Soup and Requests - Selenium e Scrapy: Selenium and Scrapy - Articoli: Articles - Primo incontro - Marcelo Trylesinski: First interview - Marcelo Trylesinski - Secondo incontro - Patrick Arminio: Second interview - Patrick Arminio - Terzo incontro - Juliana Nicacio: Third interview - Juliana Nicacio - Quarto incontro - Giovanni Barillari: Fourth interview - Giovanni Barillari - Percorsi di apprendimento: Learning path - Testing con python: Testing with python - Introduzione: Introduction - L'aspetto di un test: What a test looks like - Categorie, granularità, livelli e tipi di test: Categories, granularity, levels and types of tests - Buone pratiche per scrivere test di qualità: Good practices for writing tests - Il test framework unittest: Using the unittest framework - Utilizzare Pytest: Using pytest - Test semplici con doctest: Simple tests with doctest - Test BDD con Behave: BDD tests with Behave - Letteratura: Bibliography - Testing - Pytest e unittest: Testing - Pytest and unittest - Testing - Doctest e behave: Testing - Doctest and behave + - macros + - timetoread: + allPages: false + - minify: + minify_html: true + minify_js: true + minify_css: true + htmlmin_opts: + remove_comments: true + - tags: + tags_file: tags.md + - search: + separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' + - i18n: + docs_structure: suffix + fallback_to_default: true + reconfigure_material: true + reconfigure_search: true + languages: + - locale: it + name: Italian + build: true + default: true + site_name: PythonBiellaGroup + site_description: PythonBiellaGroup sito ufficiale che contiene tutte le guide, informazioni, materiale e risorse per la community. + - locale: en + name: English + build: true + default: false + site_name: PythonBiellaGroup + site_description: PythonBiellaGroup official website with all the guides, information, materials, and resource for the community. + nav_translations: + Guida speaker: Speaker guide + Meetup passati: Previous meetup + Parser e ANTLR4: Parser and ANTLR4 + Dal parser all'interpreter: From parser to interpreter + Parser, intepreter e compilatori: Parser, intepreter and compiler + Calcolo parallelo e distribuito: Parallel and distributed computing + Comunicazione tra i processi: Communication between processes + Librerie python Dask, Modin e Celery: Dask, Modin and Celery libraries + Debito tecnico e architectural smell: Technical debt and architectural smell + Introduzione a Django: Introduction to Django + Modelli Django: Django models + Autenticazione Django e model form: Django authentication and model form + Concetti avanzati: Advanced concepts + Le prime API con approccio TDD: First API with TDD approach + Back-end con FastAPI e SQLModel: Back-end with FastAPI and SQLModel + Async, OAuth2, profiling e dockerizzazione: Async, OAuth2, profiling and dockerization + Intro a Flask: Intro to Flask + Jinja avanzato e forms: Advanced Jinja and forms + Flask con database: Flask with database + Evoluzioni dell' app: App evolution + Blueprints, refactoring e test automatici: Blueprints, refactoring and automated testing + Autenticazione: Authentication + Profili, ruoli e blog: Profiles, roles and blog + Heroku e docker - deploy: Heroku and docker - deploy + Intro, demo e primi passi: Introduction, demo, and first steps + Bag, Structure, ORM e inizio progetto: Bag, Structure, ORM, and project start + Risorse UI, lookup tables e formula columns: UI resources, lookup tables, and formula columns + ? Altre risorse UI, import dati, tabelle gerarchiche, stampe, utenti, multi-tenant + : Other UI resources, data import, hierarchical tables,printing, + users, multi-tenancy + Utenti, Staff e Donatori in ottica multi-tenant: Users, Staff, and Donors in a multi-tenant perspective + Gestione delle eccezioni: Exception handling + Gioco dell' Orso: Bear and hunters game + Creare un package in python: Create a python package + Parte 1: Part 1 + Parte 2: Part 2 + Git base: Git basics + GraphQL e Strawberry: GraphQL and Strawberry + Introduzione al Machine Learning: Introduction to Machine Learning + Introduzione al Machine Learning e a Scikit-Learn: Introduction to Machine Learning and Scikit-Learn + Scikit-Learn pipeline, metriche e regressione lineare: Scikit-Learn pipeline, metrics, and linear regression + Introduzione al Deep learning: Introduction to Deep Learning + Introduzione a Deep Learning e TensorFlow: Introduction to Deep Learning and TensorFlow + Reti Neurali per le immagini: Neural Networks for images + Reti Neurali Ricorrenti: Recurrent Neural Networks + Introduzione a Kubernetes: Introduction to Kubernetes + Introduzione a Databricks: Introduction to Databricks + Imparare Python giocando: Learning Python through games + Le basi di Python: Python basics + Creazione giochi: Creating games + Review e creazione di giochi complessi: Review and creation of complex games + Manipolazione del testo: Text manipulation + Intro espressioni regolari: Introduction to regular expressions + Libreria regex in python: Regex library in Python + Pipeline di analisi testo e Spacy: Text analysis pipeline and Spacy + Un progetto di analisi e classificazione di testi con ML: A text analysis and classification project with ML + Stato dell'arte e Apache Airflow: State of the art and Apache Airflow + Progetto: Project + Strumenti, librerie, buone pratiche per sviluppare in Python: Tools, libraries, best practices for Python development + Poetry, PDM, Ruff e altri strumenti utili: Poetry, PDM, Ruff, and other useful tools + Introduzione MLOps: Introduction to MLOps + MLOps su AWS: MLOps on AWS + Introduzione a Pytorch: Introduction to Pytorch + Introduzione a Hydra: Introduction to Hydra + Pandas base: Pandas basics + Intro e modulo csv: Introduction and csv module + Operazioni con i dataframe: Operations with dataframes + Serie ed esercitazioni: Series and exercises + Live coding ed approfondimenti: Live coding and in-depth discussions + Approfondimenti, indexing, filtri, multiIndexing: In-depth, indexing, filters, multiIndexing + Percorso dati: Data analysis learning path + Pandas - manipolazione dei dati: Pandas - data manipulation + Strumenti per la visualizzazione dei dati: Tools for data visualization + Strumenti per l'ingegnerizzazione dei dati: Tools for data engineering + Strumenti per il passaggio in produzione: Tools for production deployment + Intro a pygame: Introduction to pygame + Sprites, collisioni e simulazioni: Sprites, collisions, and simulations + Animazioni, camera e gravità: Animations, camera, and gravity + Concetti di base e tipi primitivi: Basic concepts and primitive types + Controlli di flusso, iterazioni e funzioni: Flow control, iterations, and functions + OOP base: Basic OOP + OOP avanzato: Advanced OOP + Concetti teorici e costruzione ambiente: Theoretical concepts and environment setup + Sessione pratica e coding: Practical session and coding + Testare e documentare i dati: Testing and documenting data + Beautiful soup e requests: Beautiful Soup and Requests + Selenium e Scrapy: Selenium and Scrapy + Articoli: Articles + Primo incontro - Marcelo Trylesinski: First interview - Marcelo Trylesinski + Secondo incontro - Patrick Arminio: Second interview - Patrick Arminio + Terzo incontro - Juliana Nicacio: Third interview - Juliana Nicacio + Quarto incontro - Giovanni Barillari: Fourth interview - Giovanni Barillari + Percorsi di apprendimento: Learning path + Testing con python: Testing with python + Introduzione: Introduction + L'aspetto di un test: What a test looks like + Categorie, granularità, livelli e tipi di test: Categories, granularity, levels and types of tests + Buone pratiche per scrivere test di qualità: Good practices for writing tests + Il test framework unittest: Using the unittest framework + Utilizzare Pytest: Using pytest + Test semplici con doctest: Simple tests with doctest + Test BDD con Behave: BDD tests with Behave + Letteratura: Bibliography + Testing - Pytest e unittest: Testing - Pytest and unittest + Testing - Doctest e behave: + Testing - Doctest and behave # learning - Better code: Better code - Creare un pacchetto: Create a package - Data analysis: Data analysis - Documentare il codice: Document your code - Linux base: Linux basics - Gestire dipendenze: Manage dependencies - Materiale extra: Extra material - Struttura di progetto: Project structure - Python base: Python basics - Python avanzato: Advanced Python - Gestire diverse versioni di python: Manage different python versions - Gestione delle configurazioni: Manage configurations - Indipendenza tecnologica: Tech independence - Risorse: Resources + Better code: Better code + Creare un pacchetto: Create a package + Data analysis: Data analysis + Documentare il codice: Document your code + Linux base: Linux basics + Gestire dipendenze: Manage dependencies + Materiale extra: Extra material + Struttura di progetto: Project structure + Python base: Python basics + Python avanzato: Advanced Python + Gestire diverse versioni di python: Manage different python versions + Gestione delle configurazioni: Manage configurations + Indipendenza tecnologica: Tech independence + Risorse: Resources - - git-revision-date-localized + - git-revision-date-localized # - rss: # match_path: blog/posts/.* # date_from_meta: @@ -513,60 +525,60 @@ plugins: #Extra material theme settings extra: - consent: - title: Cookie consent - description: >- - We use cookies to recognize your repeated visits and preferences, as well - as to measure the effectiveness of our site and whether users - find what they're searching for. With your consent, you're helping us to - make our site better. - alternate: - - name: Italian - link: / - lang: it - - name: English - link: /en - lang: en - disqus: PythonBiellaGroup - annotate: - json: [.s2] - analytics: - provider: google - property: !ENV GOOGLE_ANALYTICS_KEY - feedback: - title: Ti é stato utile? / Was this page helpful? - ratings: - - icon: material/emoticon-happy-outline - name: Si, mi é stato utile! / This page was helpful! - data: 1 - note: >- - Grazie per il tuo feedback! / Thanks for your feedback! - - icon: material/emoticon-sad-outline - name: No, ma si può migliorare / This page could be improved - data: 0 - note: >- - Grazie per il tuo feedback! Aiutaci a migliorare il contenuto scrivendoci qui. / Thanks for your feedback! Help us improve this page by contact us here. - generator: false - social: - - icon: fontawesome/solid/paper-plane - link: mailto:pythonbiellagroup@gmail.com - name: Write to us - - icon: fontawesome/brands/gitter - link: https://info.pythonbiellagroup.it/ - name: Contacts and social - - icon: fontawesome/brands/youtube - link: https://www.youtube.com/@PythonBiellaGroup - name: Youtube - - icon: fontawesome/brands/twitter - link: https://twitter.com/PythonBiella/ - name: Twitter - - icon: fontawesome/brands/github - link: https://github.com/PythonBiellaGroup - - icon: fontawesome/brands/linkedin - link: https://www.linkedin.com/company/pythonbiellagroup/ - name: Linkedin - - icon: fontawesome/brands/instagram - link: https://www.instagram.com/pythonbiellagroup/ - name: Instagram + consent: + title: Cookie consent + description: >- + We use cookies to recognize your repeated visits and preferences, as well + as to measure the effectiveness of our site and whether users + find what they're searching for. With your consent, you're helping us to + make our site better. + alternate: + - name: Italian + link: / + lang: it + - name: English + link: /en + lang: en + disqus: PythonBiellaGroup + annotate: + json: [.s2] + analytics: + provider: google + property: !ENV GOOGLE_ANALYTICS_KEY + feedback: + title: Ti é stato utile? / Was this page helpful? + ratings: + - icon: material/emoticon-happy-outline + name: Si, mi é stato utile! / This page was helpful! + data: 1 + note: >- + Grazie per il tuo feedback! / Thanks for your feedback! + - icon: material/emoticon-sad-outline + name: No, ma si può migliorare / This page could be improved + data: 0 + note: >- + Grazie per il tuo feedback! Aiutaci a migliorare il contenuto scrivendoci qui. / Thanks for your feedback! Help us improve this page by contact us here. + generator: false + social: + - icon: fontawesome/solid/paper-plane + link: mailto:pythonbiellagroup@gmail.com + name: Write to us + - icon: fontawesome/brands/gitter + link: https://info.pythonbiellagroup.it/ + name: Contacts and social + - icon: fontawesome/brands/youtube + link: https://www.youtube.com/@PythonBiellaGroup + name: Youtube + - icon: fontawesome/brands/twitter + link: https://twitter.com/PythonBiella/ + name: Twitter + - icon: fontawesome/brands/github + link: https://github.com/PythonBiellaGroup + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/company/pythonbiellagroup/ + name: Linkedin + - icon: fontawesome/brands/instagram + link: https://www.instagram.com/pythonbiellagroup/ + name: Instagram diff --git a/poetry.lock b/poetry.lock index f739d26..008bdad 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. [[package]] name = "annotated-types" @@ -1585,7 +1585,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -1593,15 +1592,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -1618,7 +1610,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -1626,7 +1617,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -1844,24 +1834,24 @@ python-versions = ">=3.6" files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, @@ -1869,7 +1859,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, @@ -1877,7 +1867,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, @@ -1885,7 +1875,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, @@ -2088,17 +2078,18 @@ reference = "pypi.org" [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"]