1.1. Setup

1.1.1. Requirements

Trainer will use PyCharm. If you choose any other IDE, make sure you know how to use refactoring options.

1.1.2. Assignments

Code 1.13. Solution
"""
* Assignment: About Setup VCS
* Complexity: easy
* Lines of code: 0 lines
* Time: 5 min

English:
    0. Github is the most popular in the world source code sharing place
        a. Github is owned by Microsoft
        b. Linux kernel is developed on Github
        c. Python is developed on Github
        d. Many open source projects i.e. .NET`, `Swift`, `Django` are developed on Github
    1. If you dont have Github account please create on (it's free)
        a. This is needed for the training course
        b. You will be asked for an email address
        c. You will have to verify email by clicking on the link sent to you
    2. Type your Github username in the assignment spreadsheet
    3. Wait for trainer to add permission to the repository for you
    4. Open your email and accept invitation to the repository
    5. Check if you can see files in the repository
    6. Make sure there is `.gitignore` file in the repository
        a. You can see its content
        b. Last line should contain `.idea/`
    7. Do not modify `.gitignore` file
    8. Write `100%` in assignment spreadsheet in row with this assignment

Polish:
    0. Github jest najpopularniejszym na świecie miejscem wymiany kodu źródłowego
        a. Github należy do Microsoft
        b. Kernel Linuxa jest rozwijany na Github
        c. Python jest rozwijany na Github
        d. Wiele projektów open source, np. `.NET`, `Swift`, `Django` są rozwijane na Github
    1. Jeżeli nie masz konta na Github to proszę załóż je (jest darmowe)
        a. Jest to konieczne do sprawnego przeprowadzenia szkolenia
        b. Konieczne będzie podanie adresu email
        c. Maila będzie trzeba zweryfikować klikając w link aktywacyjny
    2. Wpisz swój username z Github w arkuszu kalkulacyjnym zadań
    3. Zaczekaj aż trener nada Ci uprawnienia do repozytorium
    4. Wejdź na swojego maila i zaakceptuj zaproszenie do repozytorium
    5. Sprawdź czy widać pliki w repozytorium
    6. Upewnij się, że w repozytorium jest plik `.gitignore`
        a. Widzisz jego zawartość
        b. Ostatnia linia powinna zawierać `.idea/`
    7. Nie zmieniaj pliku `.gitignore`
    8. Zapisz `100%` we arkuszu zadań w wierszu z tym zadaniem
"""

Code 1.14. Solution
"""
* Assignment: About Setup IDE
* Complexity: easy
* Lines of code: 0 lines
* Time: 2 min

English:
    1. Go to the PyCharm version screen
        a. Top menu -> File -> About PyCharm
        b. Top menu -> Help -> About PyCharm
    2. In assignment spreadsheet (in header section) write PyCharm version (2020.3) and edition (CE/Pro).
    3. Write in format, i.e. `CE 2020.3` or `PRO 2020.2` etc.
        a. `CE` - Community Edition
        b. `PRO` - Professional
    4. Write `100%` in assignment spreadsheet in row with this assignment

Polish:
    1. Wejdź na ekran wersji PyCharm
        a. Górne menu -> File -> About PyCharm
        b. Górne menu -> Help -> About PyCharm
    2. W arkuszu zadań (w sekcji nagłówkowej) zapisz wersję PyCharm z której korzystasz
    3. Format zapisu, np. `CE 2020.3` lub `PRO 2020.2` itp.
        a. `CE` - Community Edition
        b. `PRO` - Professional
    4. Zapisz `100%` we arkuszu zadań w wierszu z tym zadaniem
"""

Code 1.15. Solution
"""
* Assignment: About Setup Project
* Complexity: easy
* Lines of code: 0 lines
* Time: 5 min

English:
    1. Trainer will give you a link to GIT repository
    2. Create project iin your IDE using options:
        a. `Create from VCS` for PyCharm 2020.3 and newer
        b. `Get from Version Control` for older PyCharm versions
    3. Click "clone" and wait for repository download
        a. If asked for authorization select "Use Token..."
        b. It will redirect to Github page: https://github.com/settings/tokens/new
        c. Name token "PyCharm" and make sure "repo" and "gist" sections are selected
        d. Copy token and paste to PyCharm
    4. After creating a project, create a directory in it:
        a. In this folder you will put your code during the training course
        b. Directory should have name like your firstname and first letter
           of your lastname, i.e. `JanT`, `MarkW` or `MelissaL`
        c. Do not use any whitespace (space) or any other special characters
        d. Do not use any accents, diacritics or language specific chars
    5. Up until the end of this training you will create solutions in this folder
    6. Thanks to the separate folders for each student we will avoid GIT conflicts
    7. Write `100%` in assignment spreadsheet in row with this assignment

Polish:
    1. Trener poda Ci link do repozytorium GIT
    2. Stwórz projekt w Twoim IDE wykorzystując opcję:
        a. `Create from VCS` dla PyCharm 2020.3 lub nowszego
        b. `Get from Version Control` dla wcześniejszych wersji PyCharm
    3. Kliknij "clone" i zaczekaj na pobranie repozytorium
        a. Jeżeli zostaniesz zapytany o autoryzację wybierz "Use Token..."
        b. Powinno Cię przekierować na stronę Github: https://github.com/settings/tokens/new
        c. Nazwij token "PyCharm" i upewnij się, że sekcje "repo" and "gist" są zaznaczone
        d. Skopiuj token i wklej do PyCharm
    4. Po założeniu projektu załóż w nim katalog:
        a. W tym katalogu będziesz przechowywał kod tworzony podczas szkolenia
        b. Katalog ma mieć nazwę jak Twoje imie i pierwsza litera nazwiska,
           np. `JanT`, `MarkW` lub `MelissaL`
        c. Nie używaj żadnych białych znaków (spacji) ani żadnych innych znaków specjalnych
        d. Nie używaj żadnych akcentów, znaków diakrytycznych lub znaków specyficznych dla języka
    5. Do końca szkolenia w tym katalogu będziesz tworzył rozwiązania do wszystkich zadań
    6. Dzięki oddzielnym katalogom dla każdego uczestnika unikniemy konfliktów w Git
    7. Zapisz `100%` we arkuszu zadań w wierszu z tym zadaniem
"""

Code 1.16. Solution
"""
* Assignment: About Setup Python
* Complexity: easy
* Lines of code: 0 lines
* Time: 3 min

English:
    1. In your directory create file `about_python.py`
    2. If question about adding file to GIT repository pops-up, mark checkbox "Always add" and click "Yes"
    3. Use code from "Given" section (see below)
    4. Run code in your IDE (right click on code -> "Run File in Python Console")
    5. What Python version is installed?
    6. Compare result with "Tests" section (see below)
    7. Write result (version number) in shared spreadsheet
    8. Write `100%` in assignment spreadsheet in row with this assignment

Polish:
    1. W swoim katalogu stwórz plik `about_python.py`
    2. Jeżeli wyskoczy pytanie czy dodać plik do repozytorium GIT, zaznacz checkbox "Always add" i wybierz "Yes"
    3. Użyj kodu z sekcji "Given" (patrz poniżej)
    4. Uruchom kod swoim IDE (prawy klawisz myszy na kodzie -> "Run File in Python Console")
    5. Jaka wersja Python jest zainstalowana?
    6. Porównaj wyniki z sekcją "Tests" (patrz poniżej)
    7. Zapisz rezultat (numer wersji) we współdzielonym arkuszu kalkulacyjnym
    8. Zapisz `100%` we arkuszu zadań w wierszu z tym zadaniem

Tests:
    >>> python_version > (3, 7, 0)
    True
"""


# Given
import sys

python_version = sys.version_info


Code 1.17. Solution
"""
* Assignment: About Setup Doctest
* Complexity: easy
* Lines of code: 0 lines
* Time: 5 min

English:
    1. Copy this assignment to file named `about_doctest.py` in your directory
    2. Run doctests from this file
        a. Top menu -> Run -> Run... -> Doctest in about_setup_doctest
        b. Right mouse click -> Run 'Doctests in about_setup_doctest'
    3. All tests must pass
    4. Note the line with comment `# doctest: +NORMALIZE_WHITESPACE`
        a. This is the doctest flag
        b. It allows to ignore whitesapces and newlines in lists, tuples, dicts, etc.
        c. Try to remove it (without chaning the result) and check if tests still passes
    5. Write `100%` in shared spreadsheet at assignment row

Polish:
    1. Skopiuj to zadanie do pliku o nazwie `about_doctest.py` w Twoim katalogu
    2. Uruchom doctesty z tego pliku
        a. Górne menu -> Run -> Run... -> Doctest in about_setup_doctest
        b. Prawy przycisk myszy -> Run 'Doctests in about_setup_doctest'
    3. Wszystkie testy muszą przechodzić
    4. Zwróć uwagę na linijkę z komentarzem `# doctest: +NORMALIZE_WHITESPACE`
        a. To jest tzw. flaga sterująca doctest
        b. Pozwala na zignorowanie łamań linii i spacji w listach, tuplach, dictach, itp
        c. Spróbuj usunąć ten zapis (nie modyfikuj wyniku) i zobacz czy testy nadal przechodzą
    5. Zapisz `100%` we współdzielonym arkuszu kalkulacyjnym w wierszu zadania

Tests:
    >>> type(firstname)
    <class 'str'>
    >>> type(lastname)
    <class 'str'>
    >>> f'{firstname} {lastname}'
    'Mark Watney'
    >>> firstname + lastname
    'MarkWatney'
    >>> firstname + ' ' + lastname
    'Mark Watney'
    >>> [firstname] + [lastname]
    ['Mark', 'Watney']
    >>> [firstname] + [lastname] # doctest: +NORMALIZE_WHITESPACE
    ['Mark',
     'Watney']
    >>> name = 'Mark Watney'
    >>> print(name)
    Mark Watney
    >>> if True:
    ...     print('ok')
    ... else:
    ...     print('not ok')
    ...
    ok
"""


# Given
firstname = 'Mark'
lastname = 'Watney'


Code 1.18. Solution
"""
* Assignment: About Setup Push
* Complexity: easy
* Lines of code: 0 lines
* Time: 3 min

English:
    1. In your IDE
    2. Right click on the project name
    3. From the menu select `Git -> Commit Directory...` or use keyboard shortcut:
        a. `ctrl+k` on Windows and Linux
        b. `cmd+k` on macOS
    4. Write commit message, i.e your firstname and a first letter from lastname
       i.e. `JanT`, `MelissaL`, 'MarkW'
    5. At the right bottom select button `Commit and Push...`
    6. If there is only one button `Commit`, then at the button right side should be an down arrow
       after expanding dropdown menu select `Commit and Push`
    7. If information will pop-up about branch which requires updating,
       check "Remember the update method and update silently in future" and click "Rebase"
    8. Check Github
    9. Write `100%` in assignment spreadsheet in row with this assignment


Polish:
    1. W Twoim IDE
    2. Kliknij prawym klawiszem na nazwę projektu
    3. Z menu wybierz `Git -> Commit Directory...`  lub użyj skrótu klawiszowego:
        a. `ctrl+k` na Windows i Linux
        b. `cmd+k` na macOS
    4. Wpisać opis zmian, np. swoje imię i pierwsza litera nazwiska,
       np. `JanT`, `MelissaL`, 'MarkW'
    5. Po lewej na dole wybrać przycisk `Commit and Push...`
    6. Jeżeli jest tylko jeden przycisk `Commit`, to po jego prawej stronie powinna
       być strzałeczka w dół i po jej rozwinięciu opcja `Commit and Push`
    7. Jeżeli wyskoczy informacja o niekatulanym branchu i zapytanie czy odświeżyć,
       zaznacz checkbox "Remember the update method and update silently in future" i wybierz "Rebase"
    8. Sprawdzić Github
    9. Zapisz `100%` we arkuszu zadań w wierszu z tym zadaniem
"""

../../_images/about-setup-pycharm-vsc-merge-rebase2.png