diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml deleted file mode 100644 index ad8dd8be..00000000 --- a/.github/workflows/black.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - black: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install black "black[jupyter]" nbqa - - name: Black - run: | - black --diff --line-length=79 $(git ls-files '*.py' '*.ipynb') - nbqa black --diff --line-length=79 $(git ls-files '*.py' '*.ipynb') - - - name: Commit and push changes - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - run: | - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }} - git pull - git add . - git diff --quiet || (git commit -m "Convert notebooks to Python scripts" && git push) - - - - - diff --git a/.github/workflows/black_pull.yml b/.github/workflows/black_pull.yml deleted file mode 100644 index 289c761a..00000000 --- a/.github/workflows/black_pull.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - black: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install black "black[jupyter]" nbqa - - name: Black - run: | - black --diff --line-length=79 $(git ls-files '*.py' '*.ipynb') - nbqa black --diff --line-length=79 $(git ls-files '*.py' '*.ipynb') - - - name: Commit and push changes - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - run: | - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }} - git pull - git add . - git diff --quiet || (git commit -m "Convert notebooks to Python scripts" && git push) - - - - - diff --git a/.github/workflows/blacken-docs.yml b/.github/workflows/blacken-docs.yml deleted file mode 100644 index 57d9416a..00000000 --- a/.github/workflows/blacken-docs.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - blacken-docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install blacken-docs nbqa - - name: Blacken-docs - run: | - nbqa blacken-docs --nbqa-md --nbqa-diff $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/blacken-docs_pull.yml b/.github/workflows/blacken-docs_pull.yml deleted file mode 100644 index eaf15fc4..00000000 --- a/.github/workflows/blacken-docs_pull.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - blacken-docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install blacken-docs nbqa - - name: Blacken-docs - run: | - nbqa blacken-docs --nbqa-md --nbqa-diff $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml deleted file mode 100644 index ee4693f3..00000000 --- a/.github/workflows/codespell.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents - -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - codespell: - runs-on: ubuntu-latest - steps: - # Шаг для клонирования репозитория - - uses: actions/checkout@v4 - - # Установка Python - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.x" # Укажите версию Python, либо используйте матрицу версий - - # Установка зависимостей - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install codespell - - # Запуск codespell с параметрами - - name: Run codespell - run: | - codespell \ - --ignore-regex='^\s*"image\/(jpeg|png|gif|bmp|tiff)":\s.*' \ - --ignore-regex="[A-Za-z0-9+/]{100,}" \ - --skip="*.js,*.html,*.css,*.svg,*.json,*.png,*.jpg,*.yml,*.yaml" \ - $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/codespell_pull.yml b/.github/workflows/codespell_pull.yml deleted file mode 100644 index 6feea24d..00000000 --- a/.github/workflows/codespell_pull.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents - -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - codespell: - runs-on: ubuntu-latest - steps: - # Шаг для клонирования репозитория - - uses: actions/checkout@v4 - - # Установка Python - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.x" # Укажите версию Python, либо используйте матрицу версий - - # Установка зависимостей - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install codespell - - # Запуск codespell с параметрами - - name: Run codespell - run: | - codespell \ - --ignore-regex='^\s*"image\/(jpeg|png|gif|bmp|tiff)":\s.*' \ - --ignore-regex="[A-Za-z0-9+/]{100,}" \ - --skip="*.js,*.html,*.css,*.svg,*.json,*.png,*.jpg,*.yml,*.yaml" \ - $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/flake8.yml b/.github/workflows/flake8.yml deleted file mode 100644 index 787119b7..00000000 --- a/.github/workflows/flake8.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - flake8: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install flake8 nbqa flake8-variables-names pep8-naming flake8-functions-names - - name: Flake8 - run: | - nbqa flake8 --ignore=E231,B018,E203,E501,W291,F821,F401,E402,E121,E302,W391,W293 $(git ls-files '*.py' '*.ipynb') - flake8 --ignore=E231,B018,E203,E501,W291,F821,F401,E402,E121,E302,W391,W293 $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/flake8_pull.yml b/.github/workflows/flake8_pull.yml deleted file mode 100644 index 214a6ea9..00000000 --- a/.github/workflows/flake8_pull.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - flake8: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install flake8 nbqa flake8-variables-names pep8-naming flake8-functions-names - - name: Flake8 - run: | - nbqa flake8 --ignore=E231,B018,E203,E501,W291,F821,F401,E402,E121,E302,W391,W293 $(git ls-files '*.py' '*.ipynb') - flake8 --ignore=E231,B018,E203,E501,W291,F821,F401,E402,E121,E302,W391,W293 $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/ipynb_to_py.yml b/.github/workflows/ipynb_to_py.yml deleted file mode 100644 index a559afe3..00000000 --- a/.github/workflows/ipynb_to_py.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: SENATOROV -permissions: - contents: write # Grant write access to the repository contents -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - convert_notebooks: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install jupytext - - - name: Convert .ipynb to .py - run: | - jupytext --to py $(git ls-files '*.ipynb') - - name: Commit and push changes - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - run: | - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }} - git pull - git add . - git diff --quiet || (git commit -m "Convert notebooks to Python scripts" && git push) - - - - diff --git a/.github/workflows/ipynb_to_py_pull.yml b/.github/workflows/ipynb_to_py_pull.yml deleted file mode 100644 index 49984e47..00000000 --- a/.github/workflows/ipynb_to_py_pull.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: SENATOROV -permissions: - contents: write # Grant write access to the repository contents -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - convert_notebooks: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install jupytext - - - name: Convert .ipynb to .py - run: | - jupytext --to py $(git ls-files '*.ipynb') - - name: Commit and push changes - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - run: | - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }} - git pull - git add . - git diff --quiet || (git commit -m "Convert notebooks to Python scripts" && git push) - - - - diff --git a/.github/workflows/isort.yml b/.github/workflows/isort.yml deleted file mode 100644 index 8a9879d0..00000000 --- a/.github/workflows/isort.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: SENATOROV -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - -jobs: - isort: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: isort/isort-action@v1 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install isort nbqa - - name: isort - run: | - nbqa isort --float-to-top $(git ls-files '*.ipynb') - isort --float-to-top $(git ls-files '*.py') - - name: Commit and push changes - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - run: | - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }} - git pull origin ${{ github.ref_name }} - git add . - git diff --quiet || (git commit -m "Sort imports and apply isort fixes" && git push origin ${{ github.ref_name }}) diff --git a/.github/workflows/isort_pull.yml b/.github/workflows/isort_pull.yml deleted file mode 100644 index 5b7d4565..00000000 --- a/.github/workflows/isort_pull.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents - -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - - -jobs: - isort: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: isort/isort-action@v1 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install isort nbqa - - name: isort - run: | - nbqa isort --float-to-top $(git ls-files '*.ipynb') - isort --float-to-top $(git ls-files '*.py') - - name: Commit and push changes - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - run: | - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - git remote set-url origin https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }} - git pull origin ${{ github.ref_name }} - git add . - git diff --quiet || (git commit -m "Sort imports and apply isort fixes" && git push origin ${{ github.ref_name }}) diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml deleted file mode 100644 index 22ceee39..00000000 --- a/.github/workflows/mypy.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - mypy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install "nbqa[toolchain]" mypy nbqa pandas-stubs git+https://github.com/numpy/numpy-stubs mypy-extensions types-requests types-PyYAML types-setuptools - - name: Mypy - run: | - nbqa mypy --exclude=^misc/ --ignore-missing-imports --explicit-package-bases --ignore-missing-imports --disallow-untyped-calls --disallow-untyped-defs --disallow-untyped-decorators --strict --extra-checks --disallow-any-decorated --disallow-any-generics --local-partial-types --pretty --force-uppercase-builtins --force-union-syntax --warn-unreachable --warn-redundant-casts --warn-return-any $(git ls-files '*.ipynb') diff --git a/.github/workflows/mypy_pull.yml b/.github/workflows/mypy_pull.yml deleted file mode 100644 index 5f8dbb9e..00000000 --- a/.github/workflows/mypy_pull.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - mypy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install "nbqa[toolchain]" mypy nbqa pandas-stubs git+https://github.com/numpy/numpy-stubs mypy-extensions types-requests types-PyYAML types-setuptools - - name: Mypy - run: | - nbqa mypy --exclude=^misc/ --ignore-missing-imports --explicit-package-bases --ignore-missing-imports --disallow-untyped-calls --disallow-untyped-defs --disallow-untyped-decorators --strict --extra-checks --disallow-any-decorated --disallow-any-generics --local-partial-types --pretty --force-uppercase-builtins --force-union-syntax --warn-unreachable --warn-redundant-casts --warn-return-any $(git ls-files '*.ipynb') diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml deleted file mode 100644 index 1a2ad4fa..00000000 --- a/.github/workflows/pylint.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - pylint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install "nbqa[toolchain]" pylint nbqa - - name: Pylint - run: | - pylint --max-line-length=79 --const-naming-style=any --disable=R1721,R0903,C0303,E1101,R1716,E0401,W1514,C0200,C0114,C0301,E0602,W0104,C0302,R0801,E1136,line-too-long,C0305,E2515 --disable=import-error $(git ls-files '*.py' '*.ipynb') - nbqa pylint --max-line-length=79 --const-naming-style=any --disable=R1721,R0903,E2515,C0303,E1101,R1716,E0401,W1514,C0200,C0114,C0301,E0602,W0104,C0302,R0801,E1136,C0305,E2515 --disable=import-error $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/pylint_pull.yml b/.github/workflows/pylint_pull.yml deleted file mode 100644 index da6e38d8..00000000 --- a/.github/workflows/pylint_pull.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - pylint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install "nbqa[toolchain]" pylint nbqa - - name: Pylint - run: | - pylint --max-line-length=79 --const-naming-style=any --disable=R1721,R0903,C0303,E1101,R1716,E0401,W1514,C0200,C0114,C0301,E0602,W0104,C0302,R0801,E1136,line-too-long,C0305,E2515 --disable=import-error $(git ls-files '*.py' '*.ipynb') - nbqa pylint --max-line-length=79 --const-naming-style=any --disable=R1721,R0903,E2515,C0303,E1101,R1716,E0401,W1514,C0200,C0114,C0301,E0602,W0104,C0302,R0801,E1136,C0305,E2515 --disable=import-error $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/pyupgrade.yml b/.github/workflows/pyupgrade.yml deleted file mode 100644 index e98627c6..00000000 --- a/.github/workflows/pyupgrade.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - push: - branches: - - "**" - - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - - -jobs: - pyupgrade: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install nbqa pyupgrade - - name: pyupgrade - run: | - nbqa pyupgrade --py37-plus $(git ls-files '*.py' '*.ipynb') diff --git a/.github/workflows/pyupgrade_pull.yml b/.github/workflows/pyupgrade_pull.yml deleted file mode 100644 index ec3bd29c..00000000 --- a/.github/workflows/pyupgrade_pull.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "SENATOROV" - -permissions: - contents: write # Grant write access to the repository contents -on: - - pull_request: - branches: - - "**" - schedule: - - cron: "0 0 * * *" # Run every day - workflow_dispatch: - create: - delete: - release: - issues: - pull_request_review: - pull_request_review_comment: - -jobs: - pyupgrade: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install nbqa pyupgrade - - name: pyupgrade - run: | - nbqa pyupgrade --py37-plus $(git ls-files '*.py' '*.ipynb') diff --git a/1Awdaw.py b/1Awdaw.py new file mode 100644 index 00000000..bddc4a2e --- /dev/null +++ b/1Awdaw.py @@ -0,0 +1,2 @@ +wadawd2+2 +awdawd23+1 diff --git a/docs/git/git_command.py b/docs/git/git_command.py new file mode 100644 index 00000000..ec244539 --- /dev/null +++ b/docs/git/git_command.py @@ -0,0 +1,60 @@ +"""Конспект базовых команд Git и их описание. + +Этот ноутбук содержит основные команды Git, сгруппированные по категориям: +- Базовые команды +- Просмотр изменений +- Работа с журналом +- Отмена изменений +- Работа с файлами +- Работа с GitHub +- Дополнительные команды. +""" + +# +# +# +# +# # Основные команды Git +# +# ## Базовые команды +# - `git init` - создать новый репозиторий +# - `git clone` - копировать существующий репозиторий +# - `git add <файл>` - добавить файл для отслеживания +# - `git add .` - добавить все файлы +# - `git commit -m "сообщение"` - сохранить изменения +# - `git commit -am "сообщение"` - добавить и сохранить изменения +# - `git status` - проверить статус файлов +# - `git --version` - проверить версию Git +# +# ## Просмотр изменений +# - `git diff` - показать несохраненные изменения +# - `git diff file.py` - изменения в конкретном файле +# - `git difftool` - открыть изменения в графическом интерфейсе +# +# ## Работа с журналом +# - `git log` - просмотр полного журнала +# - `git log --oneline` - сокращенный формат +# - `git log -n 3` - последние 3 коммита +# - `git show хеш:файл.txt` - содержимое файла в коммите +# +# ## Отмена изменений +# - `git restore file.txt` - отменить несохраненные изменения +# - `git restore --staged file.txt` - убрать из индекса +# - `git checkout .` - отменить все изменения +# - `git revert -n HEAD~3..HEAD` - отменить последние 3 коммита +# - `git checkout хеш -- файл.py` - вернуть к определенной версии +# +# ## Работа с файлами +# - `git rm file.txt` - удалить файл +# - `git mv старый.txt новый.txt` - переименовать/переместить файл +# +# ## Работа с GitHub +# - `git remote add origin URL` - привязать удаленный репозиторий +# - `git push -u origin master` - первая отправка на GitHub +# - `git push` - отправить изменения +# - `git clone URL` - клонировать репозиторий +# +# ## Дополнительные команды +# - `git help <команда>` - получить справку +# - `git <команда> --help` - альтернативный вызов справки +# - `git ls-files --other --ignored --exclude-standard` - показать игнорируемые файлы diff --git a/docs/git/intro_to_git.py b/docs/git/intro_to_git.py new file mode 100644 index 00000000..a2d8e660 --- /dev/null +++ b/docs/git/intro_to_git.py @@ -0,0 +1,806 @@ +"""Git и организация программных проектов.""" + +#
Системы контроля версий представляют собой программные средства, которые регистрируют все изменения в исходном коде и позволяют легко восстановить старые версии.
+#Система контроля версий управляет файлами при внесении в них изменений.
+#Git, Mercurial и Subversion — популярные приложения контроля версий, хотя система Git остается самой популярной.
+ +# ### Коммиты и репозитории +#Git позволяет сохранить состояние файлов проекта при внесении в них изменений. Такие сохранения называются снимками (snapshots) или коммитами (commits).
+#Системы контроля версий также позволяют команде разработчиков синхронизировать свою работу при внесении изменений в исходный код проекта. Когда каждый программист закрепляет свои изменения, другие могут извлекать эти обновления на своих компьютерах. Система контроля версий следит за тем, какие изменения были внесены, кто и когда их сделал, а также сохраняет комментарии разработчиков, описывающие эти изменения.
+#Система контроля версий управляет исходным кодом проекта, который хранится в специальной папке — репозитории (repo). Как правило, для каждого проекта, над которым вы работаете, следует создать отдельный репозиторий Git. Предположим, вы работаете в основном самостоятельно над своей частью программы и вам не нужны расширенные возможности Git (такие как ветвление и слияние), упрощающие работу с остальными участниками. Но даже если вы работаете в одиночку, самый маленький проект все равно выиграет от применения системы контроля версий.
+ +# ### Создание новых проектов Python с использованием Cookiecutter +#В терминологии Git папка, содержащая весь исходный код, документацию, тесты и другие файлы, относящиеся к проекту, называется рабочим каталогом или рабочим деревом, а в более общей терминологии — папкой проекта. Файлы в рабочем каталоге в совокупности называются рабочей копией.
+# +#Прежде чем создавать репозиторий Git, следует создать файлы для проекта Python.
+# +#Для проектов Python действуют определенные соглашения по поводу имен папок и иерархий. Более простая программа может содержать один файл .py. Но когда проекты усложнятся, в них будут включаться дополнительные файлы .py, файлы данных, документация, модульные тесты и т. д. Как правило, корневая папка проекта содержит папку src для файлов с исходным кодом .py, папку tests для модульных тестов и папку docs для документации (например, сгенерированной системой документирования Sphinx). Другие файлы содержат информацию о проекте и конфигурации системы: README.md для общей информации, .coveragerc для конфигурации покрытия кода, LICENSE.txt для текста программной лицензии проекта и т. д.
+# +#Чтобы ускорить выполнение рутинных операций, можно использовать модуль Python cookiecutter для автоматического создания этих файлов и папок. Полная документация по модулю и программе командной строки Cookiecutter доступна на https://cookiecutter.readthedocs.io/.
+# +#Если вы не знаете, для чего нужны те или иные файлы, не огорчайтесь. Хотя полное описание назначения каждого файла выходит за рамки книги, на странице https://github.com/asweigart/cookiecutter-basicpythonproject присутствуют ссылки и нужная информация. Итак, базовые файлы созданы, и мы переходим к отслеживанию изменений в них в системе Git.
+ +#  + +# ### Установка Git +# +#Git уже установлена на моем компьютере.
+# +#Чтобы узнать это, введите команду `git --version` в командной строке.
+# +#У меня выводится: `git version 2.45.0.windows.1`
+ +# ## Работа с Git +# +# Работа с репозиторием Git состоит из нескольких этапов: +# +# 1. Создание репозитория: +# - Командой `git init` для нового проекта +# - Или `git clone` для копирования существующего +# +# 2. Добавление файлов для отслеживания: +# - Используется команда `git add <имя_файла>` +# - Можно добавить все файлы: `git add .` +# +# 3. Сохранение изменений: +# - Команда `git commit -am "<сообщение коммита>"` +# - В сообщении описывается содержание изменений +# + +# +# ### Справка по командам +# +# Для получения справки по любой команде используйте: +# +# Чтобы получить справку по командам в GitHub, можно использовать команду «git help». 24 Она предоставляет обзор доступных команд и способов их использования. +# +# Ещё несколько способов открыть страницу руководства по конкретной команде Git: +# +# git help <команда>. 45 Например, чтобы получить справку по команде commit, нужно выполнить: git help commit. +# git <команда> --help. Например, так можно открыть руководство по команде git config: git config --help. +# man git-<команда>. 45 Например, чтобы просмотреть страницу руководства по конкретной команде Git, нужно ввести: man git-config. +# +# Если нужна персональная помощь, можно попробовать поискать её на каналах #git и #github IRC сервера Libera Chat, который доступен по адресу libera.chat. + +# ## Как Git отслеживает статус файлов +# +# ### Основные состояния файлов +# +# 1. **Неотслеживаемые (Untracked)**: +# - Файлы, которые Git не видит +# - Для Git эти файлы не существуют +# - Нужно добавить через `git add` +# +# 2. **Отслеживаемые (Tracked)** файлы имеют три состояния: +# - **Сохраненные (Committed)**: идентичны последнему коммиту +# - **Измененные (Modified)**: отличаются от последнего коммита +# - **Индексированные (Staged)**: помечены для следующего коммита +# +# ### Переходы между состояниями +# +# 1. Неотслеживаемый → Индексированный: +# - Используется `git add <файл>` +# +# 2. Сохраненный → Измененный: +# - Происходит автоматически при изменении файла +# - Не требует команд Git +# +# 3. Измененный → Индексированный: +# - Используется `git add <файл>` +# +# 4. Индексированный → Сохраненный: +# - Используется `git commit` +# +# ### Проверка статуса +# Команда `git status` +# +# ### Важные заметки: +# - Команду `git status` рекомендуется использовать часто +# - Git подсказывает команды для изменения состояния файлов +# - Файл может находиться только в одном состоянии + +# +# + +# ## Для чего нужно индексирование? +# +# ### Сложности индексирования +# +# 1. **Особые случаи**: +# - Файл может быть одновременно в измененном и индексированном состоянии +# - Разные части файла могут иметь разные состояния +# - Технически индексируются не файлы, а описания изменений +# +# 2. **Проблемы для новичков**: +# - Вызывает недоумение +# - Создает путаницу +# - Усложняет понимание Git +# - Часто описывается неточно в документации +# +# ### Как упростить работу +# +# 1. **Использовать команду `git commit -am`**: +# - Объединяет индексирование и коммит +# - Файлы переходят сразу из измененного в чистое состояние +# - Упрощает процесс сохранения +# +# 2. **Рекомендации по работе**: +# - Сразу сохранять файлы после добавления +# - Немедленно коммитить после переименования +# - Не откладывать коммиты после удаления файлов +# +# 3. **Альтернативные решения**: +# - Использовать графические интерфейсы Git +# - Избегать сложных случаев +# - Придерживаться простых сценариев использования + +# ## Создание репозитория Git на компьютере +# +# ### Особенности Git как распределенной системы +# +# 1. **Локальное хранение**: +# - Все коммиты хранятся на компьютере +# - Метаданные в папке `.git` +# - Не требует подключения к интернету +# - Быстрая работа даже офлайн +# +# ### Создание нового репозитория + +# 1. **Создание папки и инициализация**: +# +# # Для Windows: +# md wizcoin +# +# # Для macOS/Linux: +# # mkdir wizcoin +# +# # Для всех систем: +# # cd wizcoin +# git init + +# 2. **Что происходит при инициализации (git init)**: +# - В папке создается скрытая подпапка `.git` +# - Эта папка превращается в Git-репозиторий +# - Все существующие файлы становятся неотслеживаемыми (untracked) +# - В `.git` хранятся все данные о версиях (не нужно редактировать вручную!) +# +# ### Типы репозиториев +# +# 1. **Локальный репозиторий**: +# - На вашем компьютере +# - Для личной работы +# +# 2. **Удаленный репозиторий**: +# - На другом компьютере +# - Для совместной работы +# +# ### Мониторинг статуса (watch) +# +# watch - это утилита, которая: Что делает: +# Автоматически повторяет команду +# Показывает результат каждые 2 секунды +# Обновляет экран автоматически +# Как "живой" мониторинг +# +# Зачем это нужно: +# Не надо постоянно вводить git status +# Видишь изменения сразу +# Удобно следить за репозиторием +# Как "радар" для Git +# +# +# 1. **Установка watch**: +# - Windows: скачать с https://inventwithpython.com/watch.exe +# - macOS: через MacPorts +# - Linux: предустановлен +# +# 2. **Использование**: +# watch "git status" # обновление каждые 2 секунды +# watch "git log --oneline" # мониторинг коммитов + +# + +# ### Добавление файлов для отслеживания +# +# 1. **Проверка статуса файлов**: +# - Команда `git status` показывает состояние файлов +# - Неотслеживаемые файлы помечены как "Untracked files" +# - Git не может сохранять неотслеживаемые файлы +# - Нужно сначала добавить их для отслеживания +# +# 2. **Процесс добавления файлов**: +# - Сначала `git add` (индексирование файлов) +# - Затем `git commit` (создание коммита) +# - После этого Git начинает отслеживать файлы +# +# 3. **Способы использования git add**: +# - `git add file.txt` - добавить один файл +# - `git add *.py` - добавить все Python файлы +# - `git add .` - добавить все файлы в текущей папке +# +# 4. **Создание коммита**: +# - `git commit -m "Сообщение коммита"` - сохраняет индексированные файлы +# - В сообщении описываем, какие изменения внесли +# - После коммита файлы становятся отслеживаемыми +# +# 5. **Важные замечания**: +# - Файлы из `.gitignore` автоматически пропускаются +# - Можно добавлять файлы группами +# - Каждый коммит требует сообщения +# - После успешного коммита рабочая директория "чистая" + +# + +# ### Игнорирование файлов в Git (.gitignore) +# +# 1. **Зачем игнорировать файлы**: +# - Временные файлы проекта +# - Компилированные файлы (`.pyc`, `.pyo`, `.pyd`) +# - Папки инструментов разработки (`.tox`, `htmlcov`) +# - Сгенерированные файлы (можно создать заново) +# - Файлы с конфиденциальными данными (пароли, токены) +# +# 2. **Как использовать .gitignore**: +# - Создать файл `.gitignore` в корне проекта +# - Записать в него шаблоны игнорируемых файлов +# - Git автоматически пропустит эти файлы при `git add` и `git commit` +# - Файлы не будут показываться в `git status` +# +# 3. **Синтаксис .gitignore**: +# ``` +# # Комментарий +# __pycache__/ # Игнорировать папку +# *.py[cod] # Игнорировать файлы по маске +# *$py.class # Конкретный шаблон +# ``` +# +# 4. **Важные моменты**: +# - Сам файл `.gitignore` нужно добавить в репозиторий +# - Используйте `*` для шаблонов файлов +# - Используйте `#` для комментариев +# - Проверить игнорируемые файлы: `git ls-files --other --ignored --exclude-standard` +# +# 5. **Документация**: https://git-scm.com/docs/gitignore + +# ### Сохранение изменений в Git +# +# 1. **Основные команды**: +# - `git commit -am "сообщение"` - сохранить все измененные файлы +# - `git commit -m "сообщение" file1.py file2.py` - сохранить конкретные файлы +# - `git commit --amend -m "новое_сообщение"` - исправить последний коммит +# +# 2. **Правила хороших сообщений**: +# - Подробно описывать изменения +# - Избегать общих фраз ("обновил код", "фикс") +# - Помогать себе в будущем понять изменения +# - Пример: "Fixed the currency conversion bug" +# +# 3. **Важные моменты**: +# - Нельзя сохранять пустые папки +# - Git автоматически включает папки с файлами +# - После коммита файлы готовы к новым изменениям +# - Vim открывается если забыть `-m "сообщение"` (выход: Esc + qa!) +# +# 4. **Хорошая практика**: +# - Делать частые коммиты +# - Писать понятные сообщения +# - Группировать связанные изменения +# - Изучать примеры больших проектов (например, Django) + +# + +# ### Просмотр изменений перед коммитом (git diff) +# +# 1. **Основное использование**: +# ```bash +# git diff # показать все несохраненные изменения +# git diff file.py # изменения в конкретном файле +# ``` +# +# 2. **Как читать вывод git diff**: +# - `-` красным: удаленные строки +# - `+` зеленым: добавленные строки +# - `@@ -13,7 +13,14 @@`: координаты изменений +# - Показывает контекст вокруг изменений +# +# 3. **Процесс работы**: +# 1. Внести изменения в файл +# 2. `git diff` - проверить изменения +# 3. Исправить ошибки если найдены +# 4. `git add` - добавить в индекс +# 5. `git commit` - сохранить изменения +# +# 4. **Преимущества использования**: +# - Можно поймать опечатки +# - Проверить все изменения +# - Убедиться в правильности кода +# - Не сохранять лишнее +# +# 5. **Пример рабочего процесса**: +# ```bash +# git diff # проверить изменения +# git add README.md # добавить файл +# git commit -m "Added example code to README.md" # сохранить +# ``` + +# ### Просмотр изменений через git difftool +# +# 1. **Установка инструментов сравнения**: +# - **Windows**: WinMerge (https://winmerge.org) +# - **Linux**: +# ```bash +# sudo apt-get install meld +# # или +# sudo apt-get install kompare +# ``` +# - **macOS**: +# ```bash +# # Установка Homebrew +# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" +# # Установка tkdiff +# brew install tkdiff +# ``` +# +# 2. **Настройка Git**: +# ```bash +# # Выбор инструмента +# git config diff.tool winmerge # или meld, tkdiff, kompare +# +# # Отключение запроса подтверждения +# git config --global difftool.prompt false +# ``` +# +# 3. **Использование**: +# ```bash +# git difftool file.txt # открыть изменения в графическом интерфейсе +# ``` +# +# 4. **Преимущества**: +# - Удобный визуальный интерфейс +# - Легче сравнивать изменения +# - Больше возможностей для анализа +# - Интеграция с Git-клиентами + +# + +# ### Частота сохранения изменений в Git +# +# 1. **Когда делать коммиты**: +# - После завершения функционала +# - После исправления бага +# - После написания класса +# - Когда код работоспособен +# +# 2. **Чего избегать**: +# - Коммитов с синтаксическими ошибками +# - Неработающего кода +# - Слишком редких коммитов +# - Слишком частых коммитов +# +# 3. **Правила хорошего тона**: +# - Запускать тесты перед коммитом +# - Проверять работоспособность +# - Писать понятные сообщения +# - Группировать связанные изменения +# +# 4. **Баланс в размере коммитов**: +# - Может быть несколько строк +# - Может быть несколько сотен строк +# - Главное - логическая завершенность +# - Возможность отката к рабочей версии +# +# 5. **Важно помнить**: +# - Лучше коммитить чаще, чем реже +# - Каждый коммит должен быть осмысленным +# - Упоминать о непроходящих тестах +# - Сохранять возможность отката + +# ### Удаление файлов в Git +# +# 1. **Правильное удаление файлов**: +# ```bash +# git rm file.txt # удалить файл +# git commit -m "Удалил file.txt" # сохранить удаление +# ``` +# +# 2. **Чего НЕ делать**: +# - Не использовать `del` (Windows) +# - Не использовать `rm` (macOS/Linux) +# - Не удалять файлы вручную +# - Не забывать про коммит после удаления +# +# 3. **Если удалили файл вручную**: +# ```bash +# git restore file.txt # восстановить файл +# # или +# git rm file.txt # подтвердить удаление +# ``` +# +# 4. **Важные моменты**: +# - Файл остается в истории Git +# - Можно восстановить позже +# - Нужно коммитить удаление +# - Работает только с "чистыми" файлами +# +# 5. **Процесс удаления**: +# 1. `git rm file.txt` +# 2. Git индексирует удаление +# 3. Нужен коммит для завершения +# 4. Файл удаляется из рабочей копии + +# ### Переименование и перемещение файлов в Git +# +# 1. **Правильное переименование**: +# ```bash +# git mv старый.txt новый.txt +# git commit -m "Переименовал файл" +# ``` +# +# 2. **Перемещение файлов**: +# ```bash +# mkdir новая_папка +# git mv файл.txt новая_папка/файл.txt +# git commit -m "Переместил файл" +# ``` +# +# 3. **Комбинированные операции**: +# ```bash +# git mv старый_путь/старый.txt новый_путь/новый.txt +# git commit -m "Переместил и переименовал" +# ``` +# +# 4. **Чего НЕ делать**: +# - Не переименовывать через проводник +# - Не перемещать файлы вручную +# - Не забывать про коммит +# - Не игнорировать git mv +# +# 5. **Важные моменты**: +# - История файла сохраняется +# - Git отслеживает перемещения +# - Нужен коммит после операций +# - Можно комбинировать действия + +# ### Просмотр журнала коммитов (git log) +# +# 1. **Основные команды**: +# ```bash +# git log # полный журнал +# git log --oneline # сокращенный формат +# git log -n 3 # последние 3 коммита +# git show хеш:файл.txt # содержимое файла в коммите +# ``` +# +# 2. **Структура коммита**: +# - Хеш (40 символов) +# - Автор +# - Дата +# - Сообщение коммита +# +# 3. **Удобные опции**: +# - `--oneline`: краткий формат +# - `-n число`: ограничение количества +# - `q`: выход из просмотра +# - `↑` и `↓`: навигация по журналу +# +# 4. **Хеши коммитов**: +# - 40 символов (полный хеш) +# - Первые 7 символов (короткий) +# - Уникальные идентификаторы +# - Используются для возврата к версиям +# +# 5. **Важно знать**: +# - Журнал может быть длинным +# - Хеши уникальны +# - Можно использовать GUI клиенты +# - История сохраняется полностью + +# ### Просмотр журнала коммитов (git log) +# +# 1. **Базовый просмотр**: +# ```bash +# git log # полный журнал со всеми деталями +# ``` +# Показывает: +# - Полный хеш коммита +# - Автора и email +# - Дату и время +# - Сообщение коммита +# +# 2. **Сокращенный просмотр**: +# ```bash +# git log --oneline # краткий формат +# git log --oneline -n 3 # только последние 3 коммита +# ``` +# +# 3. **Просмотр содержимого**: +# ```bash +# git show хеш:файл.txt # содержимое файла в конкретном коммите +# ``` +# +# 4. **Навигация в журнале**: +# - `↑` и `↓`: прокрутка +# - `q`: выход из просмотра +# - `Space`: следующая страница +# +# 5. **Хеши коммитов**: +# - Полный: 40 символов (962a8baa29e452c74d40075d92b00897b02668fb) +# - Короткий: 7 символов (962a8ba) +# - Используются для идентификации коммитов +# - Нужны для возврата к предыдущим версиям + +# ### Отмена несохраненных изменений +# +# 1. **Основные команды**: +# ```bash +# git restore file.txt # отменить изменения в одном файле +# git checkout . # отменить все изменения во всех файлах +# ``` +# +# 2. **Важные моменты**: +# - Работает только для несохраненных изменений +# - Нельзя отменить restore +# - Возвращает к последнему коммиту +# - Будьте осторожны - изменения пропадут! +# +# 3. **Процесс отмены**: +# 1. Проверить статус (`git status`) +# 2. Убедиться, что файлы не в индексе +# 3. Использовать `git restore` +# 4. Проверить результат +# +# 4. **Когда использовать**: +# - Случайные изменения +# - Неудачный эксперимент +# - Возврат к чистой версии +# - До индексации файлов +# +# 5. **⚠️ Предупреждения**: +# - Отмена необратима +# - Проверяйте статус перед отменой +# - Сохраняйте важные изменения +# - Используйте с осторожностью + +# ### Деиндексирование файлов (unstage) +# +# 1. **Основная команда**: +# ```bash +# git restore --staged file.txt # убрать файл из индекса +# ``` +# +# 2. **Что происходит**: +# - Файл остается измененным +# - Убирается из индекса +# - Не попадет в следующий коммит +# - Статус меняется на "modified" +# +# 3. **Когда использовать**: +# - После случайного `git add` +# - При изменении планов +# - Перед новым коммитом +# - Для перегруппировки изменений +# +# 4. **Процесс**: +# 1. Файл изменен +# 2. `git add` (в индексе) +# 3. `git restore --staged` (из индекса) +# 4. Файл все еще изменен +# +# 5. **Важно помнить**: +# - Изменения в файле сохраняются +# - Можно снова добавить в индекс +# - Не влияет на сам файл +# - Только убирает из очереди на коммит + +# ### Отмена последних коммитов (git revert) +# +# 1. **Основная команда**: +# ```bash +# git revert -n HEAD~3..HEAD # отменить последние 3 коммита +# git add . # добавить изменения +# git commit -m "Отмена изменений" # сохранить отмену +# ``` +# +# 2. **Как это работает**: +# - Создает новый коммит +# - Отменяет указанные изменения +# - Сохраняет историю +# - Можно отменить отмену +# +# 3. **Пример истории**: +# ```bash +# faec20e (HEAD) Starting over from the plot twist +# de24642 Changed the setting to outer space +# 2be4163 Added a whacky sidekick +# 97c655e Renamed the detective to 'Snuggles' +# 8aa5222 Added an exciting plot twist +# ``` +# +# 4. **Важные моменты**: +# - Коммиты не удаляются +# - История сохраняется +# - Можно вернуться к любой версии +# - Безопасная операция +# +# 5. **Процесс отмены**: +# 1. Выбрать количество коммитов +# 2. Выполнить `git revert` +# 3. Добавить изменения +# 4. Создать коммит отмены + +# ### Возврат к определенной версии файла +# +# 1. **Просмотр старой версии**: +# ```bash +# git show хеш:файл.py # посмотреть содержимое +# ``` +# +# 2. **Восстановление файла**: +# ```bash +# git checkout хеш -- файл.py # вернуть к версии +# git add файл.py # добавить в индекс +# git commit -m "Откат к версии хеш" # сохранить +# ``` +# +# 3. **Пример истории**: +# ```bash +# d41e595 Rolled back eggs.py to 009b7c0 +# 895d220 Adding email support to cheese() +# df617da Renaming bacon() to cheese() +# ef1e4bb Refactoring bacon() +# 009b7c0 Adding better documentation to spam() +# ``` +# +# 4. **Важные моменты**: +# - Откат только одного файла +# - Остальные файлы не меняются +# - Создается новый коммит +# - История сохраняется +# +# 5. **Процесс отката**: +# 1. Найти нужный коммит +# 2. Проверить содержимое (`git show`) +# 3. Восстановить файл (`git checkout`) +# 4. Создать коммит с откатом + +# + +# ### Работа с конфиденциальными данными в Git +# +# 1. **Предотвращение утечек**: +# ```bash +# # .gitignore +# secrets.txt +# confidential.py +# *.key +# *.password +# ``` +# +# 2. **Если данные уже попали в репозиторий**: +# - Использовать `git filter-branch` +# - Или BFG Repo-Cleaner (рекомендуется) +# - Ссылка: https://help.github.com/en/articles/removing-sensitive-data-from-a-repository +# +# 3. **Правильный подход**: +# - Хранить секреты отдельно +# - Добавлять файлы в `.gitignore` +# - Использовать переменные окружения +# - Читать данные из внешних файлов +# +# 4. **Что НЕ делать**: +# - Не коммитить пароли +# - Не хранить ключи API +# - Не включать токены +# - Не добавлять личные данные +# +# 5. **Безопасные практики**: +# - Создавать `secrets.txt.example` +# - Использовать конфиг-файлы +# - Документировать процесс +# - Регулярно проверять историю + +# ### GitHub и публикация репозитория +# +# 1. **Что такое GitHub**: +# - Веб-сервис для Git репозиториев +# - Бесплатный хостинг кода +# - Платформа для совместной работы +# - Резервное копирование +# +# 2. **Создание репозитория на GitHub**: +# ```bash +# 1. Зайти на github.com +# 2. Нажать New Repository +# 3. Указать имя (например, wizcoin) +# 4. Добавить описание +# 5. Выбрать Public/Private +# 6. Create repository +# ``` +# +# 3. **Структура ссылок**: +# ``` +# https://github.com/username/repository +# # Пример: +# https://github.com/asweigart/wizcoin +# ``` +# +# 4. **Важные моменты**: +# - Git ≠ GitHub +# - Git = система контроля версий +# - GitHub = веб-сервис для Git +# - Можно работать оффлайн +# +# 5. **Преимущества GitHub**: +# - Совместная работа +# - Резервное копирование +# - Доступ из любого места +# - Публичное портфолио + +# ### Работа с GitHub репозиторием +# +# 1. **Отправка локального репозитория**: +# ```bash +# # Привязка удаленного репозитория +# git remote add origin https://github.com/username/repo.git +# +# # Первая отправка +# git push -u origin master +# +# # Последующие отправки +# git push +# ``` +# +# 2. **Клонирование с GitHub**: +# ```bash +# git clone https://github.com/username/repo.git +# ``` +# +# 3. **Важные моменты**: +# - Отправлять изменения регулярно +# - Проверять статус синхронизации +# - Использовать HTTPS или SSH +# - Хранить учетные данные безопасно +# +# 4. **Процесс работы**: +# 1. Создать репозиторий на GitHub +# 2. Привязать локальный репо +# 3. Отправить изменения +# 4. Регулярно синхронизировать +# +# 5. **Аварийное восстановление**: +# - Сохранить рабочие файлы +# - Удалить проблемный локальный репо +# - Заново клонировать с GitHub +# - Вернуть изменения + +# Оновные моменты: +# Git - это система контроля версий, которая позволяет: +# Отслеживать изменения в коде +# Возвращаться к предыдущим версиям +# Работать над проектом в команде +# +# Основные состояния файлов в Git: +# Неотслеживаемые (untracked) +# Отслеживаемые (tracked): +# Сохраненные (committed) +# Измененные (modified) +# Индексированные (staged) +# + +# # Основные команды Git: +# git init # создать новый репозиторий +# git add # добавить файлы для отслеживания +# git commit # сохранить изменения +# git status # проверить статус файлов +# git log # просмотреть историю коммитов +# git push # отправить изменения на GitHub + +# Для организации Python проектов рекомендуется: +# Использовать cookiecutter для создания структуры проекта +# Создавать отдельный репозиторий для каждого проекта +# Регулярно коммитить изменения +# Использовать .gitignore для исключения ненужных файлов +# GitHub позволяет: +# Хранить копию репозитория онлайн +# Делиться кодом с другими разработчиками +# Создавать резервные копии diff --git a/log.ipynb b/log.ipynb new file mode 100644 index 00000000..87f6de23 --- /dev/null +++ b/log.ipynb @@ -0,0 +1,44 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [ + "\"\"\"Лог выполнения заданий.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "18/01/2025\n", + "1. Зарегистрированы аккаунты на github, kaggle, ODS.AI,Canva и выполнены настройки для работы с ними.\n", + "2. Установлены программы и библиотеки GitHub Desktop, Cursor, CPython, Git for Windows, Conda.\n", + "3. Выполнены необходимые действия с Гит: поставлена звезда, присоединился к команде, создана новая ветка, выполнено клонирование новой ветки.\n", + "4. Установлена библиотека pre-commit. Отправлен скриншот терминала.\n", + "5. Рекурсия: создан данный лог." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "22/01/2025\n", + "Выполнены квизы 1 и 2.\n" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/log.py b/log.py new file mode 100644 index 00000000..4f00b629 --- /dev/null +++ b/log.py @@ -0,0 +1,12 @@ +"""Лог выполнения заданий.""" + +# 18/01/2025 +# 1. Зарегистрированы аккаунты на github, kaggle, ODS.AI,Canva и выполнены настройки для работы с ними. +# 2. Установлены программы и библиотеки GitHub Desktop, Cursor, CPython, Git for Windows, Conda. +# 3. Выполнены необходимые действия с Гит: поставлена звезда, присоединился к команде, создана новая ветка, выполнено клонирование новой ветки. +# 4. Установлена библиотека pre-commit. Отправлен скриншот терминала. +# 5. Рекурсия: создан данный лог. + +# 22/01/2025 +# Выполнены квизы 1 и 2. +# diff --git a/tests/quiz/quiz_1.txt b/tests/quiz/quiz_1.txt new file mode 100644 index 00000000..51520849 --- /dev/null +++ b/tests/quiz/quiz_1.txt @@ -0,0 +1,244 @@ +Список вопросов к видео https://t.me/c/1937296927/765/29780 (АЛГОРИТМ ПРИНЯТИЯ И ОТДАЧИ ДОМАШКИ): + +(ОПЦИОНАЛЬНО)В ответе подробно всё опишите и обязательно нужно указывать тайм код из видео где я это сказал, по желанию, дополнительно прикладываем скриншот из видео. +Если вы знаете ответы на вопросы из Вашего опыта, то таймкоды из видео не надо указывать и т.д. + +1) Как понять, что домашка пришла? +В чате ТГ HomeWork будет указан ник и "прими пул". +https://youtu.be/hW_7hodGxVU?si=UUeXqWkJNiFHX4aQ&t=6 + +2) Как принять домашку? +Открыть GitHub Desktop, нажать на кнопку "pull origin", затем "fetch origin". + Смотрим History, изучаем все изменения, сама домашка находится в файле + hw.txt. Открываем репозиторий в vs code (скорее уж в Курсоре), создаем файлы lesson_номерДЗ_.ipynb и файл log.ipynb. В файле лога ставим дату, выбираем тип "маркдаун", пишем, что учили/делали на уроке (что запомнили). +https://youtu.be/hW_7hodGxVU?si=UUeXqWkJNiFHX4aQ&t=16 + +3) Зачем нужна кнопка history и какие функции появляются при нажатии правой кнопки мыши на коммит? +В history отображаются коммиты. +При нажатии правой кнопкой, в частности, появляется функция "View on GitHub" +https://youtu.be/hW_7hodGxVU?si=B3wq8_ydS0-J91Qx&t=865 + +3.1) Где брать ссылку на коммит? куда её отправлять? +После перехода на Гитхаб из адресной строки браузера. Отправлять в чат ТГ. В видео говорится, что нужно отправлять в чат HomeWork. Однако, насколько я понимаю, сейчас нужно писать в чат Flood. +https://youtu.be/hW_7hodGxVU?si=N0gmlJv4sMv84pw9&t=882 + +4) Что такое файл лога? +Лог — это файл, в котором мы пишем, что делали на уроке. +4.1) Когда нужно его пушить? +Всегда, когда делаем домашку. + +5) Что такое интерпритатор? +Интерпретатор — это программа, которая выполняет код (если правильно помню, то в отличие от компилятора, код выполняется построчно). В нашем случае мы выбираем Python обязательно из каталога Anaconda. +https://youtu.be/hW_7hodGxVU?si=i-xXCsNVNFD5fKJb&t=194 + +6) Где можно выбрать интерпритатор? +Интерпретатор можно выбрать в настройках Курсора, а также не заходя в настройки в верхней части экрана (выпадающий список появится при первом запуске, если интерпретатор не выбран) или справа над рабочим полем файла. +https://youtu.be/hW_7hodGxVU?si=9_k8me3ChO9cddcV&t=189 + +7) Что такое модуль? +Модуль — это файл с расширением .py (для Питона), содержащий код. Модули позволяют организовывать код. +https://youtu.be/hW_7hodGxVU?si=WgcNGFTkTzC9uwy9&t=590 + +8) Как создать и отправить коммит? +В GitDesktop в левом нижнем углу пишем название коммита (название должно отражать наши действия). Нажимаем "Commit to main" и "Push origin". +https://youtu.be/hW_7hodGxVU?si=o1L7v7Ji1HatIKpJ&t=219 + +9) Как посмотреть что коммит точно отправлен и находится в github? +- На GitHub в репозитории +- git log --oneline - посмотреть историю коммитов +- git status - убедиться, что нет неотправленных изменений +https://youtu.be/hW_7hodGxVU?si=s01lFcC9hCcntTT4&t=258 + +10) Какая команда показывает что код не прошёл проверки на ошибки? +Команда pre-commit run --all-files. Либо при нажатии "Commit to main" отображается окно с ошибкой. +https://youtu.be/hW_7hodGxVU?si=syxrcrKeEuWEYYBN&t=323 + +10.1) Напишите список линтеров которые используются для проверки кода и дайте их краткую характеристику. +- pylint: проверяет стиль кода и находит программные ошибки +- pydocstyle: проверяет документацию ("более злой, чем пайлинт для докстрингов") +- flake8: проверяет на соответствие PEP 8 +- black: форматирует код +- isort: сортирует импорты + +11) Как узнать какой именно линтер не прошёл проверку? +В выводе pre-commit явно указывается какой линтер Failed. Например: "pylint...Failed" +https://youtu.be/hW_7hodGxVU?si=E8UO9rUIk0obG6FB&t=425 + +12) Линтер Pylint видит markdown? +Нет, Pylint проверяет только Python-код, markdown-ячейки игнорируются. +https://youtu.be/hW_7hodGxVU?si=0OgN8MWXr-3S6cNx&t=465 + +13) Номер ячейки в терминале и номер ячейки в vs code может отличаться? в каком случае? +Если есть ячейки в формате markdown — их линтер не видит. +https://youtu.be/hW_7hodGxVU?si=0OgN8MWXr-3S6cNx&t=465 + +14) Где посмотреть номер ячейки в vscode? +В меню Cell (правый нижний угол) +https://youtu.be/hW_7hodGxVU?si=0OgN8MWXr-3S6cNx&t=465 + +15) В каком формате ipynb отправляется в гитхаб? причём здесь JSON? +ipynb — это JSON-файл, который содержит: +- Исходный код +- Метаданные +- Результаты выполнения +- Форматирование +https://youtu.be/hW_7hodGxVU?si=p63draA2rUJJ0dWq&t=230 + +16) Где посмотреть в какой ячейке ошибка? +- В логах терминала +https://youtu.be/hW_7hodGxVU?si=0OgN8MWXr-3S6cNx&t=465 + +17) Как запустить терминал? +В Курсоре и VSCode: Ctrl+` или View -> Terminal или просто Terminal в верхней панели. +https://youtu.be/hW_7hodGxVU?si=vUeyuIOHz-Ac8rRS&t=393 + +18) Что такое линтер? +Линтер — инструмент статического анализа кода, который проверяет стиль и находит потенциальные ошибки без выполнения кода. + +19) В какой сайт нужно вставлять код ошибки если ошибка связана с pylint? +- pylint.pycqa.org +https://youtu.be/hW_7hodGxVU?si=I27LQKIbDP0Ah_As&t=434 +- в чате HELP ME +https://youtu.be/hW_7hodGxVU?si=nLdAOUUkTa9HWJa6&t=833 + +20) Секция pydocstyle в большинстве случае автоматический закрывается после исправления ошибок в каком линтере? +После исправления pylint. +https://youtu.be/hW_7hodGxVU?si=CiwQvWttOiAp802j&t=677 + +21) Что такое описание модуля? Оно должно отражать информацию о том что находится в модуле? +Описание модуля — это docstring в начале файла, который объясняет назначение и содержимое модуля. + +22) После внесения изменений в файлах, кнопка open in vs code пропадает в кошке, как по другому открыть vs code из кошки? +Нажать правой кнопкой мышки на "Current repository" и выбрать "Open in Visual Studio Code" +https://youtu.be/hW_7hodGxVU?si=CwHRj1b6D0rfDH7-&t=920 + +23) Что такое stash? +Stash — это временное хранилище изменений, которые мы не хотим коммитить сразу. + +23.1) Как сохранить стэш? +git команда: git stash +Кнопка в vs code: View -> Command Palette -> Git: Stash + +23.2) Как восстановить стэш? +git команда: git stash pop + +23.3) Различие между стэшем и коммитом. +Стэш — временное хранение, коммит — постоянное сохранение в истории. + +Когда лучше сохранить изменения в стэше: +- Если мы работаем над функцией, но вам нужно переключиться на другую задачу или ветку, и вы не хотите коммитить незавершенные изменения. +- Когда мы хотим протестировать изменения в другой ветке, не оставляя текущие изменения в истории. + +Когда лучше коммитить: +- Когда мы завершили определенную задачу или функциональность и хотите сохранить изменения в истории. +- Если изменения являются логически завершенными и могут быть полезны для других разработчиков или для вас в будущем. +- Когда мы хотим зафиксировать состояние проекта перед выполнением других операций, таких как слияние или переключение веток.- + +23.4) Как просмотреть список сохраненных стэшей? +git stash list + +23.5) Как удалить стэш? +git stash drop [stash@{n}] или git stash clear (удалить все) + +24) Где посмотреть что есть конфликт в файлах? +- В GitHub Desktop +- В VSCode (подсветка конфликтов) +- В выводе git status +https://youtu.be/hW_7hodGxVU?si=zBxtpa5vJ2n52nwO&t=1035 + +24.1) Когда он появляется? +При слиянии веток с разными версиями одного файла. + +25) Как решить конфликт в файлах? +Выбрать нужную версию или объединить изменения вручную. + +26) Напишите правильное утверждение: +Зелёное — то что пришло с гитхаба, синее — локальные изменения. +https://youtu.be/hW_7hodGxVU?si=X4tCoM1Uo_RbZ8dx&t=1062 + +27) Если мы работаем в одном файле, можно ли принять pull после того как вы спрячете в стэш свои изменения? +Да, это правильная практика: сначала спрятать свои изменения в stash, затем сделать pull. +https://youtu.be/hW_7hodGxVU?si=EWRx1huij6JyzWgz&t=996 + +27.1) Что может произойти когда stash восстановите после принятия pull? +Может возникнуть конфликт, если изменения в pull затронули те же строки, что и в stash. + +28) Сколько способов решения конфликтов было показано в видео? Напишите ЧИСЛО и укажите их способы. +Два: +1. Автоматически в VSCode (встроенный редактор конфликтов) +2. Вручную в VSCode. + +29) Что делает кнопка complete merge? +Завершает процесс слияния после разрешения всех конфликтов и создает merge-коммит. + +30) В какой чат нужно писать если остались вопросы? +В чат 'HELP ME' в Telegram. +https://youtu.be/hW_7hodGxVU?si=cxBFn2H-93BnHbDt&t=1178 + +31) Что такое FORK? Зачем его делают? +Fork — это копия чужого репозитория в нашем GitHub-аккаунте. Его делают для: +- Внесения изменений в чужой проект +- Использования чужого кода как основы для своего проекта +- Изучения кода других разработчиков. + +32) Как скачать копию репозитория (fork) на локальный компьютер? +1. Через GitHub Desktop: Clone repository +2. Через git команду: git clone URL_репозитория +3. Через кнопку 'Code' на GitHub и загрузку ZIP. + +33) С какой вероятностью ваши ошибки были уже решены? и кто их решил? +C вероятность 90% ошибки уже были решены Русланом Сенаторовым и другими студентами. +https://youtu.be/hW_7hodGxVU?si=c0BLjCtJ9IB9hgJw&t=833 + +34) Как создать файл в vs code? +- Нажать на пиктограмму листочка с плюсиком +- Ctrl+N (новый файл) +- Правый клик в Explorer -> New File +- File -> New File +- Через Command Palette (Ctrl+Shift+P): Create New File. + +35) Файл лога нужно заполнять в конце каждого урока? +Да, это обязательная практика для отслеживания прогресса и фиксации изученного материала. +https://youtu.be/hW_7hodGxVU?si=QxtzLFqRDBj5EEuw&t=95 + +Дополнительные вопросы: + +1) Какая команда конвертирует файл в py из ipynb? +jupytext --to py notebook.ipynb + +2) Что такое пакетный менеджер? Вы пользуетесь пакетным менеджером conda или pip? Какой лучше использовать для дата сайнс? +Пакетный менеджер — это инструмент для установки, обновления и управления библиотеками и зависимостями проекта. Пока пользуюсь pip. Насколько я понял — conda создана специально для DataScience и включает множество (больше тысячи для Anaconda) пакетов для data science. + +3) Почему расширение py лучше чем ipynb? +- Файлы .py являются обычными текстовыми файлами, что делает их более удобными для работы с системами контроля версий, такими как Git. Они легче сравниваются и сливаются, чем файлы .ipynb, которые представляют собой JSON-формат. +- При работе в команде конфликты при слиянии кода в .py файлах возникают реже, так как изменения в коде легче отслеживать и объединять. +- Код в .py файлах проще читать и редактировать в любом текстовом редакторе или IDE, без необходимости запускать специальное программное обеспечение, как Jupyter Notebook. +- Файлы .py можно легко импортировать в другие Python-скрипты или модули, что упрощает организацию и повторное использование кода. +- Можно импортировать как модуль. +- Скрипты на Python в формате .py могут выполняться быстрее, так как они не требуют дополнительных ресурсов для рендеринга ячеек и вывода, как это происходит в Jupyter. + +4) Что такое pep8? +PEP 8 — это руководство по стилю кода Python, описывающее соглашения по форматированию. + +4.1) Линтеры проверяют на соблюдение pep8? +Да, flake8 и pylint проверяют соответствие кода стандартам PEP 8. + +4.2) Какая нотация используется для создания переменных? +snake_case: все буквы маленькие, слова разделяются подчеркиванием. + +4.3) Может ли переменная состоять из одной буквы например андерскор "_"? +Да, но это не рекомендуется, кроме специальных случаев. + +4.4) Зачем и где мы используем андерскор _? +- Для временных или неиспользуемых переменных +- Для разделения слов в именах (snake_case) +- Для обозначения 'приватных' атрибутов +- В интерактивной оболочке для последнего результата. + +4.5) По PEP8 допустима переменная в одну букву? +Допустима только в ограниченных контекстах: +- Счетчики в коротких циклах (i, j, k) +- Координаты (x, y, z) +- В математических формулах, соответствующих общепринятым обозначениям. + + diff --git a/tests/quiz/quiz_2.txt b/tests/quiz/quiz_2.txt new file mode 100644 index 00000000..afd0100a --- /dev/null +++ b/tests/quiz/quiz_2.txt @@ -0,0 +1,112 @@ +Список вопросов к видео https://t.me/c/1937296927/765/29781 (НАСТРОЙКА VSCODE, перенос строк, линтеры, работа с ячейками): + +(ОПЦИОНАЛЬНО)В ответе подробно всё опишите и обязательно нужно указывать тайм код из видео где я это сказал, по желанию, дополнительно прикладываем скриншот из видео. +Если вы знаете ответы на вопросы из Вашего опыта, то таймкоды из видео не надо указывать и т.д. + +1. Как включить автосохранение данных в VSCODE? +File -> Auto Save +https://youtu.be/Si9MfV8uJ-0?si=8SI9pPh8OkIt1Dgx&t=12 + +2. Как настроить перенос строки? +File -> Preferences -> Settings -> ищем "wrap" в поле "Word Wrap" выбираем "wordWrapColumn", в поле "Word Wrap Column" ставим 79. +https://youtu.be/Si9MfV8uJ-0?si=8SI9pPh8OkIt1Dgx&t=12 + +3. Сколько символов по pep8 разрешено на строке? +79 символов + +4. Какие способы переноса строк показаны в видео: + +4.4 Использование круглых скобок для продолжения строки +long_string = ( + "This is a very long string that I would like to " + "continue on the next line." +) +print(long_string) + +https://youtu.be/Si9MfV8uJ-0?si=YTCIZR_2MyJjMHx9&t=148 + +4.6 Сложение строк с помощью + + +string_part1 = "This is the first part, " +string_part2 = "and this is the second part." +full_string = string_part1 + string_part2 +print(full_string) + +https://youtu.be/Si9MfV8uJ-0?si=MGybr7O2US246WRD&t=216 + +5. Проверка на ошибки c помощью кнопки problems, где она находится? +В нижней левой части экрана. +https://youtu.be/Si9MfV8uJ-0?si=xxIDagv6esjuUPLv&t=284 + +6. Где в vscode находится клиент гита? как в нём отправить коммит? как принять домашку? +В левой панели, пиктограмма гита в виде трех соединенных кружочков. +Еще есть вкладка гитленз рядом с вкладкой терминала в нижнем окне. +Отдать коммит: ввести название коммита и нажать "Commit&Push" или отдельно "Commit" и отдельно "Push". +Принять домашку: нажать "Pull" +https://youtu.be/Si9MfV8uJ-0?si=eg_3tPK_nZWI52fM&t=380 + +7. Что такое GIT? он локальный? В нём можно посмотреть историю изменений файлов и вернуться к любому коммиту? +GIT - это система управления версиями. +Да, он локальный. При этом код при коммите копируется в облако. +Да, в нём можно посмотреть историю изменений файлов и вернуться к любому коммиту. + +8. Как вставить картинку в маркдаун? + +или Ctrl+V +https://youtu.be/Si9MfV8uJ-0?si=toY5SNE7ujB5WyHA&t=480 + +9. Где посмотреть длину строки в vs code? +В строке статуса в нижней части экрана. +https://youtu.be/Si9MfV8uJ-0?si=XHegLWKawSrWp-QY&t=77 + +10. Как поменять тип ячейки с питона на маркдаун? +В правом нижнем углу ячейки. + +11. Как запустить сразу все ячейки в юпитере? +Нажимать "Run All" в верхнем меню. +https://youtu.be/Si9MfV8uJ-0?si=XHegLWKawSrWp-QY&t=77 + +12. Как изменить размер картинки в юпитере? Нужно для этого знать HTML? +Нужно поместить картинку в тег img и указать размеры. Да, нужно знать HTML. +https://youtu.be/Si9MfV8uJ-0?si=qroYaaJdYxiBJapm&t=500 + +13. Какой хоткей чтобы запустить ячейку с смещением на следующую? +Shift + Enter +https://youtu.be/Si9MfV8uJ-0?si=x2EhDXqPwZKH9zFb&t=525 + +14. Как включить отображение номеров строк в юпитере(Cell line numbers)? +View -> Cell Line Numbers +Или в ячейке нажать три точки и выбрать "Show Cell Line Numbers". +https://youtu.be/Si9MfV8uJ-0?si=x2EhDXqPwZKH9zFb&t=540 + +15. Что такое "Go To" чем это полезно? Как перейти сразу на ошибочную ячейку? +Go To — это переход к ошибочной ячейке. +https://youtu.be/Si9MfV8uJ-0?si=hjy1y8ZcVgh9Iyx6&t=561 + +16. Как очистить вывод ячеек которые уже запущены? +Выбираем ячейку и нажимаем "Clear All Outputs" в верхнем меню. + +17. Как работать одновременно в нескольких файлах в VSCODE? Что такое SPLIT? +SPLIT — это разделение экрана на несколько частей. Соответствующая кнопка расположена в верхнем меню справа. + +18. Каким сочетанием убирается левый сайдбар? +Ctrl + b + +19. Кнопка два листочка это наши локальные файлы? +Да. + +20. Какая ошибка появилась в трассировке при запуске всех ячеек DICT или LIST? +NameError: name 'Dict' is not defined + +21. Вы ознакомились с https://t.me/c/1937296927/832/19307? и ttps://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet? +Да. + +22. Что такое валидация? +Валидация — это проверка данных на соответствие определенным критериям. + +23. Что такое трассировка ошибки? +Трассировка ошибки — это сообщение об ошибке, которое показывает, где и почему произошла ошибка. + +24. Что значит отвалился интерпритатор? +Интерпретатор — это программа, которая выполняет код. +Отвалился интерпретатор — это значит, что программа не может выполнить код.