diff --git a/.gitignore b/.gitignore index 7e0d4d4..6764990 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,7 @@ coverage.xml .hypothesis/ .pytest_cache/ cover/ +snapshot_report.html # Translations *.mo diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2405373..122da8b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ repos: rev: v4.4.0 hooks: - id: trailing-whitespace - exclude: '\.svg$' + exclude: '\.ambr$' - id: end-of-file-fixer - id: check-yaml - id: check-ast diff --git a/browsr/_tools.py b/browsr/_tools.py deleted file mode 100644 index b0e2e9c..0000000 --- a/browsr/_tools.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -Tools for browsr -""" - -import pathlib -from typing import List, Optional - -from textual._doc import take_svg_screenshot - -from browsr import Browsr -from browsr._base import TextualAppContext - - -def take_screenshot( - app: Optional[Browsr] = None, - press: Optional[List[str]] = None, - file_path: Optional[pathlib.Path] = None, -) -> str: - """ - Take a screenshot of the app - - Parameters - ---------- - app: Optional[Browsr] - The browsr app, if None, a new one will be created - press: Optional[List[str]] - A list of keys to press - file_path: Optional[pathlib.Path] - The path to open in the app - - Returns - ------- - str - The SVG screenshot - """ - if file_path is None: - repo_dir = pathlib.Path(__file__).parent.parent.resolve() - file_path = repo_dir - if app is None: - context = TextualAppContext(file_path=str(file_path)) - app = Browsr(config_object=context) - screenshot = take_svg_screenshot( - app=app, - terminal_size=(160, 48), - press=press or [], - title=None, - ) - return screenshot diff --git a/pyproject.toml b/pyproject.toml index adceeb2..537444d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,7 +79,8 @@ dependencies = [ "mypy~=1.2.0", "pandas-stubs~=2.0.0.230412", "pip-tools~=6.13.0", - "textual-dev~=1.0.1" + "textual-dev~=1.0.1", + "pytest-textual-snapshot" ] features = ["all"] pre-install-commands = ["pip install -U --no-deps -r requirements/requirements-dev.txt"] diff --git a/requirements/requirements-dev.txt b/requirements/requirements-dev.txt index caf13f1..d0f7b6e 100644 --- a/requirements/requirements-dev.txt +++ b/requirements/requirements-dev.txt @@ -438,7 +438,9 @@ coverage[toml]==7.2.7 \ --hash=sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e \ --hash=sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850 \ --hash=sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3 - # via pytest-cov + # via + # coverage + # pytest-cov cryptography==41.0.2 \ --hash=sha256:01f1d9e537f9a15b037d5d9ee442b8c22e3ae11ce65ea1f3316a41c78756b711 \ --hash=sha256:079347de771f9282fbfe0e0236c716686950c19dee1b76240ab09ce1624d76d7 \ @@ -692,6 +694,7 @@ jinja2==3.1.2 \ # mkdocs # mkdocs-material # mkdocstrings + # pytest-textual-snapshot jmespath==1.0.1 \ --hash=sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980 \ --hash=sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe @@ -714,6 +717,7 @@ markdown-it-py[linkify,plugins]==2.2.0 \ --hash=sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30 \ --hash=sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1 # via + # markdown-it-py # mdit-py-plugins # rich # textual @@ -827,6 +831,7 @@ mkdocstrings[python]==0.21.2 \ --hash=sha256:949ef8da92df9d692ca07be50616459a6b536083a25520fd54b00e8814ce019b # via # -r requirements.in + # mkdocstrings # mkdocstrings-python mkdocstrings-python==1.2.1 \ --hash=sha256:7c08f33e9ba7b1655e9cf0608eba3ce7a9513bd8b42a68a8d24ffaf4a6a50cfc \ @@ -1258,7 +1263,9 @@ pygments==2.15.1 \ pyjwt[crypto]==2.8.0 \ --hash=sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de \ --hash=sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320 - # via msal + # via + # msal + # pyjwt pymdown-extensions==10.1 \ --hash=sha256:508009b211373058debb8247e168de4cbcb91b1bff7b5e961b2c3e864e00b195 \ --hash=sha256:ef25dbbae530e8f67575d222b75ff0649b1e841e22c2ae9a20bad9472c2207dc @@ -1320,7 +1327,9 @@ pytest==7.3.2 \ # -r requirements.in # pytest-cov # pytest-mock + # pytest-textual-snapshot # pytest-vcr + # syrupy pytest-cov==4.0.0 \ --hash=sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b \ --hash=sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470 @@ -1329,6 +1338,10 @@ pytest-mock==3.10.0 \ --hash=sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b \ --hash=sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f # via -r requirements.in +pytest-textual-snapshot==0.4.0 \ + --hash=sha256:63782e053928a925d88ff7359dd640f2900e23bc708b3007f8b388e65f2527cb \ + --hash=sha256:879cc5de29cdd31cfe1b6daeb1dc5e42682abebcf4f88e7e3375bd5200683fc0 + # via -r requirements.in pytest-vcr==1.0.2 \ --hash=sha256:23ee51b75abbcc43d926272773aae4f39f93aceb75ed56852d0bf618f92e1896 \ --hash=sha256:2f316e0539399bea0296e8b8401145c62b6f85e9066af7e57b6151481b0d6d9c @@ -1506,6 +1519,7 @@ rich==13.5.2 \ --hash=sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39 # via # -r requirements.in + # pytest-textual-snapshot # rich-click # rich-pixels # textual @@ -1554,11 +1568,16 @@ six==1.16.0 \ # isodate # python-dateutil # vcrpy +syrupy==4.6.0 \ + --hash=sha256:231b1f5d00f1f85048ba81676c79448076189c4aef4d33f21ae32f3b4c565a54 \ + --hash=sha256:747aae1bcf3cb3249e33b1e6d81097874d23615982d5686ebe637875b0775a1b + # via pytest-textual-snapshot textual==0.39.0 \ --hash=sha256:4103c0cb4e87bf9f87f4960213d3c1c33fbe7301a1a1c2df0903ecb62212983c \ --hash=sha256:bf98d7eb5a8a39ed87488640e2a18b2825dd340d36eab6193c9a47af98a3b818 # via # -r requirements.in + # pytest-textual-snapshot # textual-dev # textual-universal-directorytree textual-dev==1.0.1 \ @@ -1568,7 +1587,9 @@ textual-dev==1.0.1 \ textual-universal-directorytree[remote]==1.0.2 \ --hash=sha256:74f0d6687076f9adb9ebcbe50a5cda4a143b971e2729f62b9270f9ae7451458e \ --hash=sha256:eb3a4fcedda94e5fb42c0e9af6352ebc6ceb945d1164fb05ec090c59623a71fc - # via -r requirements.in + # via + # -r requirements.in + # textual-universal-directorytree tomli==2.0.1 \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f diff --git a/requirements/requirements-prod.txt b/requirements/requirements-prod.txt index 06f973f..131e7e7 100644 --- a/requirements/requirements-prod.txt +++ b/requirements/requirements-prod.txt @@ -576,6 +576,7 @@ markdown-it-py[linkify,plugins]==2.2.0 \ --hash=sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30 \ --hash=sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1 # via + # markdown-it-py # mdit-py-plugins # rich # textual @@ -884,7 +885,9 @@ pygments==2.15.1 \ pyjwt[crypto]==2.8.0 \ --hash=sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de \ --hash=sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320 - # via msal + # via + # msal + # pyjwt pymupdf==1.22.5 \ --hash=sha256:01119edb7e4c3dd8c154d237b8ac927bd359eea8d31468f9a89aa308b5bca04e \ --hash=sha256:017aaba511526facfc928e9d95d2c10d28a2821b05b9039bf422031a7da8584e \ @@ -997,7 +1000,9 @@ textual==0.39.0 \ textual-universal-directorytree[remote]==1.0.2 \ --hash=sha256:74f0d6687076f9adb9ebcbe50a5cda4a143b971e2729f62b9270f9ae7451458e \ --hash=sha256:eb3a4fcedda94e5fb42c0e9af6352ebc6ceb945d1164fb05ec090c59623a71fc - # via -r requirements.in + # via + # -r requirements.in + # textual-universal-directorytree typing-extensions==4.7.1 \ --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 diff --git a/tests/__snapshots__/test_screenshots.ambr b/tests/__snapshots__/test_screenshots.ambr new file mode 100644 index 0000000..27e17b9 --- /dev/null +++ b/tests/__snapshots__/test_screenshots.ambr @@ -0,0 +1,789 @@ +# serializer version: 1 +# name: test_github_screenshot + ''' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browsr + + + + + + + + + + browsr — github://juftin:browsr@v1.6.0/README.md [monokai] + 📂 github://juftin:browsr@v1.6.0/┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┣━━ 📁 .githubbrowsr + ┣━━ 📁 browsr┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + ┣━━ 📁 docs + ┣━━ 📁 requirements + ┣━━ 📁 tests🌆 browsr Version🌆 PyPI🌆 Testing Status🌆 GitHub License + ┣━━ 📄 .gitignore + ┣━━ 📄 .pre-commit-config.yamlbrowsr is a TUI (text-based user interface) file browser for your terminal. It's a simple way to browse your files and    + ┣━━ 📄 .releaserc.jstake a peek at their contents. Plus it works on local and remote file systems.                                            + ┣━━ 📄 LICENSE + ┣━━ 📄 mkdocs.yaml + ┣━━ 📄 pyproject.toml + ┗━━ 📄 README.md + + Installation + + The below command recommends pipx instead of pip. pipx installs the package in an isolated environment and makes it easy  + to uninstall. If you'd like to use pip instead, just replace pipx with pip in the below command.                          + + + pipxinstallbrowsr + + + + Extra Installation + + If you're looking to use browsr on remote file systems, like AWS S3, you'll need to install the remote extra. If you'd    + like to browse parquet files, you'll need to install the parquet extra. Or, even simpler, you can install the all extra   + to get all the extras.                                                                                                    + + + pipxinstall"browsr[all]" + + + + Usage + + ▄▄ + browsr~/Downloads/ + + + Simply give browsr a path to a file/directory and it will open a browser window with a file browser. You can also give it + a URL to a remote file system, like AWS S3.                                                                               + + + 🗄️️️  3KB  💾  README.md  📂  juftin:browsr@v1.6.0 +  Q  Quit  F  Toggle Files  T  Toggle Theme  N  Toggle Line Numbers  D  Toggle Dark Mode  .  Parent Directory  X  Download File  + + + + + ''' +# --- +# name: test_github_screenshot_license + ''' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browsr + + + + + + + + + + browsr — github://juftin:browsr@v1.6.0/LICENSE [monokai] + MIT License                                                                                                                                                    + + Copyright (c) 2023-present Justin Flannery <justin.flannery@juftin.com>                                                                                        + + 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 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 FO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 🗄️️️  1KB  💾  LICENSE  📂  juftin:browsr@v1.6.0 +  Q  Quit  F  Toggle Files  T  Toggle Theme  N  Toggle Line Numbers  D  Toggle Dark Mode  .  Parent Directory  X  Download File  + + + + + ''' +# --- +# name: test_mkdocs_screenshot + ''' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + browsr + + + + + + + + + + browsr — github://juftin:browsr@v1.6.0/mkdocs.yaml [monokai] + # schema: https://squidfunk.github.io/mkdocs-material/schema.json + + site_name:browsr                                                                                                                                              + nav: + -index.md                                                                                                                                                 + -Command Line Interface ⌨️:cli.md                                                                                                                         + -Contributing 🤝:contributing.md                                                                                                                         + -API Documentation 🤖:reference/                                                                                                                         + theme: + favicon:https://raw.githubusercontent.com/juftin/browsr/main/docs/_static/browsr_no_label.png                                                             + logo:https://raw.githubusercontent.com/juftin/browsr/main/docs/_static/browsr_no_label.png                                                                + name:material                                                                                                                                             + features: + -navigation.tracking                                                                                                                                  + -content.code.annotate                                                                                                                                + -content.code.copy                                                                                                                                    + palette: + -media:"(prefers-color-scheme:light)" + scheme:default                                                                                                                                      + accent:purple                                                                                                                                       + toggle: + icon:material/weather-sunny                                                                                                                     + name:Switch to dark mode                                                                                                                        + -media:"(prefers-color-scheme:dark)" + scheme:slate                                                                                                                                        + primary:black                                                                                                                                       + toggle: + icon:material/weather-night                                                                                                                    ▅▅ + name:Switch to light mode                                                                                                                       + repo_url:https://github.com/juftin/browsr                                                                                                                     + repo_name:browsr                                                                                                                                              + edit_uri:blob/main/docs/                                                                                                                                      + site_author:Justin Flannery                                                                                                                                   + remote_branch:gh-pages                                                                                                                                        + copyright:Copyright © 2023 Justin Flannery                                                                                                                    + extra: + generator:false                                                                                                                                           + markdown_extensions: + -toc: + permalink:"#" + -pymdownx.snippets                                                                                                                                        + -pymdownx.magiclink                                                                                                                                       + -attr_list                                                                                                                                                + -md_in_html                                                                                                                                               + -pymdownx.highlight: + 🗄️️️  2KB  💾  mkdocs.yaml  📂  juftin:browsr@v1.6.0 +  Q  Quit  F  Toggle Files  T  Toggle Theme  N  Toggle Line Numbers  D  Toggle Dark Mode  .  Parent Directory  X  Download File  + + + + + ''' +# --- diff --git a/tests/cassettes/test_github_screenshot.yaml b/tests/cassettes/test_github_screenshot.yaml index 021ebfb..207636b 100644 --- a/tests/cassettes/test_github_screenshot.yaml +++ b/tests/cassettes/test_github_screenshot.yaml @@ -9,28 +9,15 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 + authorization: + - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr/git/trees/v1.6.0 response: body: - string: !!binary | - H4sIAAAAAAAAA6WWTW/bOBCG/4vOqcXh5zC3YjeHBdoetsdiDzPkMHHWtlxJxiIt8t9LbYJavRRs - 5YNtQiYeP+TwHX7tpgfqbjtGJQTRBBe0siBaMqItJkOIECkYbVmh4u6mu4yHOuFhns/Tbd/Teb+7 - 388PF96l4diPch6m/vFS5v2p53H4bxr7+rifR5Gp/wXKMqG7/fS1O9P8UHmvkMo/Drk+6ZRV9VXH - 89N5Gf8/4eZVh6ICkhw92yBJSpbiuRhnFDqvvKPgS4kFt+k0U55vfvDY35+GcfmzryqglLf2qsKH - YVnol50JorLN1ikyjmIwkl0dgwgHG9FDKexRUlkm7L/UldCo7G/u0gKe+mbiWus8yptaAMf9XD9O - ZX+/e6LjodGRYsagLGFCByCerFHKaEnag0smlypbGJclenEEE+Imx2bi2nGUg9AkY9o9To1mAYQ5 - m2riIDjkEsVQ8gxJW48KqcSsMdLVzIWNu9dKXJm9++uPuw8f7xqdTAEAnzmmRExogApnG5zVhJml - QBLWgPHqBGrbbjUTV05/37398/3d7pgbrYCD1kEjCFCKiqPySTlCnSR6ZJ+dGACbrues/nhTDTYT - V1YvkXpV+mkK5myLYvJoEDnVdw1asTdIYG0MTCWbaN3GUG+mrDTykFYn6OcSddlzzQWyYAoWnXKu - LckoXSOcKDmJRkpKS7Vt6Ey5lbKSOP67aPxKzmUHrgZ2AetAAaRMNRdsMsE6ASehxkEItRdcawzQ - /KbXS5Y3E1de56fzODxKmnfz0BzhEVm8AsQl5GxKBTIVCk7FXKtPqDZeEySH72rW2m3Hp5m4Uhvl - 82U/ylFOc2v9GVbW5kIpJ1Y159jkyLU5GV8vR8Ylh9GKheUmsqH+mikrmVmmZotaZw6xGIGYtBLx - aGtGOweZgzeO61c2qWw8Rc2U53/qvW28nBLNkrvbQodJnr8BMK8OzowKAAA= + string: '{"sha":"b80ea1937572041e2ed884f3d17919a7324b080b","url":"https://api.github.com/repos/juftin/browsr/git/trees/b80ea1937572041e2ed884f3d17919a7324b080b","tree":[{"path":".github","mode":"040000","type":"tree","sha":"a901aed96b47ecefdef6bf3530856065a76ff9f8","url":"https://api.github.com/repos/juftin/browsr/git/trees/a901aed96b47ecefdef6bf3530856065a76ff9f8"},{"path":".gitignore","mode":"100644","type":"blob","sha":"7e0d4d450a35a973ed5d4d1eeb749861ffb68ecf","size":2804,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/7e0d4d450a35a973ed5d4d1eeb749861ffb68ecf"},{"path":".pre-commit-config.yaml","mode":"100644","type":"blob","sha":"a9d8704a8c8511e6a430032ec2615c3dfeb7fb84","size":1379,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/a9d8704a8c8511e6a430032ec2615c3dfeb7fb84"},{"path":".releaserc.js","mode":"100644","type":"blob","sha":"71ebbd3ec251758bf9e3ac6b1c246808af9d289a","size":1574,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/71ebbd3ec251758bf9e3ac6b1c246808af9d289a"},{"path":"LICENSE","mode":"100644","type":"blob","sha":"3f1116db9ccaba831afbd47542a8dbef1ceb2189","size":1109,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/3f1116db9ccaba831afbd47542a8dbef1ceb2189"},{"path":"README.md","mode":"100644","type":"blob","sha":"1b7227281e1ac90b906c05a82ce968b6d5e3114c","size":2728,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/1b7227281e1ac90b906c05a82ce968b6d5e3114c"},{"path":"browsr","mode":"040000","type":"tree","sha":"dd4f0ba68388bc8382120b638a14497bafd3945b","url":"https://api.github.com/repos/juftin/browsr/git/trees/dd4f0ba68388bc8382120b638a14497bafd3945b"},{"path":"docs","mode":"040000","type":"tree","sha":"de31dc85a413f8f2cdd79130276faac5e93efcc9","url":"https://api.github.com/repos/juftin/browsr/git/trees/de31dc85a413f8f2cdd79130276faac5e93efcc9"},{"path":"mkdocs.yaml","mode":"100644","type":"blob","sha":"d5151fff1451011cdac254c3745e15e78af77064","size":2183,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/d5151fff1451011cdac254c3745e15e78af77064"},{"path":"pyproject.toml","mode":"100644","type":"blob","sha":"98be6018858bf4ccf1dafa7509d388ea08537ed7","size":4448,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/98be6018858bf4ccf1dafa7509d388ea08537ed7"},{"path":"requirements","mode":"040000","type":"tree","sha":"3b044dfacdcb0bd4b3d9b032363d135c5894e410","url":"https://api.github.com/repos/juftin/browsr/git/trees/3b044dfacdcb0bd4b3d9b032363d135c5894e410"},{"path":"tests","mode":"040000","type":"tree","sha":"c25588f3e19c20ee684b21551db7635b155b3cf9","url":"https://api.github.com/repos/juftin/browsr/git/trees/c25588f3e19c20ee684b21551db7635b155b3cf9"}],"truncated":false}' headers: - Accept-Ranges: - - bytes Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: @@ -39,29 +26,31 @@ interactions: X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - - public, max-age=60, s-maxage=60 - Content-Encoding: - - gzip - Content-Length: - - "728" + - private, max-age=60, s-maxage=60 + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:01:44 GMT + - Fri, 22 Dec 2023 02:40:00 GMT ETag: - - W/"91ee3d202828b3c28fcd9be69924424a4f792f5f17ff608d6d4ac2b1e19e5fcd" + - W/"bbfd14c82ededc5d6619f1ca1d1aa8852c6efbee36a352a067516ea4c77807ca" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: - GitHub.com Strict-Transport-Security: - max-age=31536000; includeSubdomains; preload + Transfer-Encoding: + - chunked Vary: - - Accept, Accept-Encoding, Accept, X-Requested-With + - Accept, Authorization, Cookie, X-GitHub-OTP + - Accept-Encoding, Accept, X-Requested-With + X-Accepted-OAuth-Scopes: + - "" X-Content-Type-Options: - nosniff X-Frame-Options: @@ -69,17 +58,20 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - C66F:5F92:13EA1B3:28FFF1A:646578F8 + - C116:12DF:59944FF:B9320C7:6584F700 + X-OAuth-Scopes: + - admin:gpg_key, admin:org, admin:public_key, admin:repo_hook, delete:packages, + delete_repo, gist, notifications, project, repo, user, workflow, write:packages X-RateLimit-Limit: - - "60" + - "5000" X-RateLimit-Remaining: - - "53" + - "4986" X-RateLimit-Reset: - - "1684374609" + - "1703215491" X-RateLimit-Resource: - core X-RateLimit-Used: - - "7" + - "14" X-XSS-Protection: - "0" x-github-api-version-selected: @@ -97,27 +89,14 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 authorization: - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr/git/trees/v1.6.0 response: body: - string: !!binary | - H4sIAAAAAAAAA6WWTW/bOBCG/4vOqcXh5zC3YjeHBdoetsdiDzPkMHHWtlxJxiIt8t9LbYJavRRs - 5YNtQiYeP+TwHX7tpgfqbjtGJQTRBBe0siBaMqItJkOIECkYbVmh4u6mu4yHOuFhns/Tbd/Teb+7 - 388PF96l4diPch6m/vFS5v2p53H4bxr7+rifR5Gp/wXKMqG7/fS1O9P8UHmvkMo/Drk+6ZRV9VXH - 89N5Gf8/4eZVh6ICkhw92yBJSpbiuRhnFDqvvKPgS4kFt+k0U55vfvDY35+GcfmzryqglLf2qsKH - YVnol50JorLN1ikyjmIwkl0dgwgHG9FDKexRUlkm7L/UldCo7G/u0gKe+mbiWus8yptaAMf9XD9O - ZX+/e6LjodGRYsagLGFCByCerFHKaEnag0smlypbGJclenEEE+Imx2bi2nGUg9AkY9o9To1mAYQ5 - m2riIDjkEsVQ8gxJW48KqcSsMdLVzIWNu9dKXJm9++uPuw8f7xqdTAEAnzmmRExogApnG5zVhJml - QBLWgPHqBGrbbjUTV05/37398/3d7pgbrYCD1kEjCFCKiqPySTlCnSR6ZJ+dGACbrues/nhTDTYT - V1YvkXpV+mkK5myLYvJoEDnVdw1asTdIYG0MTCWbaN3GUG+mrDTykFYn6OcSddlzzQWyYAoWnXKu - LckoXSOcKDmJRkpKS7Vt6Ey5lbKSOP67aPxKzmUHrgZ2AetAAaRMNRdsMsE6ASehxkEItRdcawzQ - /KbXS5Y3E1de56fzODxKmnfz0BzhEVm8AsQl5GxKBTIVCk7FXKtPqDZeEySH72rW2m3Hp5m4Uhvl - 82U/ylFOc2v9GVbW5kIpJ1Y159jkyLU5GV8vR8Ylh9GKheUmsqH+mikrmVmmZotaZw6xGIGYtBLx - aGtGOweZgzeO61c2qWw8Rc2U53/qvW28nBLNkrvbQodJnr8BMK8OzowKAAA= + string: '{"sha":"b80ea1937572041e2ed884f3d17919a7324b080b","url":"https://api.github.com/repos/juftin/browsr/git/trees/b80ea1937572041e2ed884f3d17919a7324b080b","tree":[{"path":".github","mode":"040000","type":"tree","sha":"a901aed96b47ecefdef6bf3530856065a76ff9f8","url":"https://api.github.com/repos/juftin/browsr/git/trees/a901aed96b47ecefdef6bf3530856065a76ff9f8"},{"path":".gitignore","mode":"100644","type":"blob","sha":"7e0d4d450a35a973ed5d4d1eeb749861ffb68ecf","size":2804,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/7e0d4d450a35a973ed5d4d1eeb749861ffb68ecf"},{"path":".pre-commit-config.yaml","mode":"100644","type":"blob","sha":"a9d8704a8c8511e6a430032ec2615c3dfeb7fb84","size":1379,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/a9d8704a8c8511e6a430032ec2615c3dfeb7fb84"},{"path":".releaserc.js","mode":"100644","type":"blob","sha":"71ebbd3ec251758bf9e3ac6b1c246808af9d289a","size":1574,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/71ebbd3ec251758bf9e3ac6b1c246808af9d289a"},{"path":"LICENSE","mode":"100644","type":"blob","sha":"3f1116db9ccaba831afbd47542a8dbef1ceb2189","size":1109,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/3f1116db9ccaba831afbd47542a8dbef1ceb2189"},{"path":"README.md","mode":"100644","type":"blob","sha":"1b7227281e1ac90b906c05a82ce968b6d5e3114c","size":2728,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/1b7227281e1ac90b906c05a82ce968b6d5e3114c"},{"path":"browsr","mode":"040000","type":"tree","sha":"dd4f0ba68388bc8382120b638a14497bafd3945b","url":"https://api.github.com/repos/juftin/browsr/git/trees/dd4f0ba68388bc8382120b638a14497bafd3945b"},{"path":"docs","mode":"040000","type":"tree","sha":"de31dc85a413f8f2cdd79130276faac5e93efcc9","url":"https://api.github.com/repos/juftin/browsr/git/trees/de31dc85a413f8f2cdd79130276faac5e93efcc9"},{"path":"mkdocs.yaml","mode":"100644","type":"blob","sha":"d5151fff1451011cdac254c3745e15e78af77064","size":2183,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/d5151fff1451011cdac254c3745e15e78af77064"},{"path":"pyproject.toml","mode":"100644","type":"blob","sha":"98be6018858bf4ccf1dafa7509d388ea08537ed7","size":4448,"url":"https://api.github.com/repos/juftin/browsr/git/blobs/98be6018858bf4ccf1dafa7509d388ea08537ed7"},{"path":"requirements","mode":"040000","type":"tree","sha":"3b044dfacdcb0bd4b3d9b032363d135c5894e410","url":"https://api.github.com/repos/juftin/browsr/git/trees/3b044dfacdcb0bd4b3d9b032363d135c5894e410"},{"path":"tests","mode":"040000","type":"tree","sha":"c25588f3e19c20ee684b21551db7635b155b3cf9","url":"https://api.github.com/repos/juftin/browsr/git/trees/c25588f3e19c20ee684b21551db7635b155b3cf9"}],"truncated":false}' headers: Access-Control-Allow-Origin: - "*" @@ -128,18 +107,17 @@ interactions: X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - private, max-age=60, s-maxage=60 - Content-Encoding: - - gzip + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:01:44 GMT + - Fri, 22 Dec 2023 02:40:00 GMT ETag: - - W/"020b9c645dc6800fbd32a722b2d8f51d3a58cc017d63e5da3554a56489b157ec" + - W/"bbfd14c82ededc5d6619f1ca1d1aa8852c6efbee36a352a067516ea4c77807ca" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -160,21 +138,20 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - C670:14FC:14A1CE8:2A6CA7E:646578F8 + - C117:585F:8073BEC:108E07BE:6584F700 X-OAuth-Scopes: - - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, - admin:ssh_signing_key, audit_log, codespace, delete:packages, gist, notifications, - project, read:enterprise, repo, user, workflow, write:discussion, write:packages + - admin:gpg_key, admin:org, admin:public_key, admin:repo_hook, delete:packages, + delete_repo, gist, notifications, project, repo, user, workflow, write:packages X-RateLimit-Limit: - "5000" X-RateLimit-Remaining: - - "4981" + - "4985" X-RateLimit-Reset: - - "1684373394" + - "1703215491" X-RateLimit-Resource: - core X-RateLimit-Used: - - "19" + - "15" X-XSS-Protection: - "0" x-github-api-version-selected: @@ -197,27 +174,35 @@ interactions: uri: https://raw.githubusercontent.com/juftin/browsr/v1.6.0/README.md response: body: - string: !!binary | - H4sIAAAAAAAAA7VWUW/bNhB+16+4KdgaB46UNH1K7QRFG6wGsi1Ykg2DUcSUdJZYU6RGUnb0st++ - o0ilcb1kHYbkwaHJu/s+Hu+78x5kWm2MjqJJwdfABC/lNM5RWtQxVBqX07iytjGnaVpyW7VZkqs6 - /dwuLZep943PIqC/Cftv9uTB6xKMzqeDh2abxHu1BnWuiIW0uwHSmtG6ULlJ74xllufhIGlkGWID - bHhhq2n85ugopnvZabzNNmVn0SSlS59F0fy7uT+E31AbruSn/YESUUxMxVEUJuEqbbqGp+sAd54r - ofQ0Ey3+IFiGYur3R1/cn8rByGFedVez55Gabu0JmXQntDNIms5WSiZKl94hJKgPf4OGAEu4phS1 - 5t85pSy3PdRG6dVS0FZqKYRJOlaLNGNFiYlZl+eZZjKvpu4RvuGmz0Y9/7NF3U19xO9P3vUxHfcf - uf3YZnDJqRQNPpkkD5oKb7YNvPs6Idq3kM6EynyZXc7eX/x8fTGKooODhT9dHBwAN8Dg5nYG+xbv - 7WHGDBbgqha4086S5TiCJRfoBUb7S6WhU60GOq65ZCKJZvaVC2N43ZDhhnVgVbD3pi4AWcgCLFsh - mTaIK2AWbIVcQ1CISeBKtAa4jVySDSgJQuVM9J4aa2XRczGdsVibxMkdLeOCbBuUZ5PUtHXNdPdo - RTaZKuh/3xmM7QRO44KbRrDuFErNi7f95yFFpD2Lh5TwtpbmlCAbZHb/9RiOl3oUzErWnMLxUXP/ - dpDgIP/4/+vf5BrpbStl71pL13KdIMh+VrMS4fhlQQtGWywTuAP8+mWBayXZneCG7QCfvDAw06tC - beQO7pv4obFOUl9B7rsvN1rv7cFMUjxBNUONIYpuKhIJUmegeqbS60vWrVAWBuYNb+63mh4L3Psm - SYfpiCRHZc0KUEugnQQWbn/RbxOMcWqBhuUrR4/LiEmSr3IlWwDKNddKEpjt1VKTzpySAJnp5djK - ECaB2dKp8lUBgpMY3Rnp1GEtBgZj+Nwa6+pfUAMIPKIN8X2w68lsXZfUuFgsTIVCRM5h4D2MZjrs - s3ZxbzX7KneBkkYSvFq5bh9obTUr6gf/0AXG/h7vfr+G65NxH4dAJVJWKMhAwtFdeO8FoKOQRDuJ - CD2rYZoauvVt6/mIwXQICb/oMeAaZWiGehyRN+TuqR670SK4uIglYQ1H/aZ5Mpdh+s9p/Sl+SOmt - oZJ45BJ+BfyVfqDKFooVJvW2145VByVff5VaasmMXpfIsP7aVPhUvVbpri8nKqQNJ3jXZclimAUb - Lkk7vjDY1phI4I9wbyaM8oAUhMHtr5ceZfcltx4y2b2OOSHl1N1h1uYrtG7lnJPwBEMy9mD+vsJ8 - Bart5wt8UHnrdNGX2hcJ+h7Rt4vh10Y/22qlsU9qGLO7A5OGh9U8a53uWllQHhyMG4fGSdd9mf80 - uwExTP1h9ibR3/TD34GoCgAA + string: + "# browsr\n\n
\n + \ \n \"browsr\"\n \n
\n\n[![browsr Version](https://img.shields.io/pypi/v/browsr?color=blue&label=browsr)](https://github.com/juftin/browsr)\n[![PyPI](https://img.shields.io/pypi/pyversions/browsr)](https://pypi.python.org/pypi/browsr/)\n[![Testing + Status](https://github.com/juftin/browsr/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/juftin/browsr/actions/workflows/tests.yaml?query=branch%3Amain)\n[![GitHub + License](https://img.shields.io/github/license/juftin/browsr?color=blue&label=License)](https://github.com/juftin/browsr/blob/main/LICENSE)\n\n**`browsr`** + is a TUI (text-based user interface) file browser for your terminal.\nIt's + a simple way to browse your files and take a peek at their contents. Plus + it\nworks on local and remote file systems.\n\n
\n\n\n
\n + \ \"Image\n \"Image\n \"Image\n \"Image\n
\n\n\n
\n\n## Installation\n\nThe + below command recommends [pipx](https://pypa.github.io/pipx/) instead of pip. + `pipx` installs the package in\nan isolated environment and makes it easy + to uninstall. If you'd like to use `pip` instead, just replace `pipx`\nwith + `pip` in the below command.\n\n```shell\npipx install browsr\n```\n\n## Extra + Installation\n\nIf you're looking to use **`browsr`** on remote file systems, + like AWS S3, you'll need to install the `remote` extra.\nIf you'd like to + browse parquet files, you'll need to install the `parquet` extra. Or, even + simpler,\nyou can install the `all` extra to get all the extras.\n\n```shell\npipx + install \"browsr[all]\"\n```\n\n## Usage\n\n```shell\nbrowsr ~/Downloads/\n```\n\nSimply + give **`browsr`** a path to a file/directory and it will open a browser window\nwith + a file browser. You can also give it a URL to a remote file system, like AWS + S3.\n\n```shell\nbrowsr s3://my-bucket/my-file.parquet\n```\n\n### [Check + out the Documentation](https://juftin.com/browsr/) for more\n\n## License\n\n**`browsr`** + is distributed under the terms of the [MIT license](LICENSE).\n" headers: Accept-Ranges: - bytes @@ -227,8 +212,7 @@ interactions: - max-age=300 Connection: - keep-alive - Content-Encoding: - - gzip + Content-Length: - "1101" Content-Security-Policy: diff --git a/tests/cassettes/test_github_screenshot_license.yaml b/tests/cassettes/test_github_screenshot_license.yaml index 27b5654..7be4aa9 100644 --- a/tests/cassettes/test_github_screenshot_license.yaml +++ b/tests/cassettes/test_github_screenshot_license.yaml @@ -9,24 +9,39 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 + authorization: + - XXXXXXXXXX method: GET uri: https://raw.githubusercontent.com/juftin/browsr/v1.6.0/LICENSE response: body: - string: !!binary | - H4sIAAAAAAAAA11SW2/aMBR+51cc8dRKGZu6t2ma5gZTvIUkckwZjyFxiKsQo9gZ4t/vHJOu6yQk - dG7fzdkIBYmpdO/0bBbb83Uwx9bDXXUPD58ePn84D9rp3sOP0XnTw6or+14PV/j6EhqLZmp8fxkb - qit7+jab5Xo4GeeM7cE4aPWgD1c4DmXvdR1BM2gNtoGqLYejjsBbKPsrnPXg8MAefGl60x+hhAoF - 0aZvEcbZxl/KQeNyDaVztjIl4kFtq/GEGktPfI3ptIM732qYF9PF/D6Q1LrsAE3Q7HUEF+NbO3pA - n34wFWFEuFR1Y00aXsedOZmJgc5DSo5AR4cOSGcEJ1ubhv51sHUeD51xbQS1IejD6LHpqBnijsjH - RzuA011HCAZ1B69v6sIOsZwpUD9FFHgvrT29d4IRNePQI6UON7XFyALji648dWi9sV1nL2Stsn1t - yJH7MpspHJUH+1sHL7ePoLcepd4k0AOc3151Grm2RO0HPQWGvBhv+Y+dgeidx4c3mP3ZDoHvf5sL - 5F9zKLKV2jHJQRSQy+xZLPkS5qzAeh7BTqh1tlWAG5Klag/ZCli6h58iXUbAf+WSFwVkEsQmTwTH - nkjjZLsU6RM84l2a4ZcuNkIhqMqACCcowQsC23AZr7FkjyIRah/BSqiUMFcIyiBnUol4mzAJ+Vbm - WcGRfomwqUhXEln4hqdqgazYA/6MBRRrliSBim1RvQz64izfS/G0VrDOkiXH5iNHZewx4TcqNBUn - TGwiWLINe+LhKkMUGdYmdbs1Dy3kY/iLlchSshFnqZJYRuhSqr+nO1HwCJgUBQWykhnCU5x4kQUQ - vEv5DYWihncvgitUbwv+pmXJWYJYBR3/u7yY/QHuFHbQVQQAAA== + string: 'MIT License + + + Copyright (c) 2023-present Justin Flannery + + + 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. + + ' headers: Accept-Ranges: - bytes @@ -36,20 +51,21 @@ interactions: - max-age=300 Connection: - keep-alive - Content-Encoding: - - gzip + Content-Length: - "664" Content-Security-Policy: - default-src 'none'; style-src 'unsafe-inline'; sandbox Content-Type: - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin Date: - - Thu, 18 May 2023 01:01:45 GMT + - Fri, 22 Dec 2023 02:35:37 GMT ETag: - W/"7317880eca0696f93222e0968307748f383c87a2a37112679931db91bdd5f000" Expires: - - Thu, 18 May 2023 01:06:45 GMT + - Fri, 22 Dec 2023 02:40:37 GMT Source-Age: - "0" Strict-Transport-Security: @@ -59,21 +75,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - "0" + - "1" X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - d2531263c424560513b093dc95b27b5d1046121c + - 610728dd0ab1b2a88737c8cc0d1fb651715a5424 X-Frame-Options: - deny X-GitHub-Request-Id: - - B520:0A4A:1931F94:1D9B25C:646578F9 + - F05E:573D:112B22D:1495B2F:6584F370 X-Served-By: - - cache-den8283-DEN + - cache-den8245-DEN X-Timer: - - S1684371705.312640,VS0,VE131 + - S1703212537.491474,VS0,VE154 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/cassettes/test_mkdocs_screenshot.yaml b/tests/cassettes/test_mkdocs_screenshot.yaml new file mode 100644 index 0000000..7ce9bae --- /dev/null +++ b/tests/cassettes/test_mkdocs_screenshot.yaml @@ -0,0 +1,100 @@ +interactions: + - request: + body: null + headers: + Accept: + - "*/*" + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + authorization: + - XXXXXXXXXX + method: GET + uri: https://raw.githubusercontent.com/juftin/browsr/v1.6.0/mkdocs.yaml + response: + body: + string: + "# schema: https://squidfunk.github.io/mkdocs-material/schema.json\n\nsite_name: + browsr\nnav:\n - index.md\n - Command Line Interface \u2328\uFE0F: cli.md\n + \ - Contributing \U0001F91D: contributing.md\n - API Documentation \U0001F916: + reference/\ntheme:\n favicon: https://raw.githubusercontent.com/juftin/browsr/main/docs/_static/browsr_no_label.png\n + \ logo: https://raw.githubusercontent.com/juftin/browsr/main/docs/_static/browsr_no_label.png\n + \ name: material\n features:\n - navigation.tracking\n - + content.code.annotate\n - content.code.copy\n palette:\n - + media: \"(prefers-color-scheme: light)\"\n scheme: default\n accent: + purple\n toggle:\n icon: material/weather-sunny\n name: + Switch to dark mode\n - media: \"(prefers-color-scheme: dark)\"\n scheme: + slate\n primary: black\n toggle:\n icon: material/weather-night\n + \ name: Switch to light mode\nrepo_url: https://github.com/juftin/browsr\nrepo_name: + browsr\nedit_uri: blob/main/docs/\nsite_author: Justin Flannery\nremote_branch: + gh-pages\ncopyright: Copyright \xA9 2023 Justin Flannery\nextra:\n generator: + false\nmarkdown_extensions:\n - toc:\n permalink: \"#\"\n - + pymdownx.snippets\n - pymdownx.magiclink\n - attr_list\n - md_in_html\n + \ - pymdownx.highlight:\n anchor_linenums: true\n - pymdownx.inlinehilite\n + \ - pymdownx.superfences\n - markdown.extensions.attr_list\n - pymdownx.keys\n + \ - pymdownx.tasklist:\n custom_checkbox: true\n - pymdownx.tilde\n + \ - admonition\n - pymdownx.details\n - mkdocs-click\nplugins:\n - + search\n - gen-files:\n scripts:\n - docs/gen_ref_pages.py\n + \ - literate-nav:\n nav_file: SUMMARY.md\n - section-index:\n + \ - mkdocstrings:\n handlers:\n python:\n import:\n + \ - https://docs.python.org/3/objects.inv\n - + https://numpy.org/doc/stable/objects.inv\n - https://pandas.pydata.org/docs/objects.inv\n + \ options:\n docstring_style: numpy\n + \ filters: []\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - "*" + Cache-Control: + - max-age=300 + Connection: + - keep-alive + + Content-Length: + - "879" + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Fri, 22 Dec 2023 03:03:57 GMT + ETag: + - W/"95920d25cd145c3ee86d6eecaab797adc36dbe478ad9976c065b7b0ece18ff37" + Expires: + - Fri, 22 Dec 2023 03:08:57 GMT + Source-Age: + - "0" + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - MISS + X-Cache-Hits: + - "0" + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 11e6b224a6be10f8c7b3560ea4e9b30f5c65b73b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0B6E:7FD9:125D10A:15C3F3F:6584FC9C + X-Served-By: + - cache-den8236-DEN + X-Timer: + - S1703214237.880066,VS0,VE378 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_textual_app_context_path_github.yaml b/tests/cassettes/test_textual_app_context_path_github.yaml index 46f0d54..29795a7 100644 --- a/tests/cassettes/test_textual_app_context_path_github.yaml +++ b/tests/cassettes/test_textual_app_context_path_github.yaml @@ -9,42 +9,17 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 authorization: - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr response: body: - string: !!binary | - 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 + string: + "{\"id\":635626551,\"node_id\":\"R_kgDOJeLkNw\",\"name\":\"browsr\",\"full_name\":\"juftin/browsr\",\"private\":false,\"owner\":{\"login\":\"juftin\",\"id\":49741340,\"node_id\":\"MDQ6VXNlcjQ5NzQxMzQw\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/49741340?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/juftin\",\"html_url\":\"https://github.com/juftin\",\"followers_url\":\"https://api.github.com/users/juftin/followers\",\"following_url\":\"https://api.github.com/users/juftin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/juftin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/juftin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/juftin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/juftin/orgs\",\"repos_url\":\"https://api.github.com/users/juftin/repos\",\"events_url\":\"https://api.github.com/users/juftin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/juftin/received_events\",\"type\":\"User\",\"site_admin\":false},\"html_url\":\"https://github.com/juftin/browsr\",\"description\":\"\U0001F5C2\uFE0F + a pleasant file explorer in your terminal supporting remote and local filesystems\",\"fork\":false,\"url\":\"https://api.github.com/repos/juftin/browsr\",\"forks_url\":\"https://api.github.com/repos/juftin/browsr/forks\",\"keys_url\":\"https://api.github.com/repos/juftin/browsr/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/juftin/browsr/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/juftin/browsr/teams\",\"hooks_url\":\"https://api.github.com/repos/juftin/browsr/hooks\",\"issue_events_url\":\"https://api.github.com/repos/juftin/browsr/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/juftin/browsr/events\",\"assignees_url\":\"https://api.github.com/repos/juftin/browsr/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/juftin/browsr/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/juftin/browsr/tags\",\"blobs_url\":\"https://api.github.com/repos/juftin/browsr/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/juftin/browsr/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/juftin/browsr/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/juftin/browsr/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/juftin/browsr/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/juftin/browsr/languages\",\"stargazers_url\":\"https://api.github.com/repos/juftin/browsr/stargazers\",\"contributors_url\":\"https://api.github.com/repos/juftin/browsr/contributors\",\"subscribers_url\":\"https://api.github.com/repos/juftin/browsr/subscribers\",\"subscription_url\":\"https://api.github.com/repos/juftin/browsr/subscription\",\"commits_url\":\"https://api.github.com/repos/juftin/browsr/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/juftin/browsr/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/juftin/browsr/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/juftin/browsr/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/juftin/browsr/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/juftin/browsr/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/juftin/browsr/merges\",\"archive_url\":\"https://api.github.com/repos/juftin/browsr/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/juftin/browsr/downloads\",\"issues_url\":\"https://api.github.com/repos/juftin/browsr/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/juftin/browsr/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/juftin/browsr/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/juftin/browsr/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/juftin/browsr/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/juftin/browsr/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/juftin/browsr/deployments\",\"created_at\":\"2023-05-03T05:26:39Z\",\"updated_at\":\"2023-12-10T01:37:27Z\",\"pushed_at\":\"2023-11-16T19:38:09Z\",\"git_url\":\"git://github.com/juftin/browsr.git\",\"ssh_url\":\"git@github.com:juftin/browsr.git\",\"clone_url\":\"https://github.com/juftin/browsr.git\",\"svn_url\":\"https://github.com/juftin/browsr\",\"homepage\":\"http://juftin.com/browsr/\",\"size\":15231,\"stargazers_count\":118,\"watchers_count\":118,\"language\":\"Python\",\"has_issues\":true,\"has_projects\":true,\"has_downloads\":true,\"has_wiki\":true,\"has_pages\":true,\"has_discussions\":false,\"forks_count\":7,\"mirror_url\":null,\"archived\":false,\"disabled\":false,\"open_issues_count\":5,\"license\":{\"key\":\"mit\",\"name\":\"MIT + License\",\"spdx_id\":\"MIT\",\"url\":\"https://api.github.com/licenses/mit\",\"node_id\":\"MDc6TGljZW5zZTEz\"},\"allow_forking\":true,\"is_template\":false,\"web_commit_signoff_required\":false,\"topics\":[\"file-explorer\",\"python\",\"s3\",\"textual\",\"tui\"],\"visibility\":\"public\",\"forks\":7,\"open_issues\":5,\"watchers\":118,\"default_branch\":\"main\",\"temp_clone_token\":null,\"network_count\":7,\"subscribers_count\":4}" headers: Access-Control-Allow-Origin: - "*" @@ -54,19 +29,18 @@ interactions: X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - - private, max-age=60, s-maxage=60 - Content-Encoding: - - gzip + - public, max-age=60, s-maxage=60 + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:11:52 GMT + - Fri, 22 Dec 2023 02:07:03 GMT ETag: - - W/"2c616d7658dd3e9d038de5acd0d7b638534992a3fb94898406872681f50b3561" + - W/"5f419a39a5d15c54ae8cb52bdce7f33bf7b526027633c10b0d5df086f73e22d5" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -76,10 +50,8 @@ interactions: Transfer-Encoding: - chunked Vary: - - Accept, Authorization, Cookie, X-GitHub-OTP + - Accept - Accept-Encoding, Accept, X-Requested-With - X-Accepted-OAuth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -87,21 +59,17 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - CACC:22F6:211DE7D:4433A1B:64657B58 - X-OAuth-Scopes: - - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, - admin:ssh_signing_key, audit_log, codespace, delete:packages, gist, notifications, - project, read:enterprise, repo, user, workflow, write:discussion, write:packages + - FECE:78C9:8686C44:11501E51:6584EF47 X-RateLimit-Limit: - - "5000" + - "60" X-RateLimit-Remaining: - - "4978" + - "59" X-RateLimit-Reset: - - "1684373394" + - "1703214423" X-RateLimit-Resource: - core X-RateLimit-Used: - - "22" + - "1" X-XSS-Protection: - "0" x-github-api-version-selected: @@ -119,42 +87,17 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 authorization: - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr response: body: - string: !!binary | - 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 + string: + "{\"id\":635626551,\"node_id\":\"R_kgDOJeLkNw\",\"name\":\"browsr\",\"full_name\":\"juftin/browsr\",\"private\":false,\"owner\":{\"login\":\"juftin\",\"id\":49741340,\"node_id\":\"MDQ6VXNlcjQ5NzQxMzQw\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/49741340?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/juftin\",\"html_url\":\"https://github.com/juftin\",\"followers_url\":\"https://api.github.com/users/juftin/followers\",\"following_url\":\"https://api.github.com/users/juftin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/juftin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/juftin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/juftin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/juftin/orgs\",\"repos_url\":\"https://api.github.com/users/juftin/repos\",\"events_url\":\"https://api.github.com/users/juftin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/juftin/received_events\",\"type\":\"User\",\"site_admin\":false},\"html_url\":\"https://github.com/juftin/browsr\",\"description\":\"\U0001F5C2\uFE0F + a pleasant file explorer in your terminal supporting remote and local filesystems\",\"fork\":false,\"url\":\"https://api.github.com/repos/juftin/browsr\",\"forks_url\":\"https://api.github.com/repos/juftin/browsr/forks\",\"keys_url\":\"https://api.github.com/repos/juftin/browsr/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/juftin/browsr/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/juftin/browsr/teams\",\"hooks_url\":\"https://api.github.com/repos/juftin/browsr/hooks\",\"issue_events_url\":\"https://api.github.com/repos/juftin/browsr/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/juftin/browsr/events\",\"assignees_url\":\"https://api.github.com/repos/juftin/browsr/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/juftin/browsr/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/juftin/browsr/tags\",\"blobs_url\":\"https://api.github.com/repos/juftin/browsr/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/juftin/browsr/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/juftin/browsr/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/juftin/browsr/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/juftin/browsr/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/juftin/browsr/languages\",\"stargazers_url\":\"https://api.github.com/repos/juftin/browsr/stargazers\",\"contributors_url\":\"https://api.github.com/repos/juftin/browsr/contributors\",\"subscribers_url\":\"https://api.github.com/repos/juftin/browsr/subscribers\",\"subscription_url\":\"https://api.github.com/repos/juftin/browsr/subscription\",\"commits_url\":\"https://api.github.com/repos/juftin/browsr/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/juftin/browsr/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/juftin/browsr/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/juftin/browsr/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/juftin/browsr/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/juftin/browsr/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/juftin/browsr/merges\",\"archive_url\":\"https://api.github.com/repos/juftin/browsr/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/juftin/browsr/downloads\",\"issues_url\":\"https://api.github.com/repos/juftin/browsr/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/juftin/browsr/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/juftin/browsr/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/juftin/browsr/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/juftin/browsr/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/juftin/browsr/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/juftin/browsr/deployments\",\"created_at\":\"2023-05-03T05:26:39Z\",\"updated_at\":\"2023-12-10T01:37:27Z\",\"pushed_at\":\"2023-11-16T19:38:09Z\",\"git_url\":\"git://github.com/juftin/browsr.git\",\"ssh_url\":\"git@github.com:juftin/browsr.git\",\"clone_url\":\"https://github.com/juftin/browsr.git\",\"svn_url\":\"https://github.com/juftin/browsr\",\"homepage\":\"http://juftin.com/browsr/\",\"size\":15231,\"stargazers_count\":118,\"watchers_count\":118,\"language\":\"Python\",\"has_issues\":true,\"has_projects\":true,\"has_downloads\":true,\"has_wiki\":true,\"has_pages\":true,\"has_discussions\":false,\"forks_count\":7,\"mirror_url\":null,\"archived\":false,\"disabled\":false,\"open_issues_count\":5,\"license\":{\"key\":\"mit\",\"name\":\"MIT + License\",\"spdx_id\":\"MIT\",\"url\":\"https://api.github.com/licenses/mit\",\"node_id\":\"MDc6TGljZW5zZTEz\"},\"allow_forking\":true,\"is_template\":false,\"web_commit_signoff_required\":false,\"topics\":[\"file-explorer\",\"python\",\"s3\",\"textual\",\"tui\"],\"visibility\":\"public\",\"forks\":7,\"open_issues\":5,\"watchers\":118,\"default_branch\":\"main\",\"temp_clone_token\":null,\"network_count\":7,\"subscribers_count\":4}" headers: Access-Control-Allow-Origin: - "*" @@ -164,19 +107,18 @@ interactions: X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - - private, max-age=60, s-maxage=60 - Content-Encoding: - - gzip + - public, max-age=60, s-maxage=60 + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:11:52 GMT + - Fri, 22 Dec 2023 02:07:03 GMT ETag: - - W/"2c616d7658dd3e9d038de5acd0d7b638534992a3fb94898406872681f50b3561" + - W/"5f419a39a5d15c54ae8cb52bdce7f33bf7b526027633c10b0d5df086f73e22d5" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -186,10 +128,8 @@ interactions: Transfer-Encoding: - chunked Vary: - - Accept, Authorization, Cookie, X-GitHub-OTP + - Accept - Accept-Encoding, Accept, X-Requested-With - X-Accepted-OAuth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -197,21 +137,17 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - CACD:574C:21312B3:444FBC9:64657B58 - X-OAuth-Scopes: - - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, - admin:ssh_signing_key, audit_log, codespace, delete:packages, gist, notifications, - project, read:enterprise, repo, user, workflow, write:discussion, write:packages + - FECF:12D8:302E5E0:63DCF04:6584EF47 X-RateLimit-Limit: - - "5000" + - "60" X-RateLimit-Remaining: - - "4977" + - "58" X-RateLimit-Reset: - - "1684373394" + - "1703214423" X-RateLimit-Resource: - core X-RateLimit-Used: - - "23" + - "2" X-XSS-Protection: - "0" x-github-api-version-selected: @@ -229,42 +165,17 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 authorization: - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr response: body: - string: !!binary | - H4sIAAAAAAAAA51Y3W7bNhR+FUO3c6PEjt3WwNANa1B0aNom9X7QYRBombaZSKJKUnFsITd7gV3u - cq+xt9oeYd8hKVl2nbrWTRtT5/v48fAc8hyWgZgGo2F/MOwNB4OzbpDJKY9oLLiObucv3/3I39y+ - XQb4wFKO0YmSS63we1YkSeQHb4qZEVlYf8uVuGMG5jOWaN4N5DLjKhiVQSLnIgOLA4CFZjp//vT8 - rH9+2pz88uXV8Odf3ybxzdXg7frq/nJ9RSIYaJmKCpWAZGFMrkdh6Ab1yVyYRTEpNFexzAzPzEks - 07AIK/4Xd9+eg2OuPItdJQZ22HLhmRwcdDqs9S5MmuxM76a1xrXZTCaJXAK5K/Vx8rDGkHMtXmTz - o/HAlKE0Cw4vQfoDLVhoc4wQa1+G9B8igRg0nK749AgxHgEptPUPZah4Li1VMdGxErkRMjtG1BYO - PFLNWSbW7Fge4DTgJOeY6a09cPwOcXUM0AHK0KZEvCIXKB5zcQd3Hk22gwSXWeWUlT9hq8m5wvCI - TVPKMZt6D11kyeGI3WTulNe7Uyd757+///rj33/+7LBOnnCmWWY6M5HwDr/PE6m46oiss5KF6hiu - MDdLIGUm1W2d/1/MMOtanzobIYQ/4Oc9QCQRYJj+lq9aoAlVhvjXx32MNGQTqZiRh1J5n5gteBk2 - f1IcGM7SFiItDPCFlG08ZGGAC60L/lUhuG9pFq3DKrqzIp24w+ZrYnofocNBF9NazDPOW3imhpZh - dfZNFMviRRuyClkiJonD7hibt5BFKIAniZy0QON6CS20DPWCufPcRO2UEBcht6gUn7WURciayqhW - e2YlEbQmwtVhsH0tNFXIsPSeSlg2L9i8DVcNxc7RZTZn64PX+b643mBBRHWJEpOi7XGyQZMqd5Mi - 79q4agPeUNlL+cuX/N4lNq50u8g0FYfuyH08HrgVnK3JKK52Cen34ev7MWmELMPNSecOUM95vNf8 - CVppajL78rXFtlbIsPwmZ8aeWZggZ4ofL9ADw3LCUEicnJyUC85sOZhy1SqnHA4ETMULVEDHayor - JO75lBlbV85I0hR1ZiLZtIXPaiho3KYcr8vhmnuYoz1qIcbCmjwpCi1tZNbmDNtgm4yZNGIm4q+p - nPelwha8fKFFFvMuS5IuosyIWCDu0IPQnqB04m184HCQjI7T1ctUdbZxgOIOWYauj5lyFKyrlmdA - A0xppTg63GnEDOrk3mmv/+R08OS0Pz4djHrDUf/5R9gU+fRzm7On414fBqPBM7LJC73YpXEmp71R - b0AmOMp8ROIv9LufNZy+aqa2FeZaLzbm322MR1tdujeOE4TWTrwf4r/bvSMeA0DMQqY8xw3s23Wo - dypsu+zeC0LSLNYwOTt/9ny4dd3Gssjg4PNeN1gyg0IOd11jrLqkwf5+ZRYyoxmZjlw6BiOjCrw+ - 0Eiu5A2PjW6ObRK/YbgUt2ILSOXDFkrouECNiva17m9cs+KFQWsqlJL+mSJDRtcnHl4c/JPIVGg2 - SfhmQOY888KrJeJFJBExzzR8U1JLg3XiasUi/bvL5etx5423gN/y6b17usE4jL7YdXliHXrC+tnn - 8mU8HL9Kbj7+Mlh/HF+sA/SQSG+5jGiVSO3KGUJHhqd50nzoWfIJxNP9H1EVL2ezSPFPhcDjQb1y - I3MRw3e/BdREPqmaSAjOqz3Uffwy/N4Utpc0hQh+7wZ3QouJSIQhP+TFBEvAR9fxjeD1hgeDEXxX - RYyLnymfsSIxkavmyZMMbTImpZ612s8y8N2zixwyMWTmA4SStfobhZyNa2dJ57b7G+4it0Qus4y8 - 5fTghYmcE/WngiFB7VVYgd0XO+S9t/1FcbqC92EYSslqvAosnHl4BXDLjFDP+an8ZzeXO5lqX/hv - qLojry9XkREmwWuCjrzn6g1sLqHa7ZRr7dL8h3eXCL/o8uLDh+9fXXzAwvfZW3L4xVu/u47eX0fj - 1+M3FwA0PQH5FfNjFhXX5cX1q4tqYpqXx4VCtEQswzmNZ4mVFoi7kj4ojgiNWZbZgMaQbTogqM5L - 7OOOXUTbTyeJwUmC/H8EB2DGzRLJUuUxYrNZrFfnxMP/yO9Nb30VAAA= + string: + "{\"id\":635626551,\"node_id\":\"R_kgDOJeLkNw\",\"name\":\"browsr\",\"full_name\":\"juftin/browsr\",\"private\":false,\"owner\":{\"login\":\"juftin\",\"id\":49741340,\"node_id\":\"MDQ6VXNlcjQ5NzQxMzQw\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/49741340?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/juftin\",\"html_url\":\"https://github.com/juftin\",\"followers_url\":\"https://api.github.com/users/juftin/followers\",\"following_url\":\"https://api.github.com/users/juftin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/juftin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/juftin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/juftin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/juftin/orgs\",\"repos_url\":\"https://api.github.com/users/juftin/repos\",\"events_url\":\"https://api.github.com/users/juftin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/juftin/received_events\",\"type\":\"User\",\"site_admin\":false},\"html_url\":\"https://github.com/juftin/browsr\",\"description\":\"\U0001F5C2\uFE0F + a pleasant file explorer in your terminal supporting remote and local filesystems\",\"fork\":false,\"url\":\"https://api.github.com/repos/juftin/browsr\",\"forks_url\":\"https://api.github.com/repos/juftin/browsr/forks\",\"keys_url\":\"https://api.github.com/repos/juftin/browsr/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/juftin/browsr/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/juftin/browsr/teams\",\"hooks_url\":\"https://api.github.com/repos/juftin/browsr/hooks\",\"issue_events_url\":\"https://api.github.com/repos/juftin/browsr/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/juftin/browsr/events\",\"assignees_url\":\"https://api.github.com/repos/juftin/browsr/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/juftin/browsr/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/juftin/browsr/tags\",\"blobs_url\":\"https://api.github.com/repos/juftin/browsr/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/juftin/browsr/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/juftin/browsr/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/juftin/browsr/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/juftin/browsr/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/juftin/browsr/languages\",\"stargazers_url\":\"https://api.github.com/repos/juftin/browsr/stargazers\",\"contributors_url\":\"https://api.github.com/repos/juftin/browsr/contributors\",\"subscribers_url\":\"https://api.github.com/repos/juftin/browsr/subscribers\",\"subscription_url\":\"https://api.github.com/repos/juftin/browsr/subscription\",\"commits_url\":\"https://api.github.com/repos/juftin/browsr/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/juftin/browsr/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/juftin/browsr/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/juftin/browsr/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/juftin/browsr/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/juftin/browsr/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/juftin/browsr/merges\",\"archive_url\":\"https://api.github.com/repos/juftin/browsr/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/juftin/browsr/downloads\",\"issues_url\":\"https://api.github.com/repos/juftin/browsr/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/juftin/browsr/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/juftin/browsr/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/juftin/browsr/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/juftin/browsr/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/juftin/browsr/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/juftin/browsr/deployments\",\"created_at\":\"2023-05-03T05:26:39Z\",\"updated_at\":\"2023-12-10T01:37:27Z\",\"pushed_at\":\"2023-11-16T19:38:09Z\",\"git_url\":\"git://github.com/juftin/browsr.git\",\"ssh_url\":\"git@github.com:juftin/browsr.git\",\"clone_url\":\"https://github.com/juftin/browsr.git\",\"svn_url\":\"https://github.com/juftin/browsr\",\"homepage\":\"http://juftin.com/browsr/\",\"size\":15231,\"stargazers_count\":118,\"watchers_count\":118,\"language\":\"Python\",\"has_issues\":true,\"has_projects\":true,\"has_downloads\":true,\"has_wiki\":true,\"has_pages\":true,\"has_discussions\":false,\"forks_count\":7,\"mirror_url\":null,\"archived\":false,\"disabled\":false,\"open_issues_count\":5,\"license\":{\"key\":\"mit\",\"name\":\"MIT + License\",\"spdx_id\":\"MIT\",\"url\":\"https://api.github.com/licenses/mit\",\"node_id\":\"MDc6TGljZW5zZTEz\"},\"allow_forking\":true,\"is_template\":false,\"web_commit_signoff_required\":false,\"topics\":[\"file-explorer\",\"python\",\"s3\",\"textual\",\"tui\"],\"visibility\":\"public\",\"forks\":7,\"open_issues\":5,\"watchers\":118,\"default_branch\":\"main\",\"temp_clone_token\":null,\"network_count\":7,\"subscribers_count\":4}" headers: Access-Control-Allow-Origin: - "*" @@ -274,19 +185,18 @@ interactions: X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - - private, max-age=60, s-maxage=60 - Content-Encoding: - - gzip + - public, max-age=60, s-maxage=60 + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:11:52 GMT + - Fri, 22 Dec 2023 02:07:03 GMT ETag: - - W/"2c616d7658dd3e9d038de5acd0d7b638534992a3fb94898406872681f50b3561" + - W/"5f419a39a5d15c54ae8cb52bdce7f33bf7b526027633c10b0d5df086f73e22d5" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -296,10 +206,8 @@ interactions: Transfer-Encoding: - chunked Vary: - - Accept, Authorization, Cookie, X-GitHub-OTP + - Accept - Accept-Encoding, Accept, X-Requested-With - X-Accepted-OAuth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -307,21 +215,17 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - CACE:076C:20C289C:4376FAF:64657B58 - X-OAuth-Scopes: - - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, - admin:ssh_signing_key, audit_log, codespace, delete:packages, gist, notifications, - project, read:enterprise, repo, user, workflow, write:discussion, write:packages + - FED0:12F4:5660286:B23CE05:6584EF47 X-RateLimit-Limit: - - "5000" + - "60" X-RateLimit-Remaining: - - "4976" + - "57" X-RateLimit-Reset: - - "1684373394" + - "1703214423" X-RateLimit-Resource: - core X-RateLimit-Used: - - "24" + - "3" X-XSS-Protection: - "0" x-github-api-version-selected: @@ -339,42 +243,17 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 authorization: - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr response: body: - string: !!binary | - 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 + string: + "{\"id\":635626551,\"node_id\":\"R_kgDOJeLkNw\",\"name\":\"browsr\",\"full_name\":\"juftin/browsr\",\"private\":false,\"owner\":{\"login\":\"juftin\",\"id\":49741340,\"node_id\":\"MDQ6VXNlcjQ5NzQxMzQw\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/49741340?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/juftin\",\"html_url\":\"https://github.com/juftin\",\"followers_url\":\"https://api.github.com/users/juftin/followers\",\"following_url\":\"https://api.github.com/users/juftin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/juftin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/juftin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/juftin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/juftin/orgs\",\"repos_url\":\"https://api.github.com/users/juftin/repos\",\"events_url\":\"https://api.github.com/users/juftin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/juftin/received_events\",\"type\":\"User\",\"site_admin\":false},\"html_url\":\"https://github.com/juftin/browsr\",\"description\":\"\U0001F5C2\uFE0F + a pleasant file explorer in your terminal supporting remote and local filesystems\",\"fork\":false,\"url\":\"https://api.github.com/repos/juftin/browsr\",\"forks_url\":\"https://api.github.com/repos/juftin/browsr/forks\",\"keys_url\":\"https://api.github.com/repos/juftin/browsr/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/juftin/browsr/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/juftin/browsr/teams\",\"hooks_url\":\"https://api.github.com/repos/juftin/browsr/hooks\",\"issue_events_url\":\"https://api.github.com/repos/juftin/browsr/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/juftin/browsr/events\",\"assignees_url\":\"https://api.github.com/repos/juftin/browsr/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/juftin/browsr/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/juftin/browsr/tags\",\"blobs_url\":\"https://api.github.com/repos/juftin/browsr/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/juftin/browsr/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/juftin/browsr/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/juftin/browsr/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/juftin/browsr/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/juftin/browsr/languages\",\"stargazers_url\":\"https://api.github.com/repos/juftin/browsr/stargazers\",\"contributors_url\":\"https://api.github.com/repos/juftin/browsr/contributors\",\"subscribers_url\":\"https://api.github.com/repos/juftin/browsr/subscribers\",\"subscription_url\":\"https://api.github.com/repos/juftin/browsr/subscription\",\"commits_url\":\"https://api.github.com/repos/juftin/browsr/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/juftin/browsr/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/juftin/browsr/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/juftin/browsr/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/juftin/browsr/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/juftin/browsr/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/juftin/browsr/merges\",\"archive_url\":\"https://api.github.com/repos/juftin/browsr/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/juftin/browsr/downloads\",\"issues_url\":\"https://api.github.com/repos/juftin/browsr/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/juftin/browsr/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/juftin/browsr/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/juftin/browsr/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/juftin/browsr/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/juftin/browsr/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/juftin/browsr/deployments\",\"created_at\":\"2023-05-03T05:26:39Z\",\"updated_at\":\"2023-12-10T01:37:27Z\",\"pushed_at\":\"2023-11-16T19:38:09Z\",\"git_url\":\"git://github.com/juftin/browsr.git\",\"ssh_url\":\"git@github.com:juftin/browsr.git\",\"clone_url\":\"https://github.com/juftin/browsr.git\",\"svn_url\":\"https://github.com/juftin/browsr\",\"homepage\":\"http://juftin.com/browsr/\",\"size\":15231,\"stargazers_count\":118,\"watchers_count\":118,\"language\":\"Python\",\"has_issues\":true,\"has_projects\":true,\"has_downloads\":true,\"has_wiki\":true,\"has_pages\":true,\"has_discussions\":false,\"forks_count\":7,\"mirror_url\":null,\"archived\":false,\"disabled\":false,\"open_issues_count\":5,\"license\":{\"key\":\"mit\",\"name\":\"MIT + License\",\"spdx_id\":\"MIT\",\"url\":\"https://api.github.com/licenses/mit\",\"node_id\":\"MDc6TGljZW5zZTEz\"},\"allow_forking\":true,\"is_template\":false,\"web_commit_signoff_required\":false,\"topics\":[\"file-explorer\",\"python\",\"s3\",\"textual\",\"tui\"],\"visibility\":\"public\",\"forks\":7,\"open_issues\":5,\"watchers\":118,\"default_branch\":\"main\",\"temp_clone_token\":null,\"network_count\":7,\"subscribers_count\":4}" headers: Access-Control-Allow-Origin: - "*" @@ -384,19 +263,18 @@ interactions: X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - - private, max-age=60, s-maxage=60 - Content-Encoding: - - gzip + - public, max-age=60, s-maxage=60 + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:11:53 GMT + - Fri, 22 Dec 2023 02:07:03 GMT ETag: - - W/"2c616d7658dd3e9d038de5acd0d7b638534992a3fb94898406872681f50b3561" + - W/"5f419a39a5d15c54ae8cb52bdce7f33bf7b526027633c10b0d5df086f73e22d5" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -406,10 +284,8 @@ interactions: Transfer-Encoding: - chunked Vary: - - Accept, Authorization, Cookie, X-GitHub-OTP + - Accept - Accept-Encoding, Accept, X-Requested-With - X-Accepted-OAuth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -417,21 +293,17 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - CACF:496F:206F889:42C52E3:64657B58 - X-OAuth-Scopes: - - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, - admin:ssh_signing_key, audit_log, codespace, delete:packages, gist, notifications, - project, read:enterprise, repo, user, workflow, write:discussion, write:packages + - FED1:12C8:21EED69:467BB98:6584EF47 X-RateLimit-Limit: - - "5000" + - "60" X-RateLimit-Remaining: - - "4975" + - "56" X-RateLimit-Reset: - - "1684373394" + - "1703214423" X-RateLimit-Resource: - core X-RateLimit-Used: - - "25" + - "4" X-XSS-Protection: - "0" x-github-api-version-selected: @@ -449,42 +321,17 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 authorization: - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr response: body: - string: !!binary | - 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 + string: + "{\"id\":635626551,\"node_id\":\"R_kgDOJeLkNw\",\"name\":\"browsr\",\"full_name\":\"juftin/browsr\",\"private\":false,\"owner\":{\"login\":\"juftin\",\"id\":49741340,\"node_id\":\"MDQ6VXNlcjQ5NzQxMzQw\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/49741340?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/juftin\",\"html_url\":\"https://github.com/juftin\",\"followers_url\":\"https://api.github.com/users/juftin/followers\",\"following_url\":\"https://api.github.com/users/juftin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/juftin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/juftin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/juftin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/juftin/orgs\",\"repos_url\":\"https://api.github.com/users/juftin/repos\",\"events_url\":\"https://api.github.com/users/juftin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/juftin/received_events\",\"type\":\"User\",\"site_admin\":false},\"html_url\":\"https://github.com/juftin/browsr\",\"description\":\"\U0001F5C2\uFE0F + a pleasant file explorer in your terminal supporting remote and local filesystems\",\"fork\":false,\"url\":\"https://api.github.com/repos/juftin/browsr\",\"forks_url\":\"https://api.github.com/repos/juftin/browsr/forks\",\"keys_url\":\"https://api.github.com/repos/juftin/browsr/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/juftin/browsr/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/juftin/browsr/teams\",\"hooks_url\":\"https://api.github.com/repos/juftin/browsr/hooks\",\"issue_events_url\":\"https://api.github.com/repos/juftin/browsr/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/juftin/browsr/events\",\"assignees_url\":\"https://api.github.com/repos/juftin/browsr/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/juftin/browsr/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/juftin/browsr/tags\",\"blobs_url\":\"https://api.github.com/repos/juftin/browsr/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/juftin/browsr/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/juftin/browsr/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/juftin/browsr/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/juftin/browsr/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/juftin/browsr/languages\",\"stargazers_url\":\"https://api.github.com/repos/juftin/browsr/stargazers\",\"contributors_url\":\"https://api.github.com/repos/juftin/browsr/contributors\",\"subscribers_url\":\"https://api.github.com/repos/juftin/browsr/subscribers\",\"subscription_url\":\"https://api.github.com/repos/juftin/browsr/subscription\",\"commits_url\":\"https://api.github.com/repos/juftin/browsr/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/juftin/browsr/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/juftin/browsr/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/juftin/browsr/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/juftin/browsr/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/juftin/browsr/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/juftin/browsr/merges\",\"archive_url\":\"https://api.github.com/repos/juftin/browsr/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/juftin/browsr/downloads\",\"issues_url\":\"https://api.github.com/repos/juftin/browsr/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/juftin/browsr/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/juftin/browsr/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/juftin/browsr/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/juftin/browsr/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/juftin/browsr/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/juftin/browsr/deployments\",\"created_at\":\"2023-05-03T05:26:39Z\",\"updated_at\":\"2023-12-10T01:37:27Z\",\"pushed_at\":\"2023-11-16T19:38:09Z\",\"git_url\":\"git://github.com/juftin/browsr.git\",\"ssh_url\":\"git@github.com:juftin/browsr.git\",\"clone_url\":\"https://github.com/juftin/browsr.git\",\"svn_url\":\"https://github.com/juftin/browsr\",\"homepage\":\"http://juftin.com/browsr/\",\"size\":15231,\"stargazers_count\":118,\"watchers_count\":118,\"language\":\"Python\",\"has_issues\":true,\"has_projects\":true,\"has_downloads\":true,\"has_wiki\":true,\"has_pages\":true,\"has_discussions\":false,\"forks_count\":7,\"mirror_url\":null,\"archived\":false,\"disabled\":false,\"open_issues_count\":5,\"license\":{\"key\":\"mit\",\"name\":\"MIT + License\",\"spdx_id\":\"MIT\",\"url\":\"https://api.github.com/licenses/mit\",\"node_id\":\"MDc6TGljZW5zZTEz\"},\"allow_forking\":true,\"is_template\":false,\"web_commit_signoff_required\":false,\"topics\":[\"file-explorer\",\"python\",\"s3\",\"textual\",\"tui\"],\"visibility\":\"public\",\"forks\":7,\"open_issues\":5,\"watchers\":118,\"default_branch\":\"main\",\"temp_clone_token\":null,\"network_count\":7,\"subscribers_count\":4}" headers: Access-Control-Allow-Origin: - "*" @@ -494,19 +341,18 @@ interactions: X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - - private, max-age=60, s-maxage=60 - Content-Encoding: - - gzip + - public, max-age=60, s-maxage=60 + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:11:53 GMT + - Fri, 22 Dec 2023 02:07:04 GMT ETag: - - W/"2c616d7658dd3e9d038de5acd0d7b638534992a3fb94898406872681f50b3561" + - W/"5f419a39a5d15c54ae8cb52bdce7f33bf7b526027633c10b0d5df086f73e22d5" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -516,10 +362,8 @@ interactions: Transfer-Encoding: - chunked Vary: - - Accept, Authorization, Cookie, X-GitHub-OTP + - Accept - Accept-Encoding, Accept, X-Requested-With - X-Accepted-OAuth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -527,21 +371,17 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - CAD2:2829:205E18A:42A6F2B:64657B59 - X-OAuth-Scopes: - - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, - admin:ssh_signing_key, audit_log, codespace, delete:packages, gist, notifications, - project, read:enterprise, repo, user, workflow, write:discussion, write:packages + - FED2:12F4:5660337:B23CF84:6584EF48 X-RateLimit-Limit: - - "5000" + - "60" X-RateLimit-Remaining: - - "4974" + - "55" X-RateLimit-Reset: - - "1684373394" + - "1703214423" X-RateLimit-Resource: - core X-RateLimit-Used: - - "26" + - "5" X-XSS-Protection: - "0" x-github-api-version-selected: @@ -559,42 +399,17 @@ interactions: Connection: - keep-alive User-Agent: - - python-requests/2.28.2 + - python-requests/2.31.0 authorization: - XXXXXXXXXX method: GET uri: https://api.github.com/repos/juftin/browsr response: body: - string: !!binary | - H4sIAAAAAAAAA51Y3W7bNhR+FUO3c6PEjt3WwNANa1B0aNom9X7QYRBombaZSKJKUnFsITd7gV3u - cq+xt9oeYd8hKVl2nbrWTRtT5/v48fAc8hyWgZgGo2F/MOwNB4OzbpDJKY9oLLiObucv3/3I39y+ - XQb4wFKO0YmSS63we1YkSeQHb4qZEVlYf8uVuGMG5jOWaN4N5DLjKhiVQSLnIgOLA4CFZjp//vT8 - rH9+2pz88uXV8Odf3ybxzdXg7frq/nJ9RSIYaJmKCpWAZGFMrkdh6Ab1yVyYRTEpNFexzAzPzEks - 07AIK/4Xd9+eg2OuPItdJQZ22HLhmRwcdDqs9S5MmuxM76a1xrXZTCaJXAK5K/Vx8rDGkHMtXmTz - o/HAlKE0Cw4vQfoDLVhoc4wQa1+G9B8igRg0nK749AgxHgEptPUPZah4Li1VMdGxErkRMjtG1BYO - PFLNWSbW7Fge4DTgJOeY6a09cPwOcXUM0AHK0KZEvCIXKB5zcQd3Hk22gwSXWeWUlT9hq8m5wvCI - TVPKMZt6D11kyeGI3WTulNe7Uyd757+///rj33/+7LBOnnCmWWY6M5HwDr/PE6m46oiss5KF6hiu - MDdLIGUm1W2d/1/MMOtanzobIYQ/4Oc9QCQRYJj+lq9aoAlVhvjXx32MNGQTqZiRh1J5n5gteBk2 - f1IcGM7SFiItDPCFlG08ZGGAC60L/lUhuG9pFq3DKrqzIp24w+ZrYnofocNBF9NazDPOW3imhpZh - dfZNFMviRRuyClkiJonD7hibt5BFKIAniZy0QON6CS20DPWCufPcRO2UEBcht6gUn7WURciayqhW - e2YlEbQmwtVhsH0tNFXIsPSeSlg2L9i8DVcNxc7RZTZn64PX+b643mBBRHWJEpOi7XGyQZMqd5Mi - 79q4agPeUNlL+cuX/N4lNq50u8g0FYfuyH08HrgVnK3JKK52Cen34ev7MWmELMPNSecOUM95vNf8 - CVppajL78rXFtlbIsPwmZ8aeWZggZ4ofL9ADw3LCUEicnJyUC85sOZhy1SqnHA4ETMULVEDHayor - JO75lBlbV85I0hR1ZiLZtIXPaiho3KYcr8vhmnuYoz1qIcbCmjwpCi1tZNbmDNtgm4yZNGIm4q+p - nPelwha8fKFFFvMuS5IuosyIWCDu0IPQnqB04m184HCQjI7T1ctUdbZxgOIOWYauj5lyFKyrlmdA - A0xppTg63GnEDOrk3mmv/+R08OS0Pz4djHrDUf/5R9gU+fRzm7On414fBqPBM7LJC73YpXEmp71R - b0AmOMp8ROIv9LufNZy+aqa2FeZaLzbm322MR1tdujeOE4TWTrwf4r/bvSMeA0DMQqY8xw3s23Wo - dypsu+zeC0LSLNYwOTt/9ny4dd3Gssjg4PNeN1gyg0IOd11jrLqkwf5+ZRYyoxmZjlw6BiOjCrw+ - 0Eiu5A2PjW6ObRK/YbgUt2ILSOXDFkrouECNiva17m9cs+KFQWsqlJL+mSJDRtcnHl4c/JPIVGg2 - SfhmQOY888KrJeJFJBExzzR8U1JLg3XiasUi/bvL5etx5423gN/y6b17usE4jL7YdXliHXrC+tnn - 8mU8HL9Kbj7+Mlh/HF+sA/SQSG+5jGiVSO3KGUJHhqd50nzoWfIJxNP9H1EVL2ezSPFPhcDjQb1y - I3MRw3e/BdREPqmaSAjOqz3Uffwy/N4Utpc0hQh+7wZ3QouJSIQhP+TFBEvAR9fxjeD1hgeDEXxX - RYyLnymfsSIxkavmyZMMbTImpZ612s8y8N2zixwyMWTmA4SStfobhZyNa2dJ57b7G+4it0Qus4y8 - 5fTghYmcE/WngiFB7VVYgd0XO+S9t/1FcbqC92EYSslqvAosnHl4BXDLjFDP+an8ZzeXO5lqX/hv - qLojry9XkREmwWuCjrzn6g1sLqHa7ZRr7dL8h3eXCL/o8uLDh+9fXXzAwvfZW3L4xVu/u47eX0fj - 1+M3FwA0PQH5FfNjFhXX5cX1q4tqYpqXx4VCtEQswzmNZ4mVFoi7kj4ojgiNWZbZgMaQbTogqM5L - 7OOOXUTbTyeJwUmC/H8EB2DGzRLJUuUxYrNZrFfnxMP/yO9Nb30VAAA= + string: + "{\"id\":635626551,\"node_id\":\"R_kgDOJeLkNw\",\"name\":\"browsr\",\"full_name\":\"juftin/browsr\",\"private\":false,\"owner\":{\"login\":\"juftin\",\"id\":49741340,\"node_id\":\"MDQ6VXNlcjQ5NzQxMzQw\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/49741340?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/juftin\",\"html_url\":\"https://github.com/juftin\",\"followers_url\":\"https://api.github.com/users/juftin/followers\",\"following_url\":\"https://api.github.com/users/juftin/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/juftin/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/juftin/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/juftin/subscriptions\",\"organizations_url\":\"https://api.github.com/users/juftin/orgs\",\"repos_url\":\"https://api.github.com/users/juftin/repos\",\"events_url\":\"https://api.github.com/users/juftin/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/juftin/received_events\",\"type\":\"User\",\"site_admin\":false},\"html_url\":\"https://github.com/juftin/browsr\",\"description\":\"\U0001F5C2\uFE0F + a pleasant file explorer in your terminal supporting remote and local filesystems\",\"fork\":false,\"url\":\"https://api.github.com/repos/juftin/browsr\",\"forks_url\":\"https://api.github.com/repos/juftin/browsr/forks\",\"keys_url\":\"https://api.github.com/repos/juftin/browsr/keys{/key_id}\",\"collaborators_url\":\"https://api.github.com/repos/juftin/browsr/collaborators{/collaborator}\",\"teams_url\":\"https://api.github.com/repos/juftin/browsr/teams\",\"hooks_url\":\"https://api.github.com/repos/juftin/browsr/hooks\",\"issue_events_url\":\"https://api.github.com/repos/juftin/browsr/issues/events{/number}\",\"events_url\":\"https://api.github.com/repos/juftin/browsr/events\",\"assignees_url\":\"https://api.github.com/repos/juftin/browsr/assignees{/user}\",\"branches_url\":\"https://api.github.com/repos/juftin/browsr/branches{/branch}\",\"tags_url\":\"https://api.github.com/repos/juftin/browsr/tags\",\"blobs_url\":\"https://api.github.com/repos/juftin/browsr/git/blobs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/juftin/browsr/git/tags{/sha}\",\"git_refs_url\":\"https://api.github.com/repos/juftin/browsr/git/refs{/sha}\",\"trees_url\":\"https://api.github.com/repos/juftin/browsr/git/trees{/sha}\",\"statuses_url\":\"https://api.github.com/repos/juftin/browsr/statuses/{sha}\",\"languages_url\":\"https://api.github.com/repos/juftin/browsr/languages\",\"stargazers_url\":\"https://api.github.com/repos/juftin/browsr/stargazers\",\"contributors_url\":\"https://api.github.com/repos/juftin/browsr/contributors\",\"subscribers_url\":\"https://api.github.com/repos/juftin/browsr/subscribers\",\"subscription_url\":\"https://api.github.com/repos/juftin/browsr/subscription\",\"commits_url\":\"https://api.github.com/repos/juftin/browsr/commits{/sha}\",\"git_commits_url\":\"https://api.github.com/repos/juftin/browsr/git/commits{/sha}\",\"comments_url\":\"https://api.github.com/repos/juftin/browsr/comments{/number}\",\"issue_comment_url\":\"https://api.github.com/repos/juftin/browsr/issues/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/juftin/browsr/contents/{+path}\",\"compare_url\":\"https://api.github.com/repos/juftin/browsr/compare/{base}...{head}\",\"merges_url\":\"https://api.github.com/repos/juftin/browsr/merges\",\"archive_url\":\"https://api.github.com/repos/juftin/browsr/{archive_format}{/ref}\",\"downloads_url\":\"https://api.github.com/repos/juftin/browsr/downloads\",\"issues_url\":\"https://api.github.com/repos/juftin/browsr/issues{/number}\",\"pulls_url\":\"https://api.github.com/repos/juftin/browsr/pulls{/number}\",\"milestones_url\":\"https://api.github.com/repos/juftin/browsr/milestones{/number}\",\"notifications_url\":\"https://api.github.com/repos/juftin/browsr/notifications{?since,all,participating}\",\"labels_url\":\"https://api.github.com/repos/juftin/browsr/labels{/name}\",\"releases_url\":\"https://api.github.com/repos/juftin/browsr/releases{/id}\",\"deployments_url\":\"https://api.github.com/repos/juftin/browsr/deployments\",\"created_at\":\"2023-05-03T05:26:39Z\",\"updated_at\":\"2023-12-10T01:37:27Z\",\"pushed_at\":\"2023-11-16T19:38:09Z\",\"git_url\":\"git://github.com/juftin/browsr.git\",\"ssh_url\":\"git@github.com:juftin/browsr.git\",\"clone_url\":\"https://github.com/juftin/browsr.git\",\"svn_url\":\"https://github.com/juftin/browsr\",\"homepage\":\"http://juftin.com/browsr/\",\"size\":15231,\"stargazers_count\":118,\"watchers_count\":118,\"language\":\"Python\",\"has_issues\":true,\"has_projects\":true,\"has_downloads\":true,\"has_wiki\":true,\"has_pages\":true,\"has_discussions\":false,\"forks_count\":7,\"mirror_url\":null,\"archived\":false,\"disabled\":false,\"open_issues_count\":5,\"license\":{\"key\":\"mit\",\"name\":\"MIT + License\",\"spdx_id\":\"MIT\",\"url\":\"https://api.github.com/licenses/mit\",\"node_id\":\"MDc6TGljZW5zZTEz\"},\"allow_forking\":true,\"is_template\":false,\"web_commit_signoff_required\":false,\"topics\":[\"file-explorer\",\"python\",\"s3\",\"textual\",\"tui\"],\"visibility\":\"public\",\"forks\":7,\"open_issues\":5,\"watchers\":118,\"default_branch\":\"main\",\"temp_clone_token\":null,\"network_count\":7,\"subscribers_count\":4}" headers: Access-Control-Allow-Origin: - "*" @@ -604,19 +419,18 @@ interactions: X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset Cache-Control: - - private, max-age=60, s-maxage=60 - Content-Encoding: - - gzip + - public, max-age=60, s-maxage=60 + Content-Security-Policy: - default-src 'none' Content-Type: - application/json; charset=utf-8 Date: - - Thu, 18 May 2023 01:11:53 GMT + - Fri, 22 Dec 2023 02:07:04 GMT ETag: - - W/"2c616d7658dd3e9d038de5acd0d7b638534992a3fb94898406872681f50b3561" + - W/"5f419a39a5d15c54ae8cb52bdce7f33bf7b526027633c10b0d5df086f73e22d5" Last-Modified: - - Wed, 17 May 2023 23:39:58 GMT + - Sun, 10 Dec 2023 01:37:27 GMT Referrer-Policy: - origin-when-cross-origin, strict-origin-when-cross-origin Server: @@ -626,10 +440,8 @@ interactions: Transfer-Encoding: - chunked Vary: - - Accept, Authorization, Cookie, X-GitHub-OTP + - Accept - Accept-Encoding, Accept, X-Requested-With - X-Accepted-OAuth-Scopes: - - repo X-Content-Type-Options: - nosniff X-Frame-Options: @@ -637,21 +449,17 @@ interactions: X-GitHub-Media-Type: - github.v3; format=json X-GitHub-Request-Id: - - CAD3:4EAA:23BBC18:4956F06:64657B59 - X-OAuth-Scopes: - - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, - admin:ssh_signing_key, audit_log, codespace, delete:packages, gist, notifications, - project, read:enterprise, repo, user, workflow, write:discussion, write:packages + - FED3:59CE:77BEC5F:F765005:6584EF48 X-RateLimit-Limit: - - "5000" + - "60" X-RateLimit-Remaining: - - "4973" + - "54" X-RateLimit-Reset: - - "1684373394" + - "1703214423" X-RateLimit-Resource: - core X-RateLimit-Used: - - "27" + - "6" X-XSS-Protection: - "0" x-github-api-version-selected: diff --git a/tests/helpers.py b/tests/helpers.py deleted file mode 100644 index a3f8b24..0000000 --- a/tests/helpers.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -Helpers for the tests -""" - -import pathlib -from os import environ, getenv -from typing import List, Optional, Tuple - -from browsr import Browsr -from browsr._base import TextualAppContext -from browsr._tools import take_screenshot - - -class Screenshotter: - """ - App Screenshotter - """ - - def __init__(self, file_path: str) -> None: - """ - Initialize the Screenshotter - """ - self.screenshot_dir = file_path - self.context = TextualAppContext( - file_path=self.screenshot_dir, - ) - self.app = Browsr(config_object=self.context) - - def take_screenshot( - self, press: Optional[List[str]] = None - ) -> Tuple[str, pathlib.Path]: - """ - Take a Screenshot - """ - screenshot = take_screenshot(app=self.app, press=press) - screenshot_path = self._get_screenshot_path() - if getenv("BROWSR_REGENERATE_SCREENSHOTS", "0") != "0": - screenshot_path.write_text(screenshot) - return screenshot, screenshot_path - - @classmethod - def _get_screenshot_path(cls) -> pathlib.Path: - """ - Get the Screenshot Path - """ - test_dir = pathlib.Path(__file__).parent - screenshot_dir = test_dir / "screenshots" - current_test = environ["PYTEST_CURRENT_TEST"].split("::")[-1].split(" ")[0] - screenshot_path = screenshot_dir / f"{current_test}.svg" - return screenshot_path diff --git a/tests/screenshots/test_github_screenshot.svg b/tests/screenshots/test_github_screenshot.svg deleted file mode 100644 index 3258d21..0000000 --- a/tests/screenshots/test_github_screenshot.svg +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - browsr - - - - - - - - - - browsr — github://juftin:browsr@v1.6.0/README.md [monokai] -📂 github://juftin:browsr@v1.6.0/┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ -┣━━ 📁 .githubbrowsr -┣━━ 📁 browsr┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ -┣━━ 📁 docs -┣━━ 📁 requirements -┣━━ 📁 tests🌆 browsr Version🌆 PyPI🌆 Testing Status🌆 GitHub License -┣━━ 📄 .gitignore -┣━━ 📄 .pre-commit-config.yamlbrowsr is a TUI (text-based user interface) file browser for your terminal. It's a simple way to browse your files and    -┣━━ 📄 .releaserc.jstake a peek at their contents. Plus it works on local and remote file systems.                                            -┣━━ 📄 LICENSE -┣━━ 📄 mkdocs.yaml -┣━━ 📄 pyproject.toml -┗━━ 📄 README.md - -Installation - -The below command recommends pipx instead of pip. pipx installs the package in an isolated environment and makes it easy  -to uninstall. If you'd like to use pip instead, just replace pipx with pip in the below command.                          - - -pipxinstallbrowsr - - - -Extra Installation - -If you're looking to use browsr on remote file systems, like AWS S3, you'll need to install the remote extra. If you'd    -like to browse parquet files, you'll need to install the parquet extra. Or, even simpler, you can install the all extra   -to get all the extras.                                                                                                    - - -pipxinstall"browsr[all]" - - - -Usage - -▄▄ -browsr~/Downloads/ - - -Simply give browsr a path to a file/directory and it will open a browser window with a file browser. You can also give it -a URL to a remote file system, like AWS S3.                                                                               - - -🗄️️️  3KB  💾  README.md  📂  juftin:browsr@v1.6.0 - Q  Quit  F  Toggle Files  T  Toggle Theme  N  Toggle Line Numbers  D  Toggle Dark Mode  .  Parent Directory  X  Download File  - - - diff --git a/tests/screenshots/test_github_screenshot_license.svg b/tests/screenshots/test_github_screenshot_license.svg deleted file mode 100644 index f55326e..0000000 --- a/tests/screenshots/test_github_screenshot_license.svg +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - browsr - - - - - - - - - - browsr — github://juftin:browsr@v1.6.0/LICENSE [monokai] -MIT License                                                                                                                                                    - -Copyright (c) 2023-present Justin Flannery <justin.flannery@juftin.com>                                                                                        - -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 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 FO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -🗄️️️  1KB  💾  LICENSE  📂  juftin:browsr@v1.6.0 - Q  Quit  F  Toggle Files  T  Toggle Theme  N  Toggle Line Numbers  D  Toggle Dark Mode  .  Parent Directory  X  Download File  - - - diff --git a/tests/test_screenshots.py b/tests/test_screenshots.py index 335752f..4387039 100644 --- a/tests/test_screenshots.py +++ b/tests/test_screenshots.py @@ -2,29 +2,79 @@ Screenshot Testing Using Cassettes! """ +import pathlib +from textwrap import dedent +from typing import Callable, Tuple + +import pytest from textual_universal_directorytree import GitHubPath from tests.conftest import cassette -from tests.helpers import Screenshotter + + +@pytest.fixture +def app_file() -> str: + file_content = """ + from browsr import Browsr + from browsr._base import TextualAppContext + + file_path = "{file_path}" + context = TextualAppContext(file_path=file_path) + app = Browsr(config_object=context) + """ + return dedent(file_content).strip() + + +@pytest.fixture +def terminal_size() -> Tuple[int, int]: + return 160, 48 @cassette -def test_github_screenshot(github_release_path: GitHubPath) -> None: +def test_github_screenshot( + snap_compare: Callable[..., bool], + tmp_path: pathlib.Path, + app_file: str, + github_release_path: GitHubPath, + terminal_size: Tuple[int, int], +) -> None: """ Snapshot a release of this repo """ - file_path = str(github_release_path) - screenshotter = Screenshotter(file_path=file_path) - screenshot, screenshot_path = screenshotter.take_screenshot() - assert screenshot_path.read_text() == screenshot + app_path = tmp_path / "app.py" + app_path.write_text(app_file.format(file_path=str(github_release_path))) + assert snap_compare(app_path=app_path, terminal_size=terminal_size) @cassette -def test_github_screenshot_license(github_release_path: GitHubPath) -> None: +def test_github_screenshot_license( + snap_compare: Callable[..., bool], + tmp_path: pathlib.Path, + app_file: str, + github_release_path: GitHubPath, + terminal_size: Tuple[int, int], +) -> None: """ Snapshot the LICENSE file """ file_path = str(github_release_path / "LICENSE") - screenshotter = Screenshotter(file_path=file_path) - screenshot, screenshot_path = screenshotter.take_screenshot() - assert screenshot_path.read_text() == screenshot + app_path = tmp_path / "app.py" + app_path.write_text(app_file.format(file_path=file_path)) + assert snap_compare(app_path=app_path, terminal_size=terminal_size) + + +@cassette +def test_mkdocs_screenshot( + snap_compare: Callable[..., bool], + tmp_path: pathlib.Path, + app_file: str, + terminal_size: Tuple[int, int], + github_release_path: GitHubPath, +) -> None: + """ + Snapshot the pyproject.toml file + """ + file_path = str(github_release_path / "mkdocs.yaml") + app_path = tmp_path / "app.py" + app_path.write_text(app_file.format(file_path=file_path)) + assert snap_compare(app_path=app_path, terminal_size=terminal_size)