Copy disabled (too large)
Download .txt
Showing preview only (15,461K chars total). Download the full file to get everything.
Repository: jerry-git/learn-python3
Branch: master
Commit: 85e30d370ec2
Files: 85
Total size: 14.7 MB
Directory structure:
gitextract_x63mlfur/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .pre-commit-config.yaml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── _config.yml
├── dev-requirements.txt
├── notebooks/
│ ├── beginner/
│ │ ├── data/
│ │ │ ├── empty_file.txt
│ │ │ ├── numbers.txt
│ │ │ ├── random_data.txt
│ │ │ ├── simple_file.txt
│ │ │ └── simple_file_with_empty_lines.txt
│ │ ├── exercises/
│ │ │ ├── 01_strings_exercise.ipynb
│ │ │ ├── 02_numbers_exercise.ipynb
│ │ │ ├── 03_conditionals_exercise.ipynb
│ │ │ ├── 04_lists_exercise.ipynb
│ │ │ ├── 05_dictionaries_exercise.ipynb
│ │ │ ├── 06_for_loops_exercise.ipynb
│ │ │ ├── 07_functions_exercise.ipynb
│ │ │ ├── 08_testing1_exercise.ipynb
│ │ │ ├── 09_recap1_exercise.ipynb
│ │ │ ├── 10_file_io_exercise.ipynb
│ │ │ ├── 11_classes_exercise.ipynb
│ │ │ ├── 12_exceptions_exercise.ipynb
│ │ │ ├── 14_debugging_exercise.ipynb
│ │ │ ├── 15_std_lib1_exercise.ipynb
│ │ │ ├── 16_testing2_exercise.ipynb
│ │ │ └── 19_recap2_exercise.ipynb
│ │ ├── html/
│ │ │ ├── 01_strings.html
│ │ │ ├── 02_numbers.html
│ │ │ ├── 03_conditionals.html
│ │ │ ├── 04_lists.html
│ │ │ ├── 05_dictionaries.html
│ │ │ ├── 06_for_loops.html
│ │ │ ├── 07_functions.html
│ │ │ ├── 08_testing1.html
│ │ │ ├── 10_file_io.html
│ │ │ ├── 11_classes.html
│ │ │ ├── 12_exceptions.html
│ │ │ ├── 13_modules_and_packages.html
│ │ │ ├── 14_debugging.html
│ │ │ ├── 15_std_lib.html
│ │ │ ├── 16_testing2.html
│ │ │ ├── 17_venv.html
│ │ │ └── 18_project_structure.html
│ │ └── notebooks/
│ │ ├── 01_strings.ipynb
│ │ ├── 02_numbers.ipynb
│ │ ├── 03_conditionals.ipynb
│ │ ├── 04_lists.ipynb
│ │ ├── 05_dictionaries.ipynb
│ │ ├── 06_for_loops.ipynb
│ │ ├── 07_functions.ipynb
│ │ ├── 08_testing1.ipynb
│ │ ├── 10_file_io.ipynb
│ │ ├── 11_classes.ipynb
│ │ ├── 12_exceptions.ipynb
│ │ ├── 13_modules_and_packages.ipynb
│ │ ├── 14_debugging.ipynb
│ │ ├── 15_std_lib.ipynb
│ │ ├── 16_testing2.ipynb
│ │ ├── 17_venv.ipynb
│ │ └── 18_project_structure.ipynb
│ └── intermediate/
│ ├── data/
│ │ ├── empty.txt
│ │ ├── misc_data1.txt
│ │ └── misc_data2.txt
│ ├── exercises/
│ │ ├── 01_std_lib2_exercise.ipynb
│ │ └── 05_idiomatic_python_exercise.ipynb
│ ├── html/
│ │ ├── 01_best_practices.html
│ │ ├── 01_idiomatic_loops.html
│ │ ├── 01_pytest_fixtures.html
│ │ ├── 01_std_lib2.html
│ │ ├── 02_idiomatic_dicts.html
│ │ ├── 03_idiomatic_misc1.html
│ │ └── 04_idiomatic_misc2.html
│ └── notebooks/
│ ├── 01_best_practices.ipynb
│ ├── 01_idiomatic_loops.ipynb
│ ├── 01_pytest_fixtures.ipynb
│ ├── 01_std_lib2.ipynb
│ ├── 02_idiomatic_dicts.ipynb
│ ├── 03_idiomatic_misc1.ipynb
│ └── 04_idiomatic_misc2.ipynb
├── pytest.ini
└── scripts/
└── notebook_to_html.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
notebooks/* linguist-language=Python
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
pull_request:
push:
branches:
- "**"
jobs:
checks:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [ "3.10", "3.11" ]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- run: pip install -r dev-requirements.txt
- run: pre-commit run -a
- run: pytest --nbval notebooks
================================================
FILE: .gitignore
================================================
.DS_Store
*ipynb_checkpoints*
.idea*
.pytest_cache*
.tox*
*pycache*
sync-*.sh
tmp.txt
my_log.txt
================================================
FILE: .pre-commit-config.yaml
================================================
repos:
- repo: local
hooks:
- id: clear-nb-output
name: clear-nb-output
files: \.ipynb$
language: system
entry: jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace
- id: black
name: black
entry: black
language: system
files: \.(py|ipynb)$
- id: pyupgrade
name: pyupgrade
entry: nbqa pyupgrade --py310-plus
language: system
files: \.(py|ipynb)$
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
If you spot a typo or the content does not make sense in some way, feel free to open an issue or directly create a PR.
I am open for enhancement ideas and feature requests. If there's some topic you'd like to see a notebook about, feel free to open an issue and request it there.
## Development
Install development dependencies
```
pip install -r dev-requirements.txt
```
#### Generating html
```
python scripts/notebook_to_html.py <path-to-ipynb-file>
```
#### Testing
```
pytest --nbval notebooks
```
#### pre-commit
```
pre-commit install
```
and it'll automatically run all the pre-commit hooks for each commit.
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2023 jerry-git
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<p align="center">
<img src="logo.png" alt="logo"/>
</p>
# Learn Python 3
## Introduction
This repository contains a collection of materials for teaching/learning Python 3 (3.10+).
#### Requirements
* Have Python 3.10 or newer installed. You can check the version by typing `python3 --version` in your command line. You can download the latest Python version from [here](https://www.python.org/downloads/).
* Have [Jupyter Notebook installed](http://jupyter.readthedocs.io/en/latest/install.html). `pip install jupyter` is sufficient in most cases.
If you can not access Python and/or Jupyter Notebook on your machine, you can still follow the web based materials. However, you should be able to use Jupyter Notebook in order to complete the exercises.
#### Usage (locally)
1. Clone or download this repository.
2. Run `jupyter notebook` command in your command line in the repository directory.
3. Jupyter Notebook session will open in the browser and you can start navigating through the materials.
#### Usage (Binder in the cloud)
You can also just use [Binder:](https://mybinder.org/) By clicking of this [](https://mybinder.org/v2/gh/jerry-git/learn-python3/master) badge, the project is opened in a Jupyter instance in the cloud and you can then navigate to the folders containing the notebooks and start them each and interactively explore them!
#### Contributing
See [contributing](https://github.com/jerry-git/learn-python3/blob/master/CONTRIBUTING.md) guide.
## Beginner
1. [Strings](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/01_strings.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/01_strings.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/01_strings_exercise.ipynb)
2. [Numbers](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/02_numbers.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/02_numbers.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/02_numbers_exercise.ipynb)
3. [Conditionals](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/03_conditionals.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/03_conditionals.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/03_conditionals_exercise.ipynb)
4. [Lists](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/04_lists.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/04_lists.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/04_lists_exercise.ipynb)
5. [Dictionaries](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/05_dictionaries.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/05_dictionaries.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/05_dictionaries_exercise.ipynb)
6. [For loops](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/06_for_loops.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/06_for_loops.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/06_for_loops_exercise.ipynb)
7. [Functions](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/07_functions.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/07_functions.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/07_functions_exercise.ipynb)
8. [Testing with pytest - part 1](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/08_testing1.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/08_testing1.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/08_testing1_exercise.ipynb)
9. Recap exercise 1 [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/09_recap1_exercise.ipynb)
10. [File I\O](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/10_file_io.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/10_file_io.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/10_file_io_exercise.ipynb)
11. [Classes](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/11_classes.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/11_classes.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/11_classes_exercise.ipynb)
12. [Exceptions](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/12_exceptions.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/12_exceptions.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/12_exceptions_exercise.ipynb)
13. [Modules and packages](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/13_modules_and_packages.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/13_modules_and_packages.ipynb)
14. [Debugging](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/14_debugging.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/14_debugging.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/14_debugging_exercise.ipynb)
15. [Goodies of the Standard Library - part 1](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/15_std_lib.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/15_std_lib.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/15_std_lib1_exercise.ipynb)
16. [Testing with pytest - part 2](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/16_testing2.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/16_testing2.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/16_testing2_exercise.ipynb)
17. [Virtual environment](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/17_venv.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/17_venv.ipynb)
18. [Project structure](https://jerry-git.github.io/learn-python3/notebooks/beginner/html/18_project_structure.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/notebooks/18_project_structure.ipynb)
19. Recap exercise 2 [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/beginner/exercises/19_recap2_exercise.ipynb)
## Intermediate
#### Idiomatic Python
Python is a powerful language which contains many features not presented in most other programming languages. Idiomatic section will cover some of these Pythonic features in detail. These materials are especially useful for people with background in other programming languages.
1. [Idiomatic loops](https://jerry-git.github.io/learn-python3/notebooks/intermediate/html/01_idiomatic_loops.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/notebooks/01_idiomatic_loops.ipynb)
2. [Idiomatic dictionaries](https://jerry-git.github.io/learn-python3/notebooks/intermediate/html/02_idiomatic_dicts.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/notebooks/02_idiomatic_dicts.ipynb)
3. [Idiomatic Python - miscellaneous part 1](https://jerry-git.github.io/learn-python3/notebooks/intermediate/html/03_idiomatic_misc1.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/notebooks/03_idiomatic_misc1.ipynb)
4. [Idiomatic Python - miscellaneous part 2](https://jerry-git.github.io/learn-python3/notebooks/intermediate/html/04_idiomatic_misc2.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/notebooks/04_idiomatic_misc2.ipynb)
5. Idiomatic Python exercise [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/exercises/05_idiomatic_python_exercise.ipynb)
#### Step up your `pytest` game
1. [Efficient use of fixtures](https://jerry-git.github.io/learn-python3/notebooks/intermediate/html/01_pytest_fixtures.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/notebooks/01_pytest_fixtures.ipynb)
#### Best practices
A list of best development practices for Python projects. Most of the practices listed here are also applicable for other languages, however the presented tooling focuses mainly on Python.
1. [Best practices](https://jerry-git.github.io/learn-python3/notebooks/intermediate/html/01_best_practices.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/notebooks/01_best_practices.ipynb)
#### General topics
1. [Goodies of the Standard Library - part 2](https://jerry-git.github.io/learn-python3/notebooks/intermediate/html/01_std_lib2.html) [[notebook]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/notebooks/01_std_lib2.ipynb) [[exercise]](http://nbviewer.jupyter.org/github/jerry-git/learn-python3/blob/master/notebooks/intermediate/exercises/01_std_lib2_exercise.ipynb)
## Credits
* Logo: Abdur-Rahmaan Janhangeer, [@Abdur-rahmaanJ](https://github.com/Abdur-rahmaanJ)
================================================
FILE: _config.yml
================================================
theme: jekyll-theme-slate
================================================
FILE: dev-requirements.txt
================================================
black[jupyter]
jupyter
nbqa[toolchain]
nbval
pre-commit
pytest
================================================
FILE: notebooks/beginner/data/empty_file.txt
================================================
================================================
FILE: notebooks/beginner/data/numbers.txt
================================================
1
2.5
16
4
5
12
15
16
18
100
================================================
FILE: notebooks/beginner/data/random_data.txt
================================================
78, 25, 4, 87, 18, 77, 94, 37, 22, 11, 28, 43, 49, 79, 75, 74, 70, 20, 50, 46
================================================
FILE: notebooks/beginner/data/simple_file.txt
================================================
First line
Second line
Third
And so the story goes!
================================================
FILE: notebooks/beginner/data/simple_file_with_empty_lines.txt
================================================
The Title of the Story
First paragraph with some
nonsense words.
Then we move to second paragraph and so on.
================================================
FILE: notebooks/beginner/exercises/01_strings_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Fill missing pieces\n",
"Fill `____` pieces below to have correct values for `lower_cased`, `stripped` and `stripped_lower_case` variables."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"original = \" Python strings are COOL! \"\n",
"lower_cased = original._____\n",
"stripped = ____.strip()\n",
"stripped_lower_cased = original._____._____"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's verify that the implementation is correct by running the cell below. `assert` will raise `AssertionError` if the statement is not true. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert lower_cased == \" python strings are cool! \"\n",
"assert stripped == \"Python strings are COOL!\"\n",
"assert stripped_lower_cased == \"python strings are cool!\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Prettify ugly string\n",
"Use `str` methods to convert `ugly` to wanted `pretty`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"ugly = \" tiTle of MY new Book\\n\\n\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation:\n",
"pretty = \"TODO\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's make sure that it does what we want. `assert` raises [`AssertionError`](https://docs.python.org/3/library/exceptions.html#AssertionError) if the statement is not `True`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"print(f\"pretty: {pretty}\")\n",
"assert pretty == \"Title Of My New Book\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Format string based on existing variables\n",
"Create `sentence` by using `verb`, `language`, and `punctuation` and any other strings you may need."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"verb = \"is\"\n",
"language = \"Python\"\n",
"punctuation = \"!\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation:\n",
"sentence = \"TODO\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"print(f\"sentence: {sentence}\")\n",
"assert sentence == \"Learning Python is fun!\""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: notebooks/beginner/exercises/02_numbers_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Creating formulas\n",
"Write the following mathematical formula in Python:\n",
"\n",
"\\begin{align}\n",
" result = 6a^3 - \\frac{8b^2 }{4c} + 11\n",
"\\end{align}\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"a = 2\n",
"b = 3\n",
"c = 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your formula here:\n",
"result = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert result == 50"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Floating point pitfalls\n",
"Show that `0.1 + 0.2 == 0.3`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your solution here\n",
"\n",
"# This won't work:\n",
"# assert 0.1 + 0.2 == 0.3"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/03_conditionals_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. `if-elif-else`\n",
"Fill missing pieces (`____`) of the following code such that prints make sense."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"name = \"John Doe\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"if ____:\n",
" print(f'Name \"{name}\" is more than 20 chars long')\n",
" length_description = \"long\"\n",
"elif ____:\n",
" print(f'Name \"{name}\" is more than 15 chars long')\n",
" length_description = \"semi long\"\n",
"elif ____:\n",
" print(f'Name \"{name}\" is more than 10 chars long')\n",
" length_description = \"semi long\"\n",
"elif ____:\n",
" print(f'Name \"{name}\" is 8, 9 or 10 chars long')\n",
" length_description = \"semi short\"\n",
"else:\n",
" print(f'Name \"{name}\" is a short name')\n",
" length_description = \"short\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert length_description == \"semi short\""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/04_lists_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Fill the missing pieces\n",
"Fill the `____` parts of the code below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Let's create an empty list\n",
"my_list = ____\n",
"\n",
"# Let's add some values\n",
"my_list.____(\"Python\")\n",
"my_list.____(\"is ok\")\n",
"my_list.____(\"sometimes\")\n",
"\n",
"# Let's remove 'sometimes'\n",
"my_list.____(\"sometimes\")\n",
"\n",
"# Let's change the second item\n",
"my_list[____] = \"is neat\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"# Let's verify that it's correct\n",
"assert my_list == [\"Python\", \"is neat\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Create a new list without modifiying the original one\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"original = [\"I\", \"am\", \"learning\", \"hacking\", \"in\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here\n",
"modified = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert original == [\"I\", \"am\", \"learning\", \"hacking\", \"in\"]\n",
"assert modified == [\"I\", \"am\", \"learning\", \"lists\", \"in\", \"Python\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Create a merged sorted list"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"list1 = [6, 12, 5]\n",
"list2 = [6.2, 0, 14, 1]\n",
"list3 = [0.9]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here\n",
"my_list = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"print(my_list)\n",
"assert my_list == [14, 12, 6.2, 6, 5, 1, 0.9, 0]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/05_dictionaries_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Populating a dictionary\n",
"Create a dictionary by using all the given variables."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"first_name = \"John\"\n",
"last_name = \"Doe\"\n",
"favorite_hobby = \"Python\"\n",
"sports_hobby = \"gym\"\n",
"age = 82"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation\n",
"my_dict = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert my_dict == {\"name\": \"John Doe\", \"age\": 82, \"hobbies\": [\"Python\", \"gym\"]}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Accessing and merging dictionaries\n",
"Combine `dict1`, `dict2`, and `dict3` into `my_dict`. In addition, get the value of `special_key` from `my_dict` into a `special_value` variable. Note that original dictionaries should stay untouched and `special_key` should be removed from `my_dict`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"dict1 = dict(key1=\"This is not that hard\", key2=\"Python is still cool\")\n",
"dict2 = {\"key1\": 123, \"special_key\": \"secret\"}\n",
"# This is also a away to initialize a dict (list of tuples)\n",
"dict3 = dict([(\"key2\", 456), (\"keyX\", \"X\")])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 'Your impelementation'\n",
"my_dict = \n",
"special_value = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert my_dict == {\"key1\": 123, \"key2\": 456, \"keyX\": \"X\"}\n",
"assert special_value == \"secret\"\n",
"\n",
"# Let's check that the originals are untouched\n",
"assert dict1 == {\"key1\": \"This is not that hard\", \"key2\": \"Python is still cool\"}\n",
"assert dict2 == {\"key1\": 123, \"special_key\": \"secret\"}\n",
"assert dict3 == {\"key2\": 456, \"keyX\": \"X\"}"
]
}
],
"metadata": {
"celltoolbar": "Edit Metadata",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
================================================
FILE: notebooks/beginner/exercises/06_for_loops_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Fill the missing pieces\n",
"Fill the `____` parts in the code below."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"words = [\"PYTHON\", \"JOHN\", \"chEEse\", \"hAm\", \"DOE\", \"123\"]\n",
"upper_case_words = []\n",
"\n",
"for ____ in words:\n",
" if ____.isupper():\n",
" ____.append(____)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert upper_case_words == [\"PYTHON\", \"JOHN\", \"DOE\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Calculate the sum of dict values\n",
"Calculate the sum of the values in `magic_dict` by taking only into account numeric values (hint: see [isinstance](https://docs.python.org/3/library/functions.html#isinstance)). "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"magic_dict = dict(val1=44, val2=\"secret value\", val3=55.0, val4=1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation\n",
"sum_of_values = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert sum_of_values == 100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Create a list of strings based on a list of numbers\n",
"The rules:\n",
"* If the number is a multiple of five and odd, the string should be `'five odd'`\n",
"* If the number is a multiple of five and even, the string should be `'five even'`\n",
"* If the number is odd, the string is `'odd'`\n",
"* If the number is even, the string is `'even'`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"numbers = [1, 3, 4, 6, 81, 80, 100, 95]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation\n",
"my_list = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert my_list == [\n",
" \"odd\",\n",
" \"odd\",\n",
" \"even\",\n",
" \"even\",\n",
" \"odd\",\n",
" \"five even\",\n",
" \"five even\",\n",
" \"five odd\",\n",
"]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/07_functions_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Fill the missing pieces of the `count_even_numbers` function\n",
"Fill `____` pieces of the `count_even_numbers` implemention in order to pass the assertions. You can assume that `numbers` argument is a list of integers."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"____ count_even_numbers(numbers):\n",
" count = 0\n",
" for num in ____:\n",
" if ____ % 2 == ____:\n",
" count += ____\n",
" _____ _____"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert count_even_numbers([1, 2, 3, 4, 5, 6]) == 3\n",
"assert count_even_numbers([1, 3, 5, 7]) == 0\n",
"assert count_even_numbers([-2, 2, -10, 8]) == 4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Searching for wanted people\n",
"Implement `find_wanted_people` function which takes a list of names (strings) as argument. The function should return a list of names which are present both in `WANTED_PEOPLE` and in the name list given as argument to the function."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"WANTED_PEOPLE = [\"John Doe\", \"Clint Eastwood\", \"Chuck Norris\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"people_to_check1 = [\"Donald Duck\", \"Clint Eastwood\", \"John Doe\", \"Barack Obama\"]\n",
"wanted1 = find_wanted_people(people_to_check1)\n",
"assert len(wanted1) == 2\n",
"assert \"John Doe\" in wanted1\n",
"assert \"Clint Eastwood\" in wanted1\n",
"\n",
"people_to_check2 = [\"Donald Duck\", \"Mickey Mouse\", \"Zorro\", \"Superman\", \"Robin Hood\"]\n",
"wanted2 = find_wanted_people(people_to_check2)\n",
"assert wanted2 == []"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Counting average length of words in a sentence\n",
"Create a function `average_length_of_words` which takes a string as an argument and returns the average length of the words in the string. You can assume that there is a single space between each word and that the input does not have punctuation. The result should be rounded to one decimal place (hint: see [`round`](https://docs.python.org/3/library/functions.html#round))."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert average_length_of_words(\"only four lett erwo rdss\") == 4\n",
"assert average_length_of_words(\"one two three\") == 3.7\n",
"assert average_length_of_words(\"one two three four\") == 3.8\n",
"assert average_length_of_words(\"\") == 0"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/08_testing1_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Let's make sure pytest and ipytest packages are installed\n",
"# ipytest is required for running pytest inside Jupyter notebooks\n",
"import sys\n",
"\n",
"!{sys.executable} -m pip install pytest\n",
"!{sys.executable} -m pip install ipytest\n",
"\n",
"# These are needed for running pytest inside Jupyter notebooks\n",
"import ipytest\n",
"\n",
"ipytest.autoconfig()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Creating your first test case\n",
"There is an implementation for `get_divisible_by_five` function in the cell below. Your task is to create a test case for this function to verify that it works correctly.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"def get_divisible_by_five(numbers):\n",
" \"\"\"Returns a list of numbers which are divisible by five in the list got as an argument\"\"\"\n",
" result = []\n",
" for num in numbers:\n",
" if not num % 5:\n",
" result.append(num)\n",
"\n",
" return result"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%ipytest\n",
"\n",
"def test_get_divisible_by_five():\n",
" # Your implementation here\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/09_recap1_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Super vowels\n",
"Implement `super_vowels` function which takes a string as an argument and returns a modified version of that string. In the return value of `super_vowels`, all vowels should be in upper case whereas all consonants should be in lower case. The vowels are listed in the `VOWELS` variable."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"VOWELS = [\"a\", \"e\", \"i\", \"o\", \"u\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert super_vowels(\"hi wassup!\") == \"hI wAssUp!\"\n",
"assert super_vowels(\"HOw aRE You?\") == \"hOw ArE yOU?\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Playing board\n",
"Implement `get_playing_board` function which takes an integer as an argument. The function should return a string which resemples a playing board (e.g. a chess board). The board should contain as many rows and columns as requested by the interger argument. See the cell below for examples of desired behavior.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"board_of_5 = \" * * \\n\" \"* * *\\n\" \" * * \\n\" \"* * *\\n\" \" * * \\n\"\n",
"\n",
"board_of_10 = (\n",
" \" * * * * *\\n\"\n",
" \"* * * * * \\n\"\n",
" \" * * * * *\\n\"\n",
" \"* * * * * \\n\"\n",
" \" * * * * *\\n\"\n",
" \"* * * * * \\n\"\n",
" \" * * * * *\\n\"\n",
" \"* * * * * \\n\"\n",
" \" * * * * *\\n\"\n",
" \"* * * * * \\n\"\n",
")\n",
"\n",
"assert get_playing_board(5) == board_of_5\n",
"assert get_playing_board(10) == board_of_10\n",
"\n",
"print(get_playing_board(50))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/10_file_io_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"# EXECUTE THIS ONE FIRST!\n",
"\n",
"from pathlib import Path\n",
"\n",
"# Constants for the exercises:\n",
"WORKING_DIR = Path.cwd()\n",
"DATA_DIR = WORKING_DIR.parent / \"data\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Sum numbers listed in a file\n",
"Fill ____ pieces of the code below. `sum_numbers_in_file` function takes a input file path as argument, reads the numbers listed in the input file and returns the sum of those numbers. You can assume that each line contains exactly one numeric value."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def sum_numbers_in_file(input_file):\n",
" total = 0\n",
" with ____(input_file) as ____:\n",
" for line in ____:\n",
" ____ = line.strip() # Remove potential white space\n",
" total += float(____)\n",
" return _____"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"in_file = DATA_DIR / \"numbers.txt\"\n",
"assert sum_numbers_in_file(in_file) == 189.5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Reading first word from each line of a file\n",
"Implement `find_first_words` function which takes an input file path as argument. The function should find the first word of each line in the file and return these words as a list. If a line is empty, the returned list should contain an empty string for that line."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"in_file1 = DATA_DIR / \"simple_file.txt\"\n",
"in_file2 = DATA_DIR / \"simple_file_with_empty_lines.txt\"\n",
"\n",
"expected_file_1 = [\"First\", \"Second\", \"Third\", \"And\"]\n",
"assert find_first_words(in_file1) == expected_file_1\n",
"\n",
"expected_file_2 = [\"The\", \"\", \"First\", \"nonsense\", \"\", \"Then\"]\n",
"assert find_first_words(in_file2) == expected_file_2"
]
}
],
"metadata": {
"celltoolbar": "Edit Metadata",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/11_classes_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Fill the missing pieces of the `Calculator` class\n",
"Fill `____` pieces of the `Calculator` implemention in order to pass the assertions."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class Calculator:\n",
" def __init__(self, var1, ____):\n",
" self.____ = var1\n",
" self.____ = _____\n",
"\n",
" def calculate_power(self):\n",
" return self.____**____.____\n",
"\n",
" def calculate_sum(____, var3):\n",
" return ____.____ + ____.____ + var3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"calc = Calculator(2, 3)\n",
"assert calc.calculate_power() == 8\n",
"assert calc.calculate_sum(4) == 9"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Finalize `StringManipulator` class\n",
"Fill `____` pieces and create implementation for `stripped_title()`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class StringManipulator:\n",
" \"\"\"____\"\"\"\n",
" \n",
" category = ____\n",
" \n",
" def __init__(self, original):\n",
" self.string = ____\n",
" \n",
" def reverse_words(self):\n",
" words = self.string.____\n",
" self.string = ' '.join(reversed(____))\n",
" \n",
" def make_title(self):\n",
" # Create implementation for this\n",
" \n",
" def get_manipulated(____):\n",
" return self._____"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert StringManipulator.__doc__ == \"Docstring of StringManipulator\"\n",
"assert StringManipulator.category == \"Manipulator\"\n",
"\n",
"str_manip = StringManipulator(\"cOOL pyThON\")\n",
"\n",
"str_manip.reverse_words()\n",
"assert str_manip.get_manipulated() == \"pyThON cOOL\"\n",
"\n",
"str_manip.make_title()\n",
"assert str_manip.get_manipulated() == \"Python Cool\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3. Create `Dog` class\n",
"Create `Dog` class which has the following specification:\n",
"* Dogs consume their energy by barking and gain energy by sleeping\n",
"* A fresh `Dog` instance has 10 units of energy\n",
"* `Dog` has a method `sleep` which gives 2 units of energy\n",
"* `Dog` has a method `bark` which consumes 1 unit of energy\n",
"* `Dog` has a method `get_energy` which returns the amount of energy left "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class Dog:\n",
" # Your implementation here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"doge = Dog()\n",
"assert doge.get_energy() == 10\n",
"\n",
"doge.bark()\n",
"doge.bark()\n",
"doge.bark()\n",
"assert doge.get_energy() == 7\n",
"\n",
"doge.sleep()\n",
"assert doge.get_energy() == 9\n",
"\n",
"another_doge = Dog()\n",
"assert another_doge.get_energy() == 10"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/12_exceptions_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Dealing with exceptions\n",
"Fill `____` parts of the implementation below. `sum_of_list` function takes a list as argument and calculates the sum of values in the list. If some element in the list can not be converted to a numeric value, it should be ignored from the sum."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def sum_of_list(values):\n",
" ____ = 0\n",
" for val in values:\n",
" ____:\n",
" numeric_val = float(val)\n",
" ____ ____ as e:\n",
" ____\n",
" ____ += numeric_val\n",
" return ____"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"list1 = [1, 2, 3]\n",
"list2 = [\"1\", 2.5, \"3.0\"]\n",
"list3 = [\"\", \"1\"]\n",
"list4 = []\n",
"list5 = [\"John\", \"Doe\", \"was\", \"here\"]\n",
"nasty_list = [KeyError(), [], dict()]\n",
"\n",
"assert sum_of_list(list1) == 6\n",
"assert sum_of_list(list2) == 6.5\n",
"assert sum_of_list(list3) == 1\n",
"assert sum_of_list(list4) == 0\n",
"assert sum_of_list(list5) == 0\n",
"assert sum_of_list(nasty_list) == 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Using custom exceptions\n",
"Implement `verify_short_string` function which takes a single string as argument. If the length of the input string is more than ten characters, the function should raise `TooLongString` exception (note: you have to create `TooLongString` yourself). The function does not have to return anything. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"# These should not raise\n",
"verify_short_string(\"short\")\n",
"verify_short_string(\"10 chars\")\n",
"\n",
"# This should raise\n",
"try:\n",
" verify_short_string(\"this is long\")\n",
"except TooLongString as e:\n",
" # This is ok\n",
" pass\n",
"else:\n",
" # This means that there was no exception\n",
" assert False"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/14_debugging_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Identifying bugs in code\n",
"The following `stripped_reversed_lowercase` function contains at least one bug. You can see this by running the code in the cell below which tests the functionality of the `stripped_reversed_lowercase` function.\n",
"\n",
"Set trace at the beginning of `stripped_reversed_lowercase` and use debugger to solve the bug(s). Execute the code line by line and print variables used in the function to understand what's going wrong. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def stripped_reversed_lowercase(original):\n",
" # Set a breakpoint here and start debugging\n",
" # from IPython.core.debugger import Pdb; Pdb().set_trace()\n",
" stripped = original.lstrip()\n",
" reversed = \" \".join(reversed(stripped))\n",
" reversed.lower()\n",
" return reversed"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"# Let's verify it works\n",
"original = \" \\n Original String \"\n",
"result = stripped_reversed_lowercase(original)\n",
"assert result == \"gnirts lanigiro\""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/15_std_lib1_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Playing with datetimes\n",
"You're given a naive datetime, see `NAIVE_DT` variable below. Although this variable is naive, you happen to know that the time specified by `NAIVE_DT` is in UTC.\n",
"\n",
"Based on this information, your task is to create new datetime variables by converting `NAIVE_DT` to UTC and then to time in Sydney and Los Angeles. Use the following variable names: `utc_dt`, `sydney_dt`, and `la_dt`. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"import datetime as dt\n",
"from zoneinfo import ZoneInfo, available_timezones\n",
"\n",
"NAIVE_DT = dt.datetime(2000, 1, 1, 10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you don't know the timezone name you're looking for, this may be helpful:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"for tz in available_timezones():\n",
" print(tz)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now create `utc_dt`, `sydney_dt`, and `la_dt`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's verify that the solution is correct."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"assert utc_dt.isoformat() == \"2000-01-01T10:00:00+00:00\"\n",
"assert sydney_dt.isoformat() == \"2000-01-01T21:00:00+11:00\"\n",
"assert la_dt.isoformat() == \"2000-01-01T02:00:00-08:00\"\n",
"\n",
"print(\"All good!\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/16_testing2_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Let's make sure pytest and ipytest packages are installed\n",
"# ipytest is required for running pytest inside Jupyter notebooks\n",
"import sys\n",
"\n",
"!{sys.executable} -m pip install pytest\n",
"!{sys.executable} -m pip install ipytest\n",
"\n",
"# These are needed for running pytest inside Jupyter notebooks\n",
"import ipytest\n",
"import pytest\n",
"\n",
"ipytest.autoconfig()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Finalize test cases\n",
"The testing part of the `TodoList` implementation is incomplete. Fill `____` parts of the tests. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"class TodoNotFound(Exception):\n",
" pass\n",
"\n",
"\n",
"class TodoList:\n",
" def __init__(self):\n",
" self._todo = {}\n",
" self._done = {}\n",
" self._task_counter = 1\n",
"\n",
" @property\n",
" def todo_tasks(self):\n",
" return self._todo\n",
"\n",
" @property\n",
" def done_tasks(self):\n",
" return self._done\n",
"\n",
" def add(self, task):\n",
" self._todo[self._task_counter] = task\n",
" self._task_counter += 1\n",
"\n",
" def complete(self, number):\n",
" if number not in self._todo:\n",
" raise TodoNotFound(f\"{number} not in todos\")\n",
"\n",
" task = self._todo.pop(number)\n",
" self._done[number] = task\n",
"\n",
" def remove(self, number):\n",
" if number not in self._todo:\n",
" raise TodoNotFound(f\"{number} not in todos\")\n",
"\n",
" del self._todo[number]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finalize tests for `TodoList`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%ipytest\n",
"\n",
"\n",
"@pytest.____\n",
"def todo_list():\n",
" tl = TodoList()\n",
" tl.add('buy milk')\n",
" tl.add('take dog out')\n",
" tl.add('learn pytest fixtures')\n",
" ____ ____\n",
"\n",
"\n",
"def test_todo_tasks_property(todo_list):\n",
" todo = todo_list.todo_tasks\n",
" assert todo == {\n",
" 1: 'buy milk',\n",
" 2: 'take dog out',\n",
" 3: 'learn pytest fixtures'\n",
" }\n",
"\n",
"\n",
"def test_add(____):\n",
" todo_list.add('check pytest docs')\n",
" todos = todo_list.todo_tasks\n",
" assert todos[4] == ____\n",
"\n",
"\n",
"def test_complete(todo_list):\n",
" # Make sure there is not done tasks yet\n",
" assert not todo_list.done_tasks\n",
"\n",
" todo_list.complete(3)\n",
" done = todo_list.____\n",
" todo = todo_list.____\n",
" assert done[3] == 'learn pytest fixtures'\n",
" assert 3 not in ____\n",
"\n",
"\n",
"def test_complete_with_unknown_task_number(todo_list):\n",
" # This is how you can test that a certain exception is raised\n",
" with pytest.raises(TodoNotFound):\n",
" todo_list.complete(10)\n",
"\n",
"\n",
"def test_remove(todo_list):\n",
" todo_list.remove(1)\n",
" done = todo_list.done_tasks\n",
" todo = todo_list.todo_tasks\n",
"\n",
" assert 1 not in ____\n",
" # Make sure it was not moved to done\n",
" ____ not done\n",
"\n",
"\n",
"def test_remove_with_unknown_task_number(todo_list):\n",
" with pytest.____(____):\n",
" todo_list.remove(12)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Testing the [Fibonacci numbers](https://en.wikipedia.org/wiki/Fibonacci_number)\n",
"\n",
"Implement a test for the `fibonacci` function. Use `pytest.mark.parametrize` and test at least with numbers: 0, 1, 2, 3, and 10. You can find the expected results and more information about the Fibonacci numbers [here](https://en.wikipedia.org/wiki/Fibonacci_number)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"def fibonacci(number):\n",
" if number in [0, 1]:\n",
" return number\n",
" return fibonacci(number - 1) + fibonacci(number - 2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%%ipytest\n",
"\n",
"# Your implementation here\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/exercises/19_recap2_exercise.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. [Rock-paper-scissors](https://en.wikipedia.org/wiki/Rock%E2%80%93paper%E2%80%93scissors) \n",
"Implement `rock_paper_scissors` function which takes the player's rock-paper-scissors choice as an input (as integer), randomly selects the choice of the computer and reveals it (prints) and finally announces (prints) the result. The function should return `PLAYER_WINS`, `COMPUTER_WINS` or `TIE`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"# Constants, you should use these in your implementation\n",
"ROCK = 1\n",
"PAPER = 2\n",
"SCISSORS = 3\n",
"\n",
"PLAYER_WINS = \"Player wins!! Woop woop!\"\n",
"COMPUTER_WINS = \"Robocop wins :-(\"\n",
"TIE = \"It's a tie!\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once you have finished the implementation of `rock_paper_scissors` function, you can check if it works as expected by playing the game:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def play_rps():\n",
" print(\"Welcome to play rock-paper-scissors\")\n",
" print(\"The options are:\\nrock: 1\\npaper: 2\\nscissors: 3\")\n",
"\n",
" result = TIE\n",
" while result == TIE:\n",
" player_choice = input(\"Give your choice\\n\")\n",
"\n",
" if not player_choice in [\"1\", \"2\", \"3\"]:\n",
" print(\"Invalid choice\")\n",
" continue\n",
"\n",
" result = rock_paper_scissors(int(player_choice))\n",
"\n",
"\n",
"if __name__ == \"__main__\":\n",
" play_rps()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you copy the code from above cells into a single .py file, you have a rock-paper-scissor command line game!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Data analyzer\n",
"Implement `DataAnalyzer` class which has the following specification:\n",
"* `__init__` takes one argument which is a path to the file to be analyzed\n",
"* `total_samples` method returns the amount of the data samples in the file\n",
"* `average` method returns the average of the data samples in the file\n",
"* `median` method returns the median of the data samples in the file\n",
"* `max_value` method returns the maximum value of the data samples in the file\n",
"* `min_value` method returns the minimum value of the data samples in the file\n",
"* `create_report` method returns a report (string) of the file in the following format:\n",
"\n",
"```\n",
"Report for <filename>\n",
"samples: x\n",
"average: x.xx\n",
"median: xx.xx\n",
"max: xx.xx\n",
"min: x.xx\n",
"```\n",
" \n",
"Note that average, median, max, and min should be presented with two decimal places in the report.\n",
"\n",
"The format of the input file is comma separated and the file contains only numeric values.\n",
"\n",
"If there is no data in the input file (empty file), `NoData` exception should be raised. Note: `NoData` should be your custom exception."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Your implementation here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's verify it works."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"from pathlib import Path\n",
"\n",
"WORKING_DIR = Path.cwd()\n",
"DATA_DIR = WORKING_DIR.parent / \"data\"\n",
"DATA_FILE = DATA_DIR / \"random_data.txt\"\n",
"\n",
"da = DataAnalyzer(DATA_FILE)\n",
"\n",
"assert da.total_samples() == 20\n",
"assert da.average() == 49.35\n",
"assert da.median() == 47.5\n",
"assert da.max_value() == 94\n",
"assert da.min_value() == 4\n",
"\n",
"report = da.create_report()\n",
"print(report)\n",
"\n",
"expected_report = (\n",
" \"Report for random_data.txt\\n\"\n",
" \"samples: 20\\n\"\n",
" \"average: 49.35\\n\"\n",
" \"median: 47.50\\n\"\n",
" \"max: 94.00\\n\"\n",
" \"min: 4.00\"\n",
")\n",
"assert report == expected_report"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check that it raises `NoData` with empty file."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"editable": false
},
"outputs": [],
"source": [
"EMPTY_FILE = DATA_DIR / \"empty_file.txt\"\n",
"try:\n",
" da_empty = DataAnalyzer(EMPTY_FILE)\n",
"except NoData:\n",
" print(\"All ok :)\")\n",
"else: # There was no exception\n",
" assert False"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: notebooks/beginner/html/01_strings.html
================================================
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>01_strings</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<style type="text/css">
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
</style>
<style type="text/css">
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*
* Mozilla scrollbar styling
*/
/* use standard opaque scrollbars for most nodes */
[data-jp-theme-scrollbars='true'] {
scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
var(--jp-scrollbar-background-color);
}
/* for code nodes, use a transparent style of scrollbar. These selectors
* will match lower in the tree, and so will override the above */
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
}
/* tiny scrollbar */
.jp-scrollbar-tiny {
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
scrollbar-width: thin;
}
/*
* Webkit scrollbar styling
*/
/* use standard opaque scrollbars for most nodes */
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar,
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-corner {
background: var(--jp-scrollbar-background-color);
}
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-thumb {
background: rgb(var(--jp-scrollbar-thumb-color));
border: var(--jp-scrollbar-thumb-margin) solid transparent;
background-clip: content-box;
border-radius: var(--jp-scrollbar-thumb-radius);
}
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:horizontal {
border-left: var(--jp-scrollbar-endpad) solid
var(--jp-scrollbar-background-color);
border-right: var(--jp-scrollbar-endpad) solid
var(--jp-scrollbar-background-color);
}
[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:vertical {
border-top: var(--jp-scrollbar-endpad) solid
var(--jp-scrollbar-background-color);
border-bottom: var(--jp-scrollbar-endpad) solid
var(--jp-scrollbar-background-color);
}
/* for code nodes, use a transparent style of scrollbar */
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar,
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar,
[data-jp-theme-scrollbars='true']
.CodeMirror-hscrollbar::-webkit-scrollbar-corner,
[data-jp-theme-scrollbars='true']
.CodeMirror-vscrollbar::-webkit-scrollbar-corner {
background-color: transparent;
}
[data-jp-theme-scrollbars='true']
.CodeMirror-hscrollbar::-webkit-scrollbar-thumb,
[data-jp-theme-scrollbars='true']
.CodeMirror-vscrollbar::-webkit-scrollbar-thumb {
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
border: var(--jp-scrollbar-thumb-margin) solid transparent;
background-clip: content-box;
border-radius: var(--jp-scrollbar-thumb-radius);
}
[data-jp-theme-scrollbars='true']
.CodeMirror-hscrollbar::-webkit-scrollbar-track:horizontal {
border-left: var(--jp-scrollbar-endpad) solid transparent;
border-right: var(--jp-scrollbar-endpad) solid transparent;
}
[data-jp-theme-scrollbars='true']
.CodeMirror-vscrollbar::-webkit-scrollbar-track:vertical {
border-top: var(--jp-scrollbar-endpad) solid transparent;
border-bottom: var(--jp-scrollbar-endpad) solid transparent;
}
/* tiny scrollbar */
.jp-scrollbar-tiny::-webkit-scrollbar,
.jp-scrollbar-tiny::-webkit-scrollbar-corner {
background-color: transparent;
height: 4px;
width: 4px;
}
.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
}
.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
border-left: 0px solid transparent;
border-right: 0px solid transparent;
}
.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
border-top: 0px solid transparent;
border-bottom: 0px solid transparent;
}
/*
* Phosphor
*/
.lm-ScrollBar[data-orientation='horizontal'] {
min-height: 16px;
max-height: 16px;
min-width: 45px;
border-top: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='vertical'] {
min-width: 16px;
max-width: 16px;
min-height: 45px;
border-left: 1px solid #a0a0a0;
}
.lm-ScrollBar-button {
background-color: #f0f0f0;
background-position: center center;
min-height: 15px;
max-height: 15px;
min-width: 15px;
max-width: 15px;
}
.lm-ScrollBar-button:hover {
background-color: #dadada;
}
.lm-ScrollBar-button.lm-mod-active {
background-color: #cdcdcd;
}
.lm-ScrollBar-track {
background: #f0f0f0;
}
.lm-ScrollBar-thumb {
background: #cdcdcd;
}
.lm-ScrollBar-thumb:hover {
background: #bababa;
}
.lm-ScrollBar-thumb.lm-mod-active {
background: #a0a0a0;
}
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
height: 100%;
min-width: 15px;
border-left: 1px solid #a0a0a0;
border-right: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
width: 100%;
min-height: 15px;
border-top: 1px solid #a0a0a0;
border-bottom: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='horizontal']
.lm-ScrollBar-button[data-action='decrement'] {
background-image: var(--jp-icon-caret-left);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='horizontal']
.lm-ScrollBar-button[data-action='increment'] {
background-image: var(--jp-icon-caret-right);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='vertical']
.lm-ScrollBar-button[data-action='decrement'] {
background-image: var(--jp-icon-caret-up);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='vertical']
.lm-ScrollBar-button[data-action='increment'] {
background-image: var(--jp-icon-caret-down);
background-size: 17px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-Widget, /* </DEPRECATED> */
.lm-Widget {
box-sizing: border-box;
position: relative;
overflow: hidden;
cursor: default;
}
/* <DEPRECATED> */
.p-Widget.p-mod-hidden, /* </DEPRECATED> */
.lm-Widget.lm-mod-hidden {
display: none !important;
}
.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
/* Title is rotated for horizontal accordion panel using CSS */
display: block;
transform-origin: top left;
transform: rotate(-90deg) translate(-100%);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-CommandPalette, /* </DEPRECATED> */
.lm-CommandPalette {
display: flex;
flex-direction: column;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-CommandPalette-search, /* </DEPRECATED> */
.lm-CommandPalette-search {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-CommandPalette-content, /* </DEPRECATED> */
.lm-CommandPalette-content {
flex: 1 1 auto;
margin: 0;
padding: 0;
min-height: 0;
overflow: auto;
list-style-type: none;
}
/* <DEPRECATED> */
.p-CommandPalette-header, /* </DEPRECATED> */
.lm-CommandPalette-header {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/* <DEPRECATED> */
.p-CommandPalette-item, /* </DEPRECATED> */
.lm-CommandPalette-item {
display: flex;
flex-direction: row;
}
/* <DEPRECATED> */
.p-CommandPalette-itemIcon, /* </DEPRECATED> */
.lm-CommandPalette-itemIcon {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-CommandPalette-itemContent, /* </DEPRECATED> */
.lm-CommandPalette-itemContent {
flex: 1 1 auto;
overflow: hidden;
}
/* <DEPRECATED> */
.p-CommandPalette-itemShortcut, /* </DEPRECATED> */
.lm-CommandPalette-itemShortcut {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-CommandPalette-itemLabel, /* </DEPRECATED> */
.lm-CommandPalette-itemLabel {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.lm-close-icon {
border: 1px solid transparent;
background-color: transparent;
position: absolute;
z-index: 1;
right: 3%;
top: 0;
bottom: 0;
margin: auto;
padding: 7px 0;
display: none;
vertical-align: middle;
outline: 0;
cursor: pointer;
}
.lm-close-icon:after {
content: 'X';
display: block;
width: 15px;
height: 15px;
text-align: center;
color: #000;
font-weight: normal;
font-size: 12px;
cursor: pointer;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-DockPanel, /* </DEPRECATED> */
.lm-DockPanel {
z-index: 0;
}
/* <DEPRECATED> */
.p-DockPanel-widget, /* </DEPRECATED> */
.lm-DockPanel-widget {
z-index: 0;
}
/* <DEPRECATED> */
.p-DockPanel-tabBar, /* </DEPRECATED> */
.lm-DockPanel-tabBar {
z-index: 1;
}
/* <DEPRECATED> */
.p-DockPanel-handle, /* </DEPRECATED> */
.lm-DockPanel-handle {
z-index: 2;
}
/* <DEPRECATED> */
.p-DockPanel-handle.p-mod-hidden, /* </DEPRECATED> */
.lm-DockPanel-handle.lm-mod-hidden {
display: none !important;
}
/* <DEPRECATED> */
.p-DockPanel-handle:after, /* </DEPRECATED> */
.lm-DockPanel-handle:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
content: '';
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='horizontal'],
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='horizontal'] {
cursor: ew-resize;
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='vertical'],
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='vertical'] {
cursor: ns-resize;
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='horizontal']:after,
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='horizontal']:after {
left: 50%;
min-width: 8px;
transform: translateX(-50%);
}
/* <DEPRECATED> */
.p-DockPanel-handle[data-orientation='vertical']:after,
/* </DEPRECATED> */
.lm-DockPanel-handle[data-orientation='vertical']:after {
top: 50%;
min-height: 8px;
transform: translateY(-50%);
}
/* <DEPRECATED> */
.p-DockPanel-overlay, /* </DEPRECATED> */
.lm-DockPanel-overlay {
z-index: 3;
box-sizing: border-box;
pointer-events: none;
}
/* <DEPRECATED> */
.p-DockPanel-overlay.p-mod-hidden, /* </DEPRECATED> */
.lm-DockPanel-overlay.lm-mod-hidden {
display: none !important;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-Menu, /* </DEPRECATED> */
.lm-Menu {
z-index: 10000;
position: absolute;
white-space: nowrap;
overflow-x: hidden;
overflow-y: auto;
outline: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-Menu-content, /* </DEPRECATED> */
.lm-Menu-content {
margin: 0;
padding: 0;
display: table;
list-style-type: none;
}
/* <DEPRECATED> */
.p-Menu-item, /* </DEPRECATED> */
.lm-Menu-item {
display: table-row;
}
/* <DEPRECATED> */
.p-Menu-item.p-mod-hidden,
.p-Menu-item.p-mod-collapsed,
/* </DEPRECATED> */
.lm-Menu-item.lm-mod-hidden,
.lm-Menu-item.lm-mod-collapsed {
display: none !important;
}
/* <DEPRECATED> */
.p-Menu-itemIcon,
.p-Menu-itemSubmenuIcon,
/* </DEPRECATED> */
.lm-Menu-itemIcon,
.lm-Menu-itemSubmenuIcon {
display: table-cell;
text-align: center;
}
/* <DEPRECATED> */
.p-Menu-itemLabel, /* </DEPRECATED> */
.lm-Menu-itemLabel {
display: table-cell;
text-align: left;
}
/* <DEPRECATED> */
.p-Menu-itemShortcut, /* </DEPRECATED> */
.lm-Menu-itemShortcut {
display: table-cell;
text-align: right;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-MenuBar, /* </DEPRECATED> */
.lm-MenuBar {
outline: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-MenuBar-content, /* </DEPRECATED> */
.lm-MenuBar-content {
margin: 0;
padding: 0;
display: flex;
flex-direction: row;
list-style-type: none;
}
/* <DEPRECATED> */
.p--MenuBar-item, /* </DEPRECATED> */
.lm-MenuBar-item {
box-sizing: border-box;
}
/* <DEPRECATED> */
.p-MenuBar-itemIcon,
.p-MenuBar-itemLabel,
/* </DEPRECATED> */
.lm-MenuBar-itemIcon,
.lm-MenuBar-itemLabel {
display: inline-block;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-ScrollBar, /* </DEPRECATED> */
.lm-ScrollBar {
display: flex;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-ScrollBar[data-orientation='horizontal'],
/* </DEPRECATED> */
.lm-ScrollBar[data-orientation='horizontal'] {
flex-direction: row;
}
/* <DEPRECATED> */
.p-ScrollBar[data-orientation='vertical'],
/* </DEPRECATED> */
.lm-ScrollBar[data-orientation='vertical'] {
flex-direction: column;
}
/* <DEPRECATED> */
.p-ScrollBar-button, /* </DEPRECATED> */
.lm-ScrollBar-button {
box-sizing: border-box;
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-ScrollBar-track, /* </DEPRECATED> */
.lm-ScrollBar-track {
box-sizing: border-box;
position: relative;
overflow: hidden;
flex: 1 1 auto;
}
/* <DEPRECATED> */
.p-ScrollBar-thumb, /* </DEPRECATED> */
.lm-ScrollBar-thumb {
box-sizing: border-box;
position: absolute;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-SplitPanel-child, /* </DEPRECATED> */
.lm-SplitPanel-child {
z-index: 0;
}
/* <DEPRECATED> */
.p-SplitPanel-handle, /* </DEPRECATED> */
.lm-SplitPanel-handle {
z-index: 1;
}
/* <DEPRECATED> */
.p-SplitPanel-handle.p-mod-hidden, /* </DEPRECATED> */
.lm-SplitPanel-handle.lm-mod-hidden {
display: none !important;
}
/* <DEPRECATED> */
.p-SplitPanel-handle:after, /* </DEPRECATED> */
.lm-SplitPanel-handle:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
content: '';
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
cursor: ew-resize;
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
cursor: ns-resize;
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle:after,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
left: 50%;
min-width: 8px;
transform: translateX(-50%);
}
/* <DEPRECATED> */
.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle:after,
/* </DEPRECATED> */
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
top: 50%;
min-height: 8px;
transform: translateY(-50%);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-TabBar, /* </DEPRECATED> */
.lm-TabBar {
display: flex;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='horizontal'], /* </DEPRECATED> */
.lm-TabBar[data-orientation='horizontal'] {
flex-direction: row;
align-items: flex-end;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='vertical'], /* </DEPRECATED> */
.lm-TabBar[data-orientation='vertical'] {
flex-direction: column;
align-items: flex-end;
}
/* <DEPRECATED> */
.p-TabBar-content, /* </DEPRECATED> */
.lm-TabBar-content {
margin: 0;
padding: 0;
display: flex;
flex: 1 1 auto;
list-style-type: none;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='horizontal'] > .p-TabBar-content,
/* </DEPRECATED> */
.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
flex-direction: row;
}
/* <DEPRECATED> */
.p-TabBar[data-orientation='vertical'] > .p-TabBar-content,
/* </DEPRECATED> */
.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
flex-direction: column;
}
/* <DEPRECATED> */
.p-TabBar-tab, /* </DEPRECATED> */
.lm-TabBar-tab {
display: flex;
flex-direction: row;
box-sizing: border-box;
overflow: hidden;
touch-action: none; /* Disable native Drag/Drop */
}
/* <DEPRECATED> */
.p-TabBar-tabIcon,
.p-TabBar-tabCloseIcon,
/* </DEPRECATED> */
.lm-TabBar-tabIcon,
.lm-TabBar-tabCloseIcon {
flex: 0 0 auto;
}
/* <DEPRECATED> */
.p-TabBar-tabLabel, /* </DEPRECATED> */
.lm-TabBar-tabLabel {
flex: 1 1 auto;
overflow: hidden;
white-space: nowrap;
}
.lm-TabBar-tabInput {
user-select: all;
width: 100%;
box-sizing: border-box;
}
/* <DEPRECATED> */
.p-TabBar-tab.p-mod-hidden, /* </DEPRECATED> */
.lm-TabBar-tab.lm-mod-hidden {
display: none !important;
}
.lm-TabBar-addButton.lm-mod-hidden {
display: none !important;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging .p-TabBar-tab, /* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
position: relative;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab,
/* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
left: 0;
transition: left 150ms ease;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab,
/* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
top: 0;
transition: top 150ms ease;
}
/* <DEPRECATED> */
.p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging,
/* </DEPRECATED> */
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
transition: none;
}
.lm-TabBar-tabLabel .lm-TabBar-tabInput {
user-select: all;
width: 100%;
box-sizing: border-box;
background: inherit;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/* <DEPRECATED> */
.p-TabPanel-tabBar, /* </DEPRECATED> */
.lm-TabPanel-tabBar {
z-index: 1;
}
/* <DEPRECATED> */
.p-TabPanel-stackedPanel, /* </DEPRECATED> */
.lm-TabPanel-stackedPanel {
z-index: 0;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
@charset "UTF-8";
html{
-webkit-box-sizing:border-box;
box-sizing:border-box; }
*,
*::before,
*::after{
-webkit-box-sizing:inherit;
box-sizing:inherit; }
body{
font-size:14px;
font-weight:400;
letter-spacing:0;
line-height:1.28581;
text-transform:none;
color:#182026;
font-family:-apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", "Icons16", sans-serif; }
p{
margin-bottom:10px;
margin-top:0; }
small{
font-size:12px; }
strong{
font-weight:600; }
::-moz-selection{
background:rgba(125, 188, 255, 0.6); }
::selection{
background:rgba(125, 188, 255, 0.6); }
.bp3-heading{
color:#182026;
font-weight:600;
margin:0 0 10px;
padding:0; }
.bp3-dark .bp3-heading{
color:#f5f8fa; }
h1.bp3-heading, .bp3-running-text h1{
font-size:36px;
line-height:40px; }
h2.bp3-heading, .bp3-running-text h2{
font-size:28px;
line-height:32px; }
h3.bp3-heading, .bp3-running-text h3{
font-size:22px;
line-height:25px; }
h4.bp3-heading, .bp3-running-text h4{
font-size:18px;
line-height:21px; }
h5.bp3-heading, .bp3-running-text h5{
font-size:16px;
line-height:19px; }
h6.bp3-heading, .bp3-running-text h6{
font-size:14px;
line-height:16px; }
.bp3-ui-text{
font-size:14px;
font-weight:400;
letter-spacing:0;
line-height:1.28581;
text-transform:none; }
.bp3-monospace-text{
font-family:monospace;
text-transform:none; }
.bp3-text-muted{
color:#5c7080; }
.bp3-dark .bp3-text-muted{
color:#a7b6c2; }
.bp3-text-disabled{
color:rgba(92, 112, 128, 0.6); }
.bp3-dark .bp3-text-disabled{
color:rgba(167, 182, 194, 0.6); }
.bp3-text-overflow-ellipsis{
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
word-wrap:normal; }
.bp3-running-text{
font-size:14px;
line-height:1.5; }
.bp3-running-text h1{
color:#182026;
font-weight:600;
margin-bottom:20px;
margin-top:40px; }
.bp3-dark .bp3-running-text h1{
color:#f5f8fa; }
.bp3-running-text h2{
color:#182026;
font-weight:600;
margin-bottom:20px;
margin-top:40px; }
.bp3-dark .bp3-running-text h2{
color:#f5f8fa; }
.bp3-running-text h3{
color:#182026;
font-weight:600;
margin-bottom:20px;
margin-top:40px; }
.bp3-dark .bp3-running-text h3{
color:#f5f8fa; }
.bp3-running-text h4{
color:#182026;
font-weight:600;
margin-bottom:20px;
margin-top:40px; }
.bp3-dark .bp3-running-text h4{
color:#f5f8fa; }
.bp3-running-text h5{
color:#182026;
font-weight:600;
margin-bottom:20px;
margin-top:40px; }
.bp3-dark .bp3-running-text h5{
color:#f5f8fa; }
.bp3-running-text h6{
color:#182026;
font-weight:600;
margin-bottom:20px;
margin-top:40px; }
.bp3-dark .bp3-running-text h6{
color:#f5f8fa; }
.bp3-running-text hr{
border:none;
border-bottom:1px solid rgba(16, 22, 26, 0.15);
margin:20px 0; }
.bp3-dark .bp3-running-text hr{
border-color:rgba(255, 255, 255, 0.15); }
.bp3-running-text p{
margin:0 0 10px;
padding:0; }
.bp3-text-large{
font-size:16px; }
.bp3-text-small{
font-size:12px; }
a{
color:#106ba3;
text-decoration:none; }
a:hover{
color:#106ba3;
cursor:pointer;
text-decoration:underline; }
a .bp3-icon, a .bp3-icon-standard, a .bp3-icon-large{
color:inherit; }
a code,
.bp3-dark a code{
color:inherit; }
.bp3-dark a,
.bp3-dark a:hover{
color:#48aff0; }
.bp3-dark a .bp3-icon, .bp3-dark a .bp3-icon-standard, .bp3-dark a .bp3-icon-large,
.bp3-dark a:hover .bp3-icon,
.bp3-dark a:hover .bp3-icon-standard,
.bp3-dark a:hover .bp3-icon-large{
color:inherit; }
.bp3-running-text code, .bp3-code{
font-family:monospace;
text-transform:none;
background:rgba(255, 255, 255, 0.7);
border-radius:3px;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2);
color:#5c7080;
font-size:smaller;
padding:2px 5px; }
.bp3-dark .bp3-running-text code, .bp3-running-text .bp3-dark code, .bp3-dark .bp3-code{
background:rgba(16, 22, 26, 0.3);
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4);
color:#a7b6c2; }
.bp3-running-text a > code, a > .bp3-code{
color:#137cbd; }
.bp3-dark .bp3-running-text a > code, .bp3-running-text .bp3-dark a > code, .bp3-dark a > .bp3-code{
color:inherit; }
.bp3-running-text pre, .bp3-code-block{
font-family:monospace;
text-transform:none;
background:rgba(255, 255, 255, 0.7);
border-radius:3px;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15);
color:#182026;
display:block;
font-size:13px;
line-height:1.4;
margin:10px 0;
padding:13px 15px 12px;
word-break:break-all;
word-wrap:break-word; }
.bp3-dark .bp3-running-text pre, .bp3-running-text .bp3-dark pre, .bp3-dark .bp3-code-block{
background:rgba(16, 22, 26, 0.3);
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4);
color:#f5f8fa; }
.bp3-running-text pre > code, .bp3-code-block > code{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:inherit;
font-size:inherit;
padding:0; }
.bp3-running-text kbd, .bp3-key{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
background:#ffffff;
border-radius:3px;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
color:#5c7080;
display:-webkit-inline-box;
display:-ms-inline-flexbox;
display:inline-flex;
font-family:inherit;
font-size:12px;
height:24px;
-webkit-box-pack:center;
-ms-flex-pack:center;
justify-content:center;
line-height:24px;
min-width:24px;
padding:3px 6px;
vertical-align:middle; }
.bp3-running-text kbd .bp3-icon, .bp3-key .bp3-icon, .bp3-running-text kbd .bp3-icon-standard, .bp3-key .bp3-icon-standard, .bp3-running-text kbd .bp3-icon-large, .bp3-key .bp3-icon-large{
margin-right:5px; }
.bp3-dark .bp3-running-text kbd, .bp3-running-text .bp3-dark kbd, .bp3-dark .bp3-key{
background:#394b59;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
color:#a7b6c2; }
.bp3-running-text blockquote, .bp3-blockquote{
border-left:solid 4px rgba(167, 182, 194, 0.5);
margin:0 0 10px;
padding:0 20px; }
.bp3-dark .bp3-running-text blockquote, .bp3-running-text .bp3-dark blockquote, .bp3-dark .bp3-blockquote{
border-color:rgba(115, 134, 148, 0.5); }
.bp3-running-text ul,
.bp3-running-text ol, .bp3-list{
margin:10px 0;
padding-left:30px; }
.bp3-running-text ul li:not(:last-child), .bp3-running-text ol li:not(:last-child), .bp3-list li:not(:last-child){
margin-bottom:5px; }
.bp3-running-text ul ol, .bp3-running-text ol ol, .bp3-list ol,
.bp3-running-text ul ul,
.bp3-running-text ol ul,
.bp3-list ul{
margin-top:5px; }
.bp3-list-unstyled{
list-style:none;
margin:0;
padding:0; }
.bp3-list-unstyled li{
padding:0; }
.bp3-rtl{
text-align:right; }
.bp3-dark{
color:#f5f8fa; }
:focus{
outline:rgba(19, 124, 189, 0.6) auto 2px;
outline-offset:2px;
-moz-outline-radius:6px; }
.bp3-focus-disabled :focus{
outline:none !important; }
.bp3-focus-disabled :focus ~ .bp3-control-indicator{
outline:none !important; }
.bp3-alert{
max-width:400px;
padding:20px; }
.bp3-alert-body{
display:-webkit-box;
display:-ms-flexbox;
display:flex; }
.bp3-alert-body .bp3-icon{
font-size:40px;
margin-right:20px;
margin-top:0; }
.bp3-alert-contents{
word-break:break-word; }
.bp3-alert-footer{
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-orient:horizontal;
-webkit-box-direction:reverse;
-ms-flex-direction:row-reverse;
flex-direction:row-reverse;
margin-top:10px; }
.bp3-alert-footer .bp3-button{
margin-left:10px; }
.bp3-breadcrumbs{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
cursor:default;
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-ms-flex-wrap:wrap;
flex-wrap:wrap;
height:30px;
list-style:none;
margin:0;
padding:0; }
.bp3-breadcrumbs > li{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
display:-webkit-box;
display:-ms-flexbox;
display:flex; }
.bp3-breadcrumbs > li::after{
background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42L8.59 8 5.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z' fill='%235C7080'/%3e%3c/svg%3e");
content:"";
display:block;
height:16px;
margin:0 5px;
width:16px; }
.bp3-breadcrumbs > li:last-of-type::after{
display:none; }
.bp3-breadcrumb,
.bp3-breadcrumb-current,
.bp3-breadcrumbs-collapsed{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
display:-webkit-inline-box;
display:-ms-inline-flexbox;
display:inline-flex;
font-size:16px; }
.bp3-breadcrumb,
.bp3-breadcrumbs-collapsed{
color:#5c7080; }
.bp3-breadcrumb:hover{
text-decoration:none; }
.bp3-breadcrumb.bp3-disabled{
color:rgba(92, 112, 128, 0.6);
cursor:not-allowed; }
.bp3-breadcrumb .bp3-icon{
margin-right:5px; }
.bp3-breadcrumb-current{
color:inherit;
font-weight:600; }
.bp3-breadcrumb-current .bp3-input{
font-size:inherit;
font-weight:inherit;
vertical-align:baseline; }
.bp3-breadcrumbs-collapsed{
background:#ced9e0;
border:none;
border-radius:3px;
cursor:pointer;
margin-right:2px;
padding:1px 5px;
vertical-align:text-bottom; }
.bp3-breadcrumbs-collapsed::before{
background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%235C7080'%3e%3ccircle cx='2' cy='8.03' r='2'/%3e%3ccircle cx='14' cy='8.03' r='2'/%3e%3ccircle cx='8' cy='8.03' r='2'/%3e%3c/g%3e%3c/svg%3e") center no-repeat;
content:"";
display:block;
height:16px;
width:16px; }
.bp3-breadcrumbs-collapsed:hover{
background:#bfccd6;
color:#182026;
text-decoration:none; }
.bp3-dark .bp3-breadcrumb,
.bp3-dark .bp3-breadcrumbs-collapsed{
color:#a7b6c2; }
.bp3-dark .bp3-breadcrumbs > li::after{
color:#a7b6c2; }
.bp3-dark .bp3-breadcrumb.bp3-disabled{
color:rgba(167, 182, 194, 0.6); }
.bp3-dark .bp3-breadcrumb-current{
color:#f5f8fa; }
.bp3-dark .bp3-breadcrumbs-collapsed{
background:rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-breadcrumbs-collapsed:hover{
background:rgba(16, 22, 26, 0.6);
color:#f5f8fa; }
.bp3-button{
display:-webkit-inline-box;
display:-ms-inline-flexbox;
display:inline-flex;
-webkit-box-orient:horizontal;
-webkit-box-direction:normal;
-ms-flex-direction:row;
flex-direction:row;
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
border:none;
border-radius:3px;
cursor:pointer;
font-size:14px;
-webkit-box-pack:center;
-ms-flex-pack:center;
justify-content:center;
padding:5px 10px;
text-align:left;
vertical-align:middle;
min-height:30px;
min-width:30px; }
.bp3-button > *{
-webkit-box-flex:0;
-ms-flex-positive:0;
flex-grow:0;
-ms-flex-negative:0;
flex-shrink:0; }
.bp3-button > .bp3-fill{
-webkit-box-flex:1;
-ms-flex-positive:1;
flex-grow:1;
-ms-flex-negative:1;
flex-shrink:1; }
.bp3-button::before,
.bp3-button > *{
margin-right:7px; }
.bp3-button:empty::before,
.bp3-button > :last-child{
margin-right:0; }
.bp3-button:empty{
padding:0 !important; }
.bp3-button:disabled, .bp3-button.bp3-disabled{
cursor:not-allowed; }
.bp3-button.bp3-fill{
display:-webkit-box;
display:-ms-flexbox;
display:flex;
width:100%; }
.bp3-button.bp3-align-right,
.bp3-align-right .bp3-button{
text-align:right; }
.bp3-button.bp3-align-left,
.bp3-align-left .bp3-button{
text-align:left; }
.bp3-button:not([class*="bp3-intent-"]){
background-color:#f5f8fa;
background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0)));
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0));
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
color:#182026; }
.bp3-button:not([class*="bp3-intent-"]):hover{
background-clip:padding-box;
background-color:#ebf1f5;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); }
.bp3-button:not([class*="bp3-intent-"]):active, .bp3-button:not([class*="bp3-intent-"]).bp3-active{
background-color:#d8e1e8;
background-image:none;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); }
.bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{
background-color:rgba(206, 217, 224, 0.5);
background-image:none;
-webkit-box-shadow:none;
box-shadow:none;
color:rgba(92, 112, 128, 0.6);
cursor:not-allowed;
outline:none; }
.bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active:hover, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active:hover{
background:rgba(206, 217, 224, 0.7); }
.bp3-button.bp3-intent-primary{
background-color:#137cbd;
background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
color:#ffffff; }
.bp3-button.bp3-intent-primary:hover, .bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{
color:#ffffff; }
.bp3-button.bp3-intent-primary:hover{
background-color:#106ba3;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{
background-color:#0e5a8a;
background-image:none;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-primary:disabled, .bp3-button.bp3-intent-primary.bp3-disabled{
background-color:rgba(19, 124, 189, 0.5);
background-image:none;
border-color:transparent;
-webkit-box-shadow:none;
box-shadow:none;
color:rgba(255, 255, 255, 0.6); }
.bp3-button.bp3-intent-success{
background-color:#0f9960;
background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
color:#ffffff; }
.bp3-button.bp3-intent-success:hover, .bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{
color:#ffffff; }
.bp3-button.bp3-intent-success:hover{
background-color:#0d8050;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{
background-color:#0a6640;
background-image:none;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-success:disabled, .bp3-button.bp3-intent-success.bp3-disabled{
background-color:rgba(15, 153, 96, 0.5);
background-image:none;
border-color:transparent;
-webkit-box-shadow:none;
box-shadow:none;
color:rgba(255, 255, 255, 0.6); }
.bp3-button.bp3-intent-warning{
background-color:#d9822b;
background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
color:#ffffff; }
.bp3-button.bp3-intent-warning:hover, .bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{
color:#ffffff; }
.bp3-button.bp3-intent-warning:hover{
background-color:#bf7326;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{
background-color:#a66321;
background-image:none;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-warning:disabled, .bp3-button.bp3-intent-warning.bp3-disabled{
background-color:rgba(217, 130, 43, 0.5);
background-image:none;
border-color:transparent;
-webkit-box-shadow:none;
box-shadow:none;
color:rgba(255, 255, 255, 0.6); }
.bp3-button.bp3-intent-danger{
background-color:#db3737;
background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0)));
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
color:#ffffff; }
.bp3-button.bp3-intent-danger:hover, .bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{
color:#ffffff; }
.bp3-button.bp3-intent-danger:hover{
background-color:#c23030;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{
background-color:#a82a2a;
background-image:none;
-webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); }
.bp3-button.bp3-intent-danger:disabled, .bp3-button.bp3-intent-danger.bp3-disabled{
background-color:rgba(219, 55, 55, 0.5);
background-image:none;
border-color:transparent;
-webkit-box-shadow:none;
box-shadow:none;
color:rgba(255, 255, 255, 0.6); }
.bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{
stroke:#ffffff; }
.bp3-button.bp3-large,
.bp3-large .bp3-button{
min-height:40px;
min-width:40px;
font-size:16px;
padding:5px 15px; }
.bp3-button.bp3-large::before,
.bp3-button.bp3-large > *,
.bp3-large .bp3-button::before,
.bp3-large .bp3-button > *{
margin-right:10px; }
.bp3-button.bp3-large:empty::before,
.bp3-button.bp3-large > :last-child,
.bp3-large .bp3-button:empty::before,
.bp3-large .bp3-button > :last-child{
margin-right:0; }
.bp3-button.bp3-small,
.bp3-small .bp3-button{
min-height:24px;
min-width:24px;
padding:0 7px; }
.bp3-button.bp3-loading{
position:relative; }
.bp3-button.bp3-loading[class*="bp3-icon-"]::before{
visibility:hidden; }
.bp3-button.bp3-loading .bp3-button-spinner{
margin:0;
position:absolute; }
.bp3-button.bp3-loading > :not(.bp3-button-spinner){
visibility:hidden; }
.bp3-button[class*="bp3-icon-"]::before{
font-family:"Icons16", sans-serif;
font-size:16px;
font-style:normal;
font-weight:400;
line-height:1;
-moz-osx-font-smoothing:grayscale;
-webkit-font-smoothing:antialiased;
color:#5c7080; }
.bp3-button .bp3-icon, .bp3-button .bp3-icon-standard, .bp3-button .bp3-icon-large{
color:#5c7080; }
.bp3-button .bp3-icon.bp3-align-right, .bp3-button .bp3-icon-standard.bp3-align-right, .bp3-button .bp3-icon-large.bp3-align-right{
margin-left:7px; }
.bp3-button .bp3-icon:first-child:last-child,
.bp3-button .bp3-spinner + .bp3-icon:last-child{
margin:0 -7px; }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]){
background-color:#394b59;
background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0)));
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0));
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4);
color:#f5f8fa; }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover, .bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{
color:#f5f8fa; }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover{
background-color:#30404d;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{
background-color:#202b33;
background-image:none;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{
background-color:rgba(57, 75, 89, 0.5);
background-image:none;
-webkit-box-shadow:none;
box-shadow:none;
color:rgba(167, 182, 194, 0.6); }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active{
background:rgba(57, 75, 89, 0.7); }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-button-spinner .bp3-spinner-head{
background:rgba(16, 22, 26, 0.5);
stroke:#8a9ba8; }
.bp3-dark .bp3-button:not([class*="bp3-intent-"])[class*="bp3-icon-"]::before{
color:#a7b6c2; }
.bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-standard, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-large{
color:#a7b6c2; }
.bp3-dark .bp3-button[class*="bp3-intent-"]{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-button[class*="bp3-intent-"]:hover{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-button[class*="bp3-intent-"]:active, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-active{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); }
.bp3-dark .bp3-button[class*="bp3-intent-"]:disabled, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-disabled{
background-image:none;
-webkit-box-shadow:none;
box-shadow:none;
color:rgba(255, 255, 255, 0.3); }
.bp3-dark .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{
stroke:#8a9ba8; }
.bp3-button:disabled::before,
.bp3-button:disabled .bp3-icon, .bp3-button:disabled .bp3-icon-standard, .bp3-button:disabled .bp3-icon-large, .bp3-button.bp3-disabled::before,
.bp3-button.bp3-disabled .bp3-icon, .bp3-button.bp3-disabled .bp3-icon-standard, .bp3-button.bp3-disabled .bp3-icon-large, .bp3-button[class*="bp3-intent-"]::before,
.bp3-button[class*="bp3-intent-"] .bp3-icon, .bp3-button[class*="bp3-intent-"] .bp3-icon-standard, .bp3-button[class*="bp3-intent-"] .bp3-icon-large{
color:inherit !important; }
.bp3-button.bp3-minimal{
background:none;
-webkit-box-shadow:none;
box-shadow:none; }
.bp3-button.bp3-minimal:hover{
background:rgba(167, 182, 194, 0.3);
-webkit-box-shadow:none;
box-shadow:none;
color:#182026;
text-decoration:none; }
.bp3-button.bp3-minimal:active, .bp3-button.bp3-minimal.bp3-active{
background:rgba(115, 134, 148, 0.3);
-webkit-box-shadow:none;
box-shadow:none;
color:#182026; }
.bp3-button.bp3-minimal:disabled, .bp3-button.bp3-minimal:disabled:hover, .bp3-button.bp3-minimal.bp3-disabled, .bp3-button.bp3-minimal.bp3-disabled:hover{
background:none;
color:rgba(92, 112, 128, 0.6);
cursor:not-allowed; }
.bp3-button.bp3-minimal:disabled.bp3-active, .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{
background:rgba(115, 134, 148, 0.3); }
.bp3-dark .bp3-button.bp3-minimal{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:inherit; }
.bp3-dark .bp3-button.bp3-minimal:hover, .bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none; }
.bp3-dark .bp3-button.bp3-minimal:hover{
background:rgba(138, 155, 168, 0.15); }
.bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{
background:rgba(138, 155, 168, 0.3);
color:#f5f8fa; }
.bp3-dark .bp3-button.bp3-minimal:disabled, .bp3-dark .bp3-button.bp3-minimal:disabled:hover, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover{
background:none;
color:rgba(167, 182, 194, 0.6);
cursor:not-allowed; }
.bp3-dark .bp3-button.bp3-minimal:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{
background:rgba(138, 155, 168, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-primary{
color:#106ba3; }
.bp3-button.bp3-minimal.bp3-intent-primary:hover, .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#106ba3; }
.bp3-button.bp3-minimal.bp3-intent-primary:hover{
background:rgba(19, 124, 189, 0.15);
color:#106ba3; }
.bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{
background:rgba(19, 124, 189, 0.3);
color:#106ba3; }
.bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{
background:none;
color:rgba(16, 107, 163, 0.5); }
.bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{
background:rgba(19, 124, 189, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{
stroke:#106ba3; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary{
color:#48aff0; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:hover{
background:rgba(19, 124, 189, 0.2);
color:#48aff0; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{
background:rgba(19, 124, 189, 0.3);
color:#48aff0; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{
background:none;
color:rgba(72, 175, 240, 0.5); }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{
background:rgba(19, 124, 189, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-success{
color:#0d8050; }
.bp3-button.bp3-minimal.bp3-intent-success:hover, .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#0d8050; }
.bp3-button.bp3-minimal.bp3-intent-success:hover{
background:rgba(15, 153, 96, 0.15);
color:#0d8050; }
.bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{
background:rgba(15, 153, 96, 0.3);
color:#0d8050; }
.bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{
background:none;
color:rgba(13, 128, 80, 0.5); }
.bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{
background:rgba(15, 153, 96, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{
stroke:#0d8050; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success{
color:#3dcc91; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:hover{
background:rgba(15, 153, 96, 0.2);
color:#3dcc91; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{
background:rgba(15, 153, 96, 0.3);
color:#3dcc91; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{
background:none;
color:rgba(61, 204, 145, 0.5); }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{
background:rgba(15, 153, 96, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-warning{
color:#bf7326; }
.bp3-button.bp3-minimal.bp3-intent-warning:hover, .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#bf7326; }
.bp3-button.bp3-minimal.bp3-intent-warning:hover{
background:rgba(217, 130, 43, 0.15);
color:#bf7326; }
.bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{
background:rgba(217, 130, 43, 0.3);
color:#bf7326; }
.bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{
background:none;
color:rgba(191, 115, 38, 0.5); }
.bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{
background:rgba(217, 130, 43, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{
stroke:#bf7326; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning{
color:#ffb366; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:hover{
background:rgba(217, 130, 43, 0.2);
color:#ffb366; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{
background:rgba(217, 130, 43, 0.3);
color:#ffb366; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{
background:none;
color:rgba(255, 179, 102, 0.5); }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{
background:rgba(217, 130, 43, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-danger{
color:#c23030; }
.bp3-button.bp3-minimal.bp3-intent-danger:hover, .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#c23030; }
.bp3-button.bp3-minimal.bp3-intent-danger:hover{
background:rgba(219, 55, 55, 0.15);
color:#c23030; }
.bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{
background:rgba(219, 55, 55, 0.3);
color:#c23030; }
.bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{
background:none;
color:rgba(194, 48, 48, 0.5); }
.bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{
background:rgba(219, 55, 55, 0.3); }
.bp3-button.bp3-minimal.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{
stroke:#c23030; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger{
color:#ff7373; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:hover{
background:rgba(219, 55, 55, 0.2);
color:#ff7373; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{
background:rgba(219, 55, 55, 0.3);
color:#ff7373; }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{
background:none;
color:rgba(255, 115, 115, 0.5); }
.bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{
background:rgba(219, 55, 55, 0.3); }
.bp3-button.bp3-outlined{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
border:1px solid rgba(24, 32, 38, 0.2);
-webkit-box-sizing:border-box;
box-sizing:border-box; }
.bp3-button.bp3-outlined:hover{
background:rgba(167, 182, 194, 0.3);
-webkit-box-shadow:none;
box-shadow:none;
color:#182026;
text-decoration:none; }
.bp3-button.bp3-outlined:active, .bp3-button.bp3-outlined.bp3-active{
background:rgba(115, 134, 148, 0.3);
-webkit-box-shadow:none;
box-shadow:none;
color:#182026; }
.bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined.bp3-disabled:hover{
background:none;
color:rgba(92, 112, 128, 0.6);
cursor:not-allowed; }
.bp3-button.bp3-outlined:disabled.bp3-active, .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{
background:rgba(115, 134, 148, 0.3); }
.bp3-dark .bp3-button.bp3-outlined{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:inherit; }
.bp3-dark .bp3-button.bp3-outlined:hover, .bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none; }
.bp3-dark .bp3-button.bp3-outlined:hover{
background:rgba(138, 155, 168, 0.15); }
.bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{
background:rgba(138, 155, 168, 0.3);
color:#f5f8fa; }
.bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{
background:none;
color:rgba(167, 182, 194, 0.6);
cursor:not-allowed; }
.bp3-dark .bp3-button.bp3-outlined:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{
background:rgba(138, 155, 168, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-primary{
color:#106ba3; }
.bp3-button.bp3-outlined.bp3-intent-primary:hover, .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#106ba3; }
.bp3-button.bp3-outlined.bp3-intent-primary:hover{
background:rgba(19, 124, 189, 0.15);
color:#106ba3; }
.bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{
background:rgba(19, 124, 189, 0.3);
color:#106ba3; }
.bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{
background:none;
color:rgba(16, 107, 163, 0.5); }
.bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{
background:rgba(19, 124, 189, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{
stroke:#106ba3; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{
color:#48aff0; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:hover{
background:rgba(19, 124, 189, 0.2);
color:#48aff0; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{
background:rgba(19, 124, 189, 0.3);
color:#48aff0; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{
background:none;
color:rgba(72, 175, 240, 0.5); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{
background:rgba(19, 124, 189, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-success{
color:#0d8050; }
.bp3-button.bp3-outlined.bp3-intent-success:hover, .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#0d8050; }
.bp3-button.bp3-outlined.bp3-intent-success:hover{
background:rgba(15, 153, 96, 0.15);
color:#0d8050; }
.bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{
background:rgba(15, 153, 96, 0.3);
color:#0d8050; }
.bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{
background:none;
color:rgba(13, 128, 80, 0.5); }
.bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{
background:rgba(15, 153, 96, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{
stroke:#0d8050; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{
color:#3dcc91; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:hover{
background:rgba(15, 153, 96, 0.2);
color:#3dcc91; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{
background:rgba(15, 153, 96, 0.3);
color:#3dcc91; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{
background:none;
color:rgba(61, 204, 145, 0.5); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{
background:rgba(15, 153, 96, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-warning{
color:#bf7326; }
.bp3-button.bp3-outlined.bp3-intent-warning:hover, .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#bf7326; }
.bp3-button.bp3-outlined.bp3-intent-warning:hover{
background:rgba(217, 130, 43, 0.15);
color:#bf7326; }
.bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{
background:rgba(217, 130, 43, 0.3);
color:#bf7326; }
.bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{
background:none;
color:rgba(191, 115, 38, 0.5); }
.bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{
background:rgba(217, 130, 43, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{
stroke:#bf7326; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{
color:#ffb366; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:hover{
background:rgba(217, 130, 43, 0.2);
color:#ffb366; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{
background:rgba(217, 130, 43, 0.3);
color:#ffb366; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{
background:none;
color:rgba(255, 179, 102, 0.5); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{
background:rgba(217, 130, 43, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-danger{
color:#c23030; }
.bp3-button.bp3-outlined.bp3-intent-danger:hover, .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#c23030; }
.bp3-button.bp3-outlined.bp3-intent-danger:hover{
background:rgba(219, 55, 55, 0.15);
color:#c23030; }
.bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{
background:rgba(219, 55, 55, 0.3);
color:#c23030; }
.bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{
background:none;
color:rgba(194, 48, 48, 0.5); }
.bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{
background:rgba(219, 55, 55, 0.3); }
.bp3-button.bp3-outlined.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{
stroke:#c23030; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{
color:#ff7373; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:hover{
background:rgba(219, 55, 55, 0.2);
color:#ff7373; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{
background:rgba(219, 55, 55, 0.3);
color:#ff7373; }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{
background:none;
color:rgba(255, 115, 115, 0.5); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{
background:rgba(219, 55, 55, 0.3); }
.bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled:hover{
border-color:rgba(92, 112, 128, 0.1); }
.bp3-dark .bp3-button.bp3-outlined{
border-color:rgba(255, 255, 255, 0.4); }
.bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{
border-color:rgba(255, 255, 255, 0.2); }
.bp3-button.bp3-outlined.bp3-intent-primary{
border-color:rgba(16, 107, 163, 0.6); }
.bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{
border-color:rgba(16, 107, 163, 0.2); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{
border-color:rgba(72, 175, 240, 0.6); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{
border-color:rgba(72, 175, 240, 0.2); }
.bp3-button.bp3-outlined.bp3-intent-success{
border-color:rgba(13, 128, 80, 0.6); }
.bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{
border-color:rgba(13, 128, 80, 0.2); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{
border-color:rgba(61, 204, 145, 0.6); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{
border-color:rgba(61, 204, 145, 0.2); }
.bp3-button.bp3-outlined.bp3-intent-warning{
border-color:rgba(191, 115, 38, 0.6); }
.bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{
border-color:rgba(191, 115, 38, 0.2); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{
border-color:rgba(255, 179, 102, 0.6); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{
border-color:rgba(255, 179, 102, 0.2); }
.bp3-button.bp3-outlined.bp3-intent-danger{
border-color:rgba(194, 48, 48, 0.6); }
.bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{
border-color:rgba(194, 48, 48, 0.2); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{
border-color:rgba(255, 115, 115, 0.6); }
.bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{
border-color:rgba(255, 115, 115, 0.2); }
a.bp3-button{
text-align:center;
text-decoration:none;
-webkit-transition:none;
transition:none; }
a.bp3-button, a.bp3-button:hover, a.bp3-button:active{
color:#182026; }
a.bp3-button.bp3-disabled{
color:rgba(92, 112, 128, 0.6); }
.bp3-button-text{
-webkit-box-flex:0;
-ms-flex:0 1 auto;
flex:0 1 auto; }
.bp3-button.bp3-align-left .bp3-button-text, .bp3-button.bp3-align-right .bp3-button-text,
.bp3-button-group.bp3-align-left .bp3-button-text,
.bp3-button-group.bp3-align-right .bp3-button-text{
-webkit-box-flex:1;
-ms-flex:1 1 auto;
flex:1 1 auto; }
.bp3-button-group{
display:-webkit-inline-box;
display:-ms-inline-flexbox;
display:inline-flex; }
.bp3-button-group .bp3-button{
-webkit-box-flex:0;
-ms-flex:0 0 auto;
flex:0 0 auto;
position:relative;
z-index:4; }
.bp3-button-group .bp3-button:focus{
z-index:5; }
.bp3-button-group .bp3-button:hover{
z-index:6; }
.bp3-button-group .bp3-button:active, .bp3-button-group .bp3-button.bp3-active{
z-index:7; }
.bp3-button-group .bp3-button:disabled, .bp3-button-group .bp3-button.bp3-disabled{
z-index:3; }
.bp3-button-group .bp3-button[class*="bp3-intent-"]{
z-index:9; }
.bp3-button-group .bp3-button[class*="bp3-intent-"]:focus{
z-index:10; }
.bp3-button-group .bp3-button[class*="bp3-intent-"]:hover{
z-index:11; }
.bp3-button-group .bp3-button[class*="bp3-intent-"]:active, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-active{
z-index:12; }
.bp3-button-group .bp3-button[class*="bp3-intent-"]:disabled, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-disabled{
z-index:8; }
.bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:first-child) .bp3-button,
.bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:first-child){
border-bottom-left-radius:0;
border-top-left-radius:0; }
.bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){
border-bottom-right-radius:0;
border-top-right-radius:0;
margin-right:-1px; }
.bp3-button-group.bp3-minimal .bp3-button{
background:none;
-webkit-box-shadow:none;
box-shadow:none; }
.bp3-button-group.bp3-minimal .bp3-button:hover{
background:rgba(167, 182, 194, 0.3);
-webkit-box-shadow:none;
box-shadow:none;
color:#182026;
text-decoration:none; }
.bp3-button-group.bp3-minimal .bp3-button:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-active{
background:rgba(115, 134, 148, 0.3);
-webkit-box-shadow:none;
box-shadow:none;
color:#182026; }
.bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{
background:none;
color:rgba(92, 112, 128, 0.6);
cursor:not-allowed; }
.bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{
background:rgba(115, 134, 148, 0.3); }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:inherit; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover{
background:rgba(138, 155, 168, 0.15); }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{
background:rgba(138, 155, 168, 0.3);
color:#f5f8fa; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{
background:none;
color:rgba(167, 182, 194, 0.6);
cursor:not-allowed; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{
background:rgba(138, 155, 168, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{
color:#106ba3; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#106ba3; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{
background:rgba(19, 124, 189, 0.15);
color:#106ba3; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{
background:rgba(19, 124, 189, 0.3);
color:#106ba3; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{
background:none;
color:rgba(16, 107, 163, 0.5); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{
background:rgba(19, 124, 189, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{
stroke:#106ba3; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{
color:#48aff0; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{
background:rgba(19, 124, 189, 0.2);
color:#48aff0; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{
background:rgba(19, 124, 189, 0.3);
color:#48aff0; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{
background:none;
color:rgba(72, 175, 240, 0.5); }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{
background:rgba(19, 124, 189, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{
color:#0d8050; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#0d8050; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{
background:rgba(15, 153, 96, 0.15);
color:#0d8050; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{
background:rgba(15, 153, 96, 0.3);
color:#0d8050; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{
background:none;
color:rgba(13, 128, 80, 0.5); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{
background:rgba(15, 153, 96, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{
stroke:#0d8050; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{
color:#3dcc91; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{
background:rgba(15, 153, 96, 0.2);
color:#3dcc91; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{
background:rgba(15, 153, 96, 0.3);
color:#3dcc91; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{
background:none;
color:rgba(61, 204, 145, 0.5); }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{
background:rgba(15, 153, 96, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{
color:#bf7326; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#bf7326; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{
background:rgba(217, 130, 43, 0.15);
color:#bf7326; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{
background:rgba(217, 130, 43, 0.3);
color:#bf7326; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{
background:none;
color:rgba(191, 115, 38, 0.5); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{
background:rgba(217, 130, 43, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{
stroke:#bf7326; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{
color:#ffb366; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{
background:rgba(217, 130, 43, 0.2);
color:#ffb366; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{
background:rgba(217, 130, 43, 0.3);
color:#ffb366; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{
background:none;
color:rgba(255, 179, 102, 0.5); }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{
background:rgba(217, 130, 43, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{
color:#c23030; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{
background:none;
-webkit-box-shadow:none;
box-shadow:none;
color:#c23030; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{
background:rgba(219, 55, 55, 0.15);
color:#c23030; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{
background:rgba(219, 55, 55, 0.3);
color:#c23030; }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{
background:none;
color:rgba(194, 48, 48, 0.5); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{
background:rgba(219, 55, 55, 0.3); }
.bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{
stroke:#c23030; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{
color:#ff7373; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{
background:rgba(219, 55, 55, 0.2);
color:#ff7373; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{
background:rgba(219, 55, 55, 0.3);
color:#ff7373; }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{
background:none;
color:rgba(255, 115, 115, 0.5); }
.bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{
background:rgba(219, 55, 55, 0.3); }
.bp3-button-group .bp3-popover-wrapper,
.bp3-button-group .bp3-popover-target{
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-flex:1;
-ms-flex:1 1 auto;
flex:1 1 auto; }
.bp3-button-group.bp3-fill{
display:-webkit-box;
display:-ms-flexbox;
display:flex;
width:100%; }
.bp3-button-group .bp3-button.bp3-fill,
.bp3-button-group.bp3-fill .bp3-button:not(.bp3-fixed){
-webkit-box-flex:1;
-ms-flex:1 1 auto;
flex:1 1 auto; }
.bp3-button-group.bp3-vertical{
-webkit-box-align:stretch;
-ms-flex-align:stretch;
align-items:stretch;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-ms-flex-direction:column;
flex-direction:column;
vertical-align:top; }
.bp3-button-group.bp3-vertical.bp3-fill{
height:100%;
width:unset; }
.bp3-button-group.bp3-vertical .bp3-button{
margin-right:0 !important;
width:100%; }
.bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:first-child .bp3-button,
.bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:first-child{
border-radius:3px 3px 0 0; }
.bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:last-child .bp3-button,
.bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:last-child{
border-radius:0 0 3px 3px; }
.bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:not(:last-child){
margin-bottom:-1px; }
.bp3-button-group.bp3-align-left .bp3-button{
text-align:left; }
.bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){
margin-right:1px; }
.bp3-dark .bp3-button-group.bp3-vertical > .bp3-popover-wrapper:not(:last-child) .bp3-button,
.bp3-dark .bp3-button-group.bp3-vertical > .bp3-button:not(:last-child){
margin-bottom:1px; }
.bp3-callout{
font-size:14px;
line-height:1.5;
background-color:rgba(138, 155, 168, 0.15);
border-radius:3px;
padding:10px 12px 9px;
position:relative;
width:100%; }
.bp3-callout[class*="bp3-icon-"]{
padding-left:40px; }
.bp3-callout[class*="bp3-icon-"]::before{
font-family:"Icons20", sans-serif;
font-size:20px;
font-style:normal;
font-weight:400;
line-height:1;
-moz-osx-font-smoothing:grayscale;
-webkit-font-smoothing:antialiased;
color:#5c7080;
left:10px;
position:absolute;
top:10px; }
.bp3-callout.bp3-callout-icon{
padding-left:40px; }
.bp3-callout.bp3-callout-icon > .bp3-icon:first-child{
color:#5c7080;
left:10px;
position:absolute;
top:10px; }
.bp3-callout .bp3-heading{
line-height:20px;
margin-bottom:5px;
margin-top:0; }
.bp3-callout .bp3-heading:last-child{
margin-bottom:0; }
.bp3-dark .bp3-callout{
background-color:rgba(138, 155, 168, 0.2); }
.bp3-dark .bp3-callout[class*="bp3-icon-"]::before{
color:#a7b6c2; }
.bp3-callout.bp3-intent-primary{
background-color:rgba(19, 124, 189, 0.15); }
.bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-primary > .bp3-icon:first-child,
.bp3-callout.bp3-intent-primary .bp3-heading{
color:#106ba3; }
.bp3-dark .bp3-callout.bp3-intent-primary{
background-color:rgba(19, 124, 189, 0.25); }
.bp3-dark .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-primary > .bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-primary .bp3-heading{
color:#48aff0; }
.bp3-callout.bp3-intent-success{
background-color:rgba(15, 153, 96, 0.15); }
.bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-success > .bp3-icon:first-child,
.bp3-callout.bp3-intent-success .bp3-heading{
color:#0d8050; }
.bp3-dark .bp3-callout.bp3-intent-success{
background-color:rgba(15, 153, 96, 0.25); }
.bp3-dark .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-success > .bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-success .bp3-heading{
color:#3dcc91; }
.bp3-callout.bp3-intent-warning{
background-color:rgba(217, 130, 43, 0.15); }
.bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-warning > .bp3-icon:first-child,
.bp3-callout.bp3-intent-warning .bp3-heading{
color:#bf7326; }
.bp3-dark .bp3-callout.bp3-intent-warning{
background-color:rgba(217, 130, 43, 0.25); }
.bp3-dark .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-warning > .bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-warning .bp3-heading{
color:#ffb366; }
.bp3-callout.bp3-intent-danger{
background-color:rgba(219, 55, 55, 0.15); }
.bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before,
.bp3-callout.bp3-intent-danger > .bp3-icon:first-child,
.bp3-callout.bp3-intent-danger .bp3-heading{
color:#c23030; }
.bp3-dark .bp3-callout.bp3-intent-danger{
background-color:rgba(219, 55, 55, 0.25); }
.bp3-dark .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before,
.bp3-dark .bp3-callout.bp3-intent-danger > .bp3-icon:first-child,
.bp3-dark .bp3-callout.bp3-intent-danger .bp3-heading{
color:#ff7373; }
.bp3-running-text .bp3-callout{
margin:20px 0; }
.bp3-card{
background-color:#ffffff;
border-radius:3px;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
padding:20px;
-webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-card.bp3-dark,
.bp3-dark .bp3-card{
background-color:#30404d;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); }
.bp3-elevation-0{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); }
.bp3-elevation-0.bp3-dark,
.bp3-dark .bp3-elevation-0{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); }
.bp3-elevation-1{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); }
.bp3-elevation-1.bp3-dark,
.bp3-dark .bp3-elevation-1{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); }
.bp3-elevation-2{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2); }
.bp3-elevation-2.bp3-dark,
.bp3-dark .bp3-elevation-2{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4); }
.bp3-elevation-3{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); }
.bp3-elevation-3.bp3-dark,
.bp3-dark .bp3-elevation-3{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); }
.bp3-elevation-4{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); }
.bp3-elevation-4.bp3-dark,
.bp3-dark .bp3-elevation-4{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); }
.bp3-card.bp3-interactive:hover{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2);
cursor:pointer; }
.bp3-card.bp3-interactive:hover.bp3-dark,
.bp3-dark .bp3-card.bp3-interactive:hover{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); }
.bp3-card.bp3-interactive:active{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2);
opacity:0.9;
-webkit-transition-duration:0;
transition-duration:0; }
.bp3-card.bp3-interactive:active.bp3-dark,
.bp3-dark .bp3-card.bp3-interactive:active{
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); }
.bp3-collapse{
height:0;
overflow-y:hidden;
-webkit-transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-collapse .bp3-collapse-body{
-webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-collapse .bp3-collapse-body[aria-hidden="true"]{
display:none; }
.bp3-context-menu .bp3-popover-target{
display:block; }
.bp3-context-menu-popover-target{
position:fixed; }
.bp3-divider{
border-bottom:1px solid rgba(16, 22, 26, 0.15);
border-right:1px solid rgba(16, 22, 26, 0.15);
margin:5px; }
.bp3-dark .bp3-divider{
border-color:rgba(16, 22, 26, 0.4); }
.bp3-dialog-container{
opacity:1;
-webkit-transform:scale(1);
transform:scale(1);
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-pack:center;
-ms-flex-pack:center;
justify-content:center;
min-height:100%;
pointer-events:none;
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
width:100%; }
.bp3-dialog-container.bp3-overlay-enter > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear > .bp3-dialog{
opacity:0;
-webkit-transform:scale(0.5);
transform:scale(0.5); }
.bp3-dialog-container.bp3-overlay-enter-active > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear-active > .bp3-dialog{
opacity:1;
-webkit-transform:scale(1);
transform:scale(1);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:300ms;
transition-duration:300ms;
-webkit-transition-property:opacity, -webkit-transform;
transition-property:opacity, -webkit-transform;
transition-property:opacity, transform;
transition-property:opacity, transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); }
.bp3-dialog-container.bp3-overlay-exit > .bp3-dialog{
opacity:1;
-webkit-transform:scale(1);
transform:scale(1); }
.bp3-dialog-container.bp3-overlay-exit-active > .bp3-dialog{
opacity:0;
-webkit-transform:scale(0.5);
transform:scale(0.5);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:300ms;
transition-duration:300ms;
-webkit-transition-property:opacity, -webkit-transform;
transition-property:opacity, -webkit-transform;
transition-property:opacity, transform;
transition-property:opacity, transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11);
transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); }
.bp3-dialog{
background:#ebf1f5;
border-radius:6px;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-ms-flex-direction:column;
flex-direction:column;
margin:30px 0;
padding-bottom:20px;
pointer-events:all;
-webkit-user-select:text;
-moz-user-select:text;
-ms-user-select:text;
user-select:text;
width:500px; }
.bp3-dialog:focus{
outline:0; }
.bp3-dialog.bp3-dark,
.bp3-dark .bp3-dialog{
background:#293742;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
color:#f5f8fa; }
.bp3-dialog-header{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
background:#ffffff;
border-radius:6px 6px 0 0;
-webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15);
box-shadow:0 1px 0 rgba(16, 22, 26, 0.15);
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-flex:0;
-ms-flex:0 0 auto;
flex:0 0 auto;
min-height:40px;
padding-left:20px;
padding-right:5px;
z-index:30; }
.bp3-dialog-header .bp3-icon-large,
.bp3-dialog-header .bp3-icon{
color:#5c7080;
-webkit-box-flex:0;
-ms-flex:0 0 auto;
flex:0 0 auto;
margin-right:10px; }
.bp3-dialog-header .bp3-heading{
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
word-wrap:normal;
-webkit-box-flex:1;
-ms-flex:1 1 auto;
flex:1 1 auto;
line-height:inherit;
margin:0; }
.bp3-dialog-header .bp3-heading:last-child{
margin-right:20px; }
.bp3-dark .bp3-dialog-header{
background:#30404d;
-webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4);
box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-dialog-header .bp3-icon-large,
.bp3-dark .bp3-dialog-header .bp3-icon{
color:#a7b6c2; }
.bp3-dialog-body{
-webkit-box-flex:1;
-ms-flex:1 1 auto;
flex:1 1 auto;
line-height:18px;
margin:20px; }
.bp3-dialog-footer{
-webkit-box-flex:0;
-ms-flex:0 0 auto;
flex:0 0 auto;
margin:0 20px; }
.bp3-dialog-footer-actions{
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-pack:end;
-ms-flex-pack:end;
justify-content:flex-end; }
.bp3-dialog-footer-actions .bp3-button{
margin-left:10px; }
.bp3-multistep-dialog-panels{
display:-webkit-box;
display:-ms-flexbox;
display:flex; }
.bp3-multistep-dialog-left-panel{
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-flex:1;
-ms-flex:1;
flex:1;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-ms-flex-direction:column;
flex-direction:column; }
.bp3-dark .bp3-multistep-dialog-left-panel{
background:#202b33; }
.bp3-multistep-dialog-right-panel{
background-color:#f5f8fa;
border-left:1px solid rgba(16, 22, 26, 0.15);
border-radius:0 0 6px 0;
-webkit-box-flex:3;
-ms-flex:3;
flex:3;
min-width:0; }
.bp3-dark .bp3-multistep-dialog-right-panel{
background-color:#293742;
border-left:1px solid rgba(16, 22, 26, 0.4); }
.bp3-multistep-dialog-footer{
background-color:#ffffff;
border-radius:0 0 6px 0;
border-top:1px solid rgba(16, 22, 26, 0.15);
padding:10px; }
.bp3-dark .bp3-multistep-dialog-footer{
background:#30404d;
border-top:1px solid rgba(16, 22, 26, 0.4); }
.bp3-dialog-step-container{
background-color:#f5f8fa;
border-bottom:1px solid rgba(16, 22, 26, 0.15); }
.bp3-dark .bp3-dialog-step-container{
background:#293742;
border-bottom:1px solid rgba(16, 22, 26, 0.4); }
.bp3-dialog-step-container.bp3-dialog-step-viewed{
background-color:#ffffff; }
.bp3-dark .bp3-dialog-step-container.bp3-dialog-step-viewed{
background:#30404d; }
.bp3-dialog-step{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
background-color:#f5f8fa;
border-radius:6px;
cursor:not-allowed;
display:-webkit-box;
display:-ms-flexbox;
display:flex;
margin:4px;
padding:6px 14px; }
.bp3-dark .bp3-dialog-step{
background:#293742; }
.bp3-dialog-step-viewed .bp3-dialog-step{
background-color:#ffffff;
cursor:pointer; }
.bp3-dark .bp3-dialog-step-viewed .bp3-dialog-step{
background:#30404d; }
.bp3-dialog-step:hover{
background-color:#f5f8fa; }
.bp3-dark .bp3-dialog-step:hover{
background:#293742; }
.bp3-dialog-step-icon{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
background-color:rgba(92, 112, 128, 0.6);
border-radius:50%;
color:#ffffff;
display:-webkit-box;
display:-ms-flexbox;
display:flex;
height:25px;
-webkit-box-pack:center;
-ms-flex-pack:center;
justify-content:center;
width:25px; }
.bp3-dark .bp3-dialog-step-icon{
background-color:rgba(167, 182, 194, 0.6); }
.bp3-active.bp3-dialog-step-viewed .bp3-dialog-step-icon{
background-color:#2b95d6; }
.bp3-dialog-step-viewed .bp3-dialog-step-icon{
background-color:#8a9ba8; }
.bp3-dialog-step-title{
color:rgba(92, 112, 128, 0.6);
-webkit-box-flex:1;
-ms-flex:1;
flex:1;
padding-left:10px; }
.bp3-dark .bp3-dialog-step-title{
color:rgba(167, 182, 194, 0.6); }
.bp3-active.bp3-dialog-step-viewed .bp3-dialog-step-title{
color:#2b95d6; }
.bp3-dialog-step-viewed:not(.bp3-active) .bp3-dialog-step-title{
color:#182026; }
.bp3-dark .bp3-dialog-step-viewed:not(.bp3-active) .bp3-dialog-step-title{
color:#f5f8fa; }
.bp3-drawer{
background:#ffffff;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2);
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-ms-flex-direction:column;
flex-direction:column;
margin:0;
padding:0; }
.bp3-drawer:focus{
outline:0; }
.bp3-drawer.bp3-position-top{
height:50%;
left:0;
right:0;
top:0; }
.bp3-drawer.bp3-position-top.bp3-overlay-enter, .bp3-drawer.bp3-position-top.bp3-overlay-appear{
-webkit-transform:translateY(-100%);
transform:translateY(-100%); }
.bp3-drawer.bp3-position-top.bp3-overlay-enter-active, .bp3-drawer.bp3-position-top.bp3-overlay-appear-active{
-webkit-transform:translateY(0);
transform:translateY(0);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:200ms;
transition-duration:200ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-position-top.bp3-overlay-exit{
-webkit-transform:translateY(0);
transform:translateY(0); }
.bp3-drawer.bp3-position-top.bp3-overlay-exit-active{
-webkit-transform:translateY(-100%);
transform:translateY(-100%);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:100ms;
transition-duration:100ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-position-bottom{
bottom:0;
height:50%;
left:0;
right:0; }
.bp3-drawer.bp3-position-bottom.bp3-overlay-enter, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear{
-webkit-transform:translateY(100%);
transform:translateY(100%); }
.bp3-drawer.bp3-position-bottom.bp3-overlay-enter-active, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear-active{
-webkit-transform:translateY(0);
transform:translateY(0);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:200ms;
transition-duration:200ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-position-bottom.bp3-overlay-exit{
-webkit-transform:translateY(0);
transform:translateY(0); }
.bp3-drawer.bp3-position-bottom.bp3-overlay-exit-active{
-webkit-transform:translateY(100%);
transform:translateY(100%);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:100ms;
transition-duration:100ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-position-left{
bottom:0;
left:0;
top:0;
width:50%; }
.bp3-drawer.bp3-position-left.bp3-overlay-enter, .bp3-drawer.bp3-position-left.bp3-overlay-appear{
-webkit-transform:translateX(-100%);
transform:translateX(-100%); }
.bp3-drawer.bp3-position-left.bp3-overlay-enter-active, .bp3-drawer.bp3-position-left.bp3-overlay-appear-active{
-webkit-transform:translateX(0);
transform:translateX(0);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:200ms;
transition-duration:200ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-position-left.bp3-overlay-exit{
-webkit-transform:translateX(0);
transform:translateX(0); }
.bp3-drawer.bp3-position-left.bp3-overlay-exit-active{
-webkit-transform:translateX(-100%);
transform:translateX(-100%);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:100ms;
transition-duration:100ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-position-right{
bottom:0;
right:0;
top:0;
width:50%; }
.bp3-drawer.bp3-position-right.bp3-overlay-enter, .bp3-drawer.bp3-position-right.bp3-overlay-appear{
-webkit-transform:translateX(100%);
transform:translateX(100%); }
.bp3-drawer.bp3-position-right.bp3-overlay-enter-active, .bp3-drawer.bp3-position-right.bp3-overlay-appear-active{
-webkit-transform:translateX(0);
transform:translateX(0);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:200ms;
transition-duration:200ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-position-right.bp3-overlay-exit{
-webkit-transform:translateX(0);
transform:translateX(0); }
.bp3-drawer.bp3-position-right.bp3-overlay-exit-active{
-webkit-transform:translateX(100%);
transform:translateX(100%);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:100ms;
transition-duration:100ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right):not(.bp3-vertical){
bottom:0;
right:0;
top:0;
width:50%; }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right):not(.bp3-vertical).bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right):not(.bp3-vertical).bp3-overlay-appear{
-webkit-transform:translateX(100%);
transform:translateX(100%); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right):not(.bp3-vertical).bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right):not(.bp3-vertical).bp3-overlay-appear-active{
-webkit-transform:translateX(0);
transform:translateX(0);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:200ms;
transition-duration:200ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right):not(.bp3-vertical).bp3-overlay-exit{
-webkit-transform:translateX(0);
transform:translateX(0); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right):not(.bp3-vertical).bp3-overlay-exit-active{
-webkit-transform:translateX(100%);
transform:translateX(100%);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:100ms;
transition-duration:100ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right).bp3-vertical{
bottom:0;
height:50%;
left:0;
right:0; }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right).bp3-vertical.bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right).bp3-vertical.bp3-overlay-appear{
-webkit-transform:translateY(100%);
transform:translateY(100%); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right).bp3-vertical.bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right).bp3-vertical.bp3-overlay-appear-active{
-webkit-transform:translateY(0);
transform:translateY(0);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:200ms;
transition-duration:200ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right).bp3-vertical.bp3-overlay-exit{
-webkit-transform:translateY(0);
transform:translateY(0); }
.bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not(
.bp3-position-right).bp3-vertical.bp3-overlay-exit-active{
-webkit-transform:translateY(100%);
transform:translateY(100%);
-webkit-transition-delay:0;
transition-delay:0;
-webkit-transition-duration:100ms;
transition-duration:100ms;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform, -webkit-transform;
-webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9);
transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-drawer.bp3-dark,
.bp3-dark .bp3-drawer{
background:#30404d;
-webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4);
color:#f5f8fa; }
.bp3-drawer-header{
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
border-radius:0;
-webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15);
box-shadow:0 1px 0 rgba(16, 22, 26, 0.15);
display:-webkit-box;
display:-ms-flexbox;
display:flex;
-webkit-box-flex:0;
-ms-flex:0 0 auto;
flex:0 0 auto;
min-height:40px;
padding:5px;
padding-left:20px;
position:relative; }
.bp3-drawer-header .bp3-icon-large,
.bp3-drawer-header .bp3-icon{
color:#5c7080;
-webkit-box-flex:0;
-ms-flex:0 0 auto;
flex:0 0 auto;
margin-right:10px; }
.bp3-drawer-header .bp3-heading{
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
word-wrap:normal;
-webkit-box-flex:1;
-ms-flex:1 1 auto;
flex:1 1 auto;
line-height:inherit;
margin:0; }
.bp3-drawer-header .bp3-heading:last-child{
margin-right:20px; }
.bp3-dark .bp3-drawer-header{
-webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4);
box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-drawer-header .bp3-icon-large,
.bp3-dark .bp3-drawer-header .bp3-icon{
color:#a7b6c2; }
.bp3-drawer-body{
-webkit-box-flex:1;
-ms-flex:1 1 auto;
flex:1 1 auto;
line-height:18px;
overflow:auto; }
.bp3-drawer-footer{
-webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15);
box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15);
-webkit-box-flex:0;
-ms-flex:0 0 auto;
flex:0 0 auto;
padding:10px 20px;
position:relative; }
.bp3-dark .bp3-drawer-footer{
-webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4);
box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4); }
.bp3-editable-text{
cursor:text;
display:inline-block;
max-width:100%;
position:relative;
vertical-align:top;
white-space:nowrap; }
.bp3-editable-text::before{
bottom:-3px;
left:-3px;
position:absolute;
right:-3px;
top:-3px;
border-radius:3px;
content:"";
-webkit-transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9);
transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); }
.bp3-editable-text:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15);
box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15); }
.bp3-editable-text.bp3-editable-text-editing::before{
background-color:#ffffff;
-webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); }
.bp3-editable-text.bp3-disabled::before{
-webkit-box-shadow:none;
box-shadow:none; }
.bp3-editable-text.bp3-intent-primary .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{
color:#137cbd; }
.bp3-editable-text.bp3-intent-primary:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4);
box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4); }
.bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{
-webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); }
.bp3-editable-text.bp3-intent-success .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-success .bp3-editable-text-content{
color:#0f9960; }
.bp3-editable-text.bp3-intent-success:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4);
box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4); }
.bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{
-webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); }
.bp3-editable-text.bp3-intent-warning .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{
color:#d9822b; }
.bp3-editable-text.bp3-intent-warning:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4);
box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4); }
.bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before{
-webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); }
.bp3-editable-text.bp3-intent-danger .bp3-editable-text-input,
.bp3-editable-text.bp3-intent-danger .bp3-editable-text-content{
color:#db3737; }
.bp3-editable-text.bp3-intent-danger:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4);
box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4); }
.bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before{
-webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2);
box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); }
.bp3-dark .bp3-editable-text:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15);
box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15); }
.bp3-dark .bp3-editable-text.bp3-editable-text-editing::before{
background-color:rgba(16, 22, 26, 0.3);
-webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-editable-text.bp3-disabled::before{
-webkit-box-shadow:none;
box-shadow:none; }
.bp3-dark .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{
color:#48aff0; }
.bp3-dark .bp3-editable-text.bp3-intent-primary:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4);
box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4); }
.bp3-dark .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{
-webkit-box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-editable-text.bp3-intent-success .bp3-editable-text-content{
color:#3dcc91; }
.bp3-dark .bp3-editable-text.bp3-intent-success:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4);
box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4); }
.bp3-dark .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{
-webkit-box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4);
box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); }
.bp3-dark .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{
color:#ffb366; }
.bp3-dark .bp3-editable-text.bp3-intent-warning:hover::before{
-webkit-box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4);
box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0
gitextract_x63mlfur/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .pre-commit-config.yaml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── _config.yml
├── dev-requirements.txt
├── notebooks/
│ ├── beginner/
│ │ ├── data/
│ │ │ ├── empty_file.txt
│ │ │ ├── numbers.txt
│ │ │ ├── random_data.txt
│ │ │ ├── simple_file.txt
│ │ │ └── simple_file_with_empty_lines.txt
│ │ ├── exercises/
│ │ │ ├── 01_strings_exercise.ipynb
│ │ │ ├── 02_numbers_exercise.ipynb
│ │ │ ├── 03_conditionals_exercise.ipynb
│ │ │ ├── 04_lists_exercise.ipynb
│ │ │ ├── 05_dictionaries_exercise.ipynb
│ │ │ ├── 06_for_loops_exercise.ipynb
│ │ │ ├── 07_functions_exercise.ipynb
│ │ │ ├── 08_testing1_exercise.ipynb
│ │ │ ├── 09_recap1_exercise.ipynb
│ │ │ ├── 10_file_io_exercise.ipynb
│ │ │ ├── 11_classes_exercise.ipynb
│ │ │ ├── 12_exceptions_exercise.ipynb
│ │ │ ├── 14_debugging_exercise.ipynb
│ │ │ ├── 15_std_lib1_exercise.ipynb
│ │ │ ├── 16_testing2_exercise.ipynb
│ │ │ └── 19_recap2_exercise.ipynb
│ │ ├── html/
│ │ │ ├── 01_strings.html
│ │ │ ├── 02_numbers.html
│ │ │ ├── 03_conditionals.html
│ │ │ ├── 04_lists.html
│ │ │ ├── 05_dictionaries.html
│ │ │ ├── 06_for_loops.html
│ │ │ ├── 07_functions.html
│ │ │ ├── 08_testing1.html
│ │ │ ├── 10_file_io.html
│ │ │ ├── 11_classes.html
│ │ │ ├── 12_exceptions.html
│ │ │ ├── 13_modules_and_packages.html
│ │ │ ├── 14_debugging.html
│ │ │ ├── 15_std_lib.html
│ │ │ ├── 16_testing2.html
│ │ │ ├── 17_venv.html
│ │ │ └── 18_project_structure.html
│ │ └── notebooks/
│ │ ├── 01_strings.ipynb
│ │ ├── 02_numbers.ipynb
│ │ ├── 03_conditionals.ipynb
│ │ ├── 04_lists.ipynb
│ │ ├── 05_dictionaries.ipynb
│ │ ├── 06_for_loops.ipynb
│ │ ├── 07_functions.ipynb
│ │ ├── 08_testing1.ipynb
│ │ ├── 10_file_io.ipynb
│ │ ├── 11_classes.ipynb
│ │ ├── 12_exceptions.ipynb
│ │ ├── 13_modules_and_packages.ipynb
│ │ ├── 14_debugging.ipynb
│ │ ├── 15_std_lib.ipynb
│ │ ├── 16_testing2.ipynb
│ │ ├── 17_venv.ipynb
│ │ └── 18_project_structure.ipynb
│ └── intermediate/
│ ├── data/
│ │ ├── empty.txt
│ │ ├── misc_data1.txt
│ │ └── misc_data2.txt
│ ├── exercises/
│ │ ├── 01_std_lib2_exercise.ipynb
│ │ └── 05_idiomatic_python_exercise.ipynb
│ ├── html/
│ │ ├── 01_best_practices.html
│ │ ├── 01_idiomatic_loops.html
│ │ ├── 01_pytest_fixtures.html
│ │ ├── 01_std_lib2.html
│ │ ├── 02_idiomatic_dicts.html
│ │ ├── 03_idiomatic_misc1.html
│ │ └── 04_idiomatic_misc2.html
│ └── notebooks/
│ ├── 01_best_practices.ipynb
│ ├── 01_idiomatic_loops.ipynb
│ ├── 01_pytest_fixtures.ipynb
│ ├── 01_std_lib2.ipynb
│ ├── 02_idiomatic_dicts.ipynb
│ ├── 03_idiomatic_misc1.ipynb
│ └── 04_idiomatic_misc2.ipynb
├── pytest.ini
└── scripts/
└── notebook_to_html.py
SYMBOL INDEX (3 symbols across 1 files) FILE: scripts/notebook_to_html.py function main (line 6) | def main(): function convert_all_notebooks_to_html (line 14) | def convert_all_notebooks_to_html(): function convert_notebook_to_html (line 24) | def convert_notebook_to_html(notebook_path):
Copy disabled (too large)
Download .json
Condensed preview — 85 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (15,922K chars).
[
{
"path": ".gitattributes",
"chars": 36,
"preview": "notebooks/* linguist-language=Python"
},
{
"path": ".github/workflows/ci.yml",
"chars": 473,
"preview": "name: CI\n\non:\n pull_request:\n push:\n branches:\n - \"**\"\n\njobs:\n checks:\n runs-on: ubuntu-latest\n strateg"
},
{
"path": ".gitignore",
"chars": 97,
"preview": ".DS_Store\n*ipynb_checkpoints*\n.idea*\n.pytest_cache*\n.tox*\n*pycache*\nsync-*.sh\ntmp.txt\nmy_log.txt\n"
},
{
"path": ".pre-commit-config.yaml",
"chars": 479,
"preview": "repos:\n - repo: local\n hooks:\n - id: clear-nb-output\n name: clear-nb-output\n files: \\.ipynb$\n "
},
{
"path": "CONTRIBUTING.md",
"chars": 639,
"preview": "# Contributing\n\nIf you spot a typo or the content does not make sense in some way, feel free to open an issue or directl"
},
{
"path": "LICENSE",
"chars": 1066,
"preview": "MIT License\n\nCopyright (c) 2023 jerry-git\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
},
{
"path": "README.md",
"chars": 10813,
"preview": "<p align=\"center\">\n <img src=\"logo.png\" alt=\"logo\"/>\n</p>\n\n# Learn Python 3\n\n## Introduction\n\nThis repository contains "
},
{
"path": "_config.yml",
"chars": 25,
"preview": "theme: jekyll-theme-slate"
},
{
"path": "dev-requirements.txt",
"chars": 63,
"preview": "black[jupyter]\njupyter\nnbqa[toolchain]\nnbval\npre-commit\npytest\n"
},
{
"path": "notebooks/beginner/data/empty_file.txt",
"chars": 0,
"preview": ""
},
{
"path": "notebooks/beginner/data/numbers.txt",
"chars": 28,
"preview": "1\n2.5\n16\n4\n5\n12\n15\n16\n18\n100"
},
{
"path": "notebooks/beginner/data/random_data.txt",
"chars": 77,
"preview": "78, 25, 4, 87, 18, 77, 94, 37, 22, 11, 28, 43, 49, 79, 75, 74, 70, 20, 50, 46"
},
{
"path": "notebooks/beginner/data/simple_file.txt",
"chars": 51,
"preview": "First line\nSecond line\nThird\nAnd so the story goes!"
},
{
"path": "notebooks/beginner/data/simple_file_with_empty_lines.txt",
"chars": 110,
"preview": "The Title of the Story\n\nFirst paragraph with some\nnonsense words.\n\nThen we move to second paragraph and so on."
},
{
"path": "notebooks/beginner/exercises/01_strings_exercise.ipynb",
"chars": 3419,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Fill missing pieces\\n\",\n \"F"
},
{
"path": "notebooks/beginner/exercises/02_numbers_exercise.ipynb",
"chars": 1601,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Creating formulas\\n\",\n \"Wri"
},
{
"path": "notebooks/beginner/exercises/03_conditionals_exercise.ipynb",
"chars": 1753,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. `if-elif-else`\\n\",\n \"Fill m"
},
{
"path": "notebooks/beginner/exercises/04_lists_exercise.ipynb",
"chars": 2902,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Fill the missing pieces\\n\",\n "
},
{
"path": "notebooks/beginner/exercises/05_dictionaries_exercise.ipynb",
"chars": 2893,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Populating a dictionary\\n\",\n "
},
{
"path": "notebooks/beginner/exercises/06_for_loops_exercise.ipynb",
"chars": 3220,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Fill the missing pieces\\n\",\n "
},
{
"path": "notebooks/beginner/exercises/07_functions_exercise.ipynb",
"chars": 3803,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Fill the missing pieces of the"
},
{
"path": "notebooks/beginner/exercises/08_testing1_exercise.ipynb",
"chars": 1980,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {},\n \"outputs\": [],\n \"source\": "
},
{
"path": "notebooks/beginner/exercises/09_recap1_exercise.ipynb",
"chars": 2786,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Super vowels\\n\",\n \"Implemen"
},
{
"path": "notebooks/beginner/exercises/10_file_io_exercise.ipynb",
"chars": 2978,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"editable\": false\n },\n \"o"
},
{
"path": "notebooks/beginner/exercises/11_classes_exercise.ipynb",
"chars": 4007,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Fill the missing pieces of the"
},
{
"path": "notebooks/beginner/exercises/12_exceptions_exercise.ipynb",
"chars": 2939,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Dealing with exceptions\\n\",\n "
},
{
"path": "notebooks/beginner/exercises/14_debugging_exercise.ipynb",
"chars": 1784,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Identifying bugs in code\\n\",\n "
},
{
"path": "notebooks/beginner/exercises/15_std_lib1_exercise.ipynb",
"chars": 2422,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Playing with datetimes\\n\",\n "
},
{
"path": "notebooks/beginner/exercises/16_testing2_exercise.ipynb",
"chars": 5355,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {},\n \"outputs\": [],\n \"source\": "
},
{
"path": "notebooks/beginner/exercises/19_recap2_exercise.ipynb",
"chars": 5668,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. [Rock-paper-scissors](https://"
},
{
"path": "notebooks/beginner/html/01_strings.html",
"chars": 645101,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/02_numbers.html",
"chars": 623087,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/03_conditionals.html",
"chars": 636965,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/04_lists.html",
"chars": 640872,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/05_dictionaries.html",
"chars": 642689,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/06_for_loops.html",
"chars": 621096,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/07_functions.html",
"chars": 630501,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/08_testing1.html",
"chars": 620561,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/10_file_io.html",
"chars": 619242,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/11_classes.html",
"chars": 637163,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/12_exceptions.html",
"chars": 618664,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/13_modules_and_packages.html",
"chars": 610630,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/14_debugging.html",
"chars": 614293,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/15_std_lib.html",
"chars": 648386,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/16_testing2.html",
"chars": 627075,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/17_venv.html",
"chars": 609476,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/html/18_project_structure.html",
"chars": 610622,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/beginner/notebooks/01_strings.ipynb",
"chars": 7943,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [Strings](https://docs.python.org"
},
{
"path": "notebooks/beginner/notebooks/02_numbers.ipynb",
"chars": 3706,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [Numbers](https://docs.python.org"
},
{
"path": "notebooks/beginner/notebooks/03_conditionals.ipynb",
"chars": 6301,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Conditionals\"\n ]\n },\n {\n \"c"
},
{
"path": "notebooks/beginner/notebooks/04_lists.ipynb",
"chars": 6632,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [Lists](https://docs.python.org/3"
},
{
"path": "notebooks/beginner/notebooks/05_dictionaries.ipynb",
"chars": 7462,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [Dictionaries](https://docs.pytho"
},
{
"path": "notebooks/beginner/notebooks/06_for_loops.ipynb",
"chars": 3281,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [`for` loops](https://docs.python"
},
{
"path": "notebooks/beginner/notebooks/07_functions.ipynb",
"chars": 6365,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Functions\"\n ]\n },\n {\n \"cell"
},
{
"path": "notebooks/beginner/notebooks/08_testing1.ipynb",
"chars": 4806,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Testing with [pytest](https://doc"
},
{
"path": "notebooks/beginner/notebooks/10_file_io.ipynb",
"chars": 4290,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [File I/O](https://docs.python.or"
},
{
"path": "notebooks/beginner/notebooks/11_classes.ipynb",
"chars": 8896,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [Classes](https://docs.python.org"
},
{
"path": "notebooks/beginner/notebooks/12_exceptions.ipynb",
"chars": 4330,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [Exceptions](https://docs.python."
},
{
"path": "notebooks/beginner/notebooks/13_modules_and_packages.ipynb",
"chars": 3458,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# [Modules and packages](https://do"
},
{
"path": "notebooks/beginner/notebooks/14_debugging.ipynb",
"chars": 4336,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Debugging with [`pdb`](https://do"
},
{
"path": "notebooks/beginner/notebooks/15_std_lib.ipynb",
"chars": 10544,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Goodies of the [Python Standard L"
},
{
"path": "notebooks/beginner/notebooks/16_testing2.ipynb",
"chars": 6213,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Testing with [pytest](https://doc"
},
{
"path": "notebooks/beginner/notebooks/17_venv.ipynb",
"chars": 2726,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Virtual environment\\n\",\n \"When"
},
{
"path": "notebooks/beginner/notebooks/18_project_structure.ipynb",
"chars": 3431,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Project structure\"\n ]\n },\n {\n"
},
{
"path": "notebooks/intermediate/data/empty.txt",
"chars": 0,
"preview": ""
},
{
"path": "notebooks/intermediate/data/misc_data1.txt",
"chars": 77,
"preview": "1\nJohn\nDoe\nJohn\n2\n99\nJohn\n\nwas\n\nhere\n6.72\nthis\n2\nis\n2\ntotally\nrandom\n2.0\njohn"
},
{
"path": "notebooks/intermediate/data/misc_data2.txt",
"chars": 94,
"preview": "1\nJohn\nDoe\nJohn\n2\n101\nJohn\nDoe\nwas\ndOe\nhere\n6.72\nthis\n2\nis\n2\n\n\n\n67\ntotally\nrandom\n2.0\njohn\ndoE"
},
{
"path": "notebooks/intermediate/exercises/01_std_lib2_exercise.ipynb",
"chars": 6551,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Let's mock things!\\n\",\n \"Be"
},
{
"path": "notebooks/intermediate/exercises/05_idiomatic_python_exercise.ipynb",
"chars": 11355,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# 1. Let's make it more idiomatic\"\n"
},
{
"path": "notebooks/intermediate/html/01_best_practices.html",
"chars": 643897,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/intermediate/html/01_idiomatic_loops.html",
"chars": 641845,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/intermediate/html/01_pytest_fixtures.html",
"chars": 640624,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/intermediate/html/01_std_lib2.html",
"chars": 643837,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/intermediate/html/02_idiomatic_dicts.html",
"chars": 637394,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/intermediate/html/03_idiomatic_misc1.html",
"chars": 665718,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/intermediate/html/04_idiomatic_misc2.html",
"chars": 657179,
"preview": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1"
},
{
"path": "notebooks/intermediate/notebooks/01_best_practices.ipynb",
"chars": 18932,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Best practices in development\"\n "
},
{
"path": "notebooks/intermediate/notebooks/01_idiomatic_loops.ipynb",
"chars": 7802,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Idiomatic loops\"\n ]\n },\n {\n "
},
{
"path": "notebooks/intermediate/notebooks/01_pytest_fixtures.ipynb",
"chars": 9298,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Efficient use of `pytest` fixture"
},
{
"path": "notebooks/intermediate/notebooks/01_std_lib2.ipynb",
"chars": 11220,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Goodies of the [Python Standard L"
},
{
"path": "notebooks/intermediate/notebooks/02_idiomatic_dicts.ipynb",
"chars": 6752,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Idiomatic dictionaries\"\n ]\n },"
},
{
"path": "notebooks/intermediate/notebooks/03_idiomatic_misc1.ipynb",
"chars": 13799,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Idiomatic Python - miscellaneous "
},
{
"path": "notebooks/intermediate/notebooks/04_idiomatic_misc2.ipynb",
"chars": 12682,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"# Idiomatic Python - miscellaneous "
},
{
"path": "pytest.ini",
"chars": 55,
"preview": "[pytest]\nnorecursedirs = exercises* .ipynb_checkpoints*"
},
{
"path": "scripts/notebook_to_html.py",
"chars": 966,
"preview": "from pathlib import Path\nimport subprocess\nimport sys\n\n\ndef main():\n path = sys.argv[1]\n if path.strip().lower() ="
}
]
About this extraction
This page contains the full source code of the jerry-git/learn-python3 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 85 files (14.7 MB), approximately 3.9M tokens, and a symbol index with 3 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.