Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ parent dir #28

Merged
merged 2 commits into from
Oct 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions browsr/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
from __future__ import annotations

import math
import os
import pathlib
from copy import copy
from dataclasses import dataclass
from dataclasses import dataclass, field
from os import PathLike
from textwrap import dedent
from typing import Any, ClassVar, Dict, List, Optional, Union
Expand Down Expand Up @@ -52,7 +53,7 @@ class TextualAppContext:
App Context Object
"""

file_path: Optional[str] = None
file_path: str = field(default_factory=os.getcwd)
config: Optional[Dict[str, Any]] = None
debug: bool = False
max_file_size: int = 20
Expand All @@ -72,7 +73,7 @@ def path(self) -> pathlib.Path:
file_path = file_path[:-4]
file_path = handle_github_url(url=str(file_path))
self.file_path = file_path
if str(self.file_path).endswith("/"):
if str(self.file_path).endswith("/") and len(str(self.file_path)) > 1:
self.file_path = str(self.file_path)[:-1]
kwargs = self.kwargs or {}
PathClass = copy(BrowsrPath)
Expand Down Expand Up @@ -111,7 +112,7 @@ def __init__(
like a dictionary to pass into an application
"""
super().__init__()
self.config_object = config_object
self.config_object = config_object or TextualAppContext()
traceback.install(show_locals=True)

@staticmethod
Expand Down
7 changes: 6 additions & 1 deletion browsr/_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
browsr command line interface
"""

import os
from typing import Optional, Tuple

import click
Expand Down Expand Up @@ -186,8 +187,12 @@ def browsr(
message=f"Invalid Key/Value pair: `{kwarg}` - must be in the format Key=Value",
param_hint="kwargs",
) from ve
file_path = path or os.getcwd()
config = TextualAppContext(
file_path=path, debug=debug, max_file_size=max_file_size, kwargs=extra_kwargs
file_path=file_path,
debug=debug,
max_file_size=max_file_size,
kwargs=extra_kwargs,
)
app = Browsr(config_object=config)
app.run()
Expand Down
17 changes: 15 additions & 2 deletions browsr/browsr.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"""

import json
import os
import pathlib
import shutil
from os import getenv
Expand Down Expand Up @@ -65,6 +66,7 @@ class Browsr(BrowsrTextualApp):
Binding(key="t", action="theme", description="Toggle Theme"),
Binding(key="n", action="linenos", description="Toggle Line Numbers"),
Binding(key="d", action="toggle_dark", description="Toggle Dark Mode"),
Binding(key=".", action="parent_dir", description="Parent Directory"),
]

show_tree = var(True)
Expand Down Expand Up @@ -189,7 +191,7 @@ def _handle_file_size(self, file_info: FileInfo) -> None:
Handle a File Size
"""
file_size_mb = file_info.size / 1000 / 1000
too_large = file_size_mb >= self.config_object.max_file_size # type: ignore[union-attr]
too_large = file_size_mb >= self.config_object.max_file_size
exception = (
True
if is_local_path(file_info.file) and ".csv" in file_info.file.suffixes
Expand Down Expand Up @@ -388,9 +390,20 @@ def action_download_file(self) -> None:
self.table_view.display = False
self.confirmation_window.display = True

def action_parent_dir(self) -> None:
"""
Go to the parent directory
"""
new_path = self.config_object.path.parent.resolve()
if new_path != self.config_object.path:
self.config_object.file_path = str(new_path)
self.directory_tree.path = new_path


app = Browsr(
config_object=TextualAppContext(file_path=getenv("BROWSR_PATH"), debug=True)
config_object=TextualAppContext(
file_path=getenv("BROWSR_PATH", os.getcwd()), debug=True
)
)

if __name__ == "__main__":
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ dependencies = [
"rich~=13.5.2",
"rich-click~=1.5.2",
"rich-pixels~=2.1.1",
"textual==0.36.0",
"textual==0.39.0",
"textual-universal-directorytree~=1.0.1",
"Pillow>=9.1.0",
"PyMuPDF~=1.22.3"
Expand Down Expand Up @@ -75,7 +75,7 @@ dependencies = [
"mkdocs-literate-nav~=0.6.0",
"mkdocs-section-index~=0.3.5",
"black~=23.3.0",
"ruff~=0.0.261",
"ruff~=0.0.292",
"mypy~=1.2.0",
"pandas-stubs~=2.0.0.230412",
"pip-tools~=6.13.0",
Expand Down
42 changes: 21 additions & 21 deletions requirements/requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1521,24 +1521,24 @@ rsa==4.9 \
--hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \
--hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21
# via google-auth
ruff==0.0.280 \
--hash=sha256:2dae8f2d9c44c5c49af01733c2f7956f808db682a4193180dedb29dd718d7bbe \
--hash=sha256:2e7c15828d09f90e97bea8feefcd2907e8c8ce3a1f959c99f9b4b3469679f33c \
--hash=sha256:37359cd67d2af8e09110a546507c302cbea11c66a52d2a9b6d841d465f9962d4 \
--hash=sha256:48ed5aca381050a4e2f6d232db912d2e4e98e61648b513c350990c351125aaec \
--hash=sha256:4a7d52457b5dfcd3ab24b0b38eefaead8e2dca62b4fbf10de4cd0938cf20ce30 \
--hash=sha256:581c43e4ac5e5a7117ad7da2120d960a4a99e68ec4021ec3cd47fe1cf78f8380 \
--hash=sha256:5f972567163a20fb8c2d6afc60c2ea5ef8b68d69505760a8bd0377de8984b4f6 \
--hash=sha256:7008fc6ca1df18b21fa98bdcfc711dad5f94d0fc3c11791f65e460c48ef27c82 \
--hash=sha256:7784e3606352fcfb193f3cd22b2e2117c444cb879ef6609ec69deabd662b0763 \
--hash=sha256:7a37dab70114671d273f203268f6c3366c035fe0c8056614069e90a65e614bfc \
--hash=sha256:83e8f372fa5627eeda5b83b5a9632d2f9c88fc6d78cead7e2a1f6fb05728d137 \
--hash=sha256:8ffa7347ad11643f29de100977c055e47c988cd6d9f5f5ff83027600b11b9189 \
--hash=sha256:b7de5b8689575918e130e4384ed9f539ce91d067c0a332aedef6ca7188adac2d \
--hash=sha256:bd58af46b0221efb95966f1f0f7576df711cb53e50d2fdb0e83c2f33360116a4 \
--hash=sha256:d878370f7e9463ac40c253724229314ff6ebe4508cdb96cb536e1af4d5a9cd4f \
--hash=sha256:ef6ee3e429fd29d6a5ceed295809e376e6ece5b0f13c7e703efaf3d3bcb30b96 \
--hash=sha256:fe7118c1eae3fda17ceb409629c7f3b5a22dffa7caf1f6796776936dca1fe653
ruff==0.0.292 \
--hash=sha256:02f29db018c9d474270c704e6c6b13b18ed0ecac82761e4fcf0faa3728430c96 \
--hash=sha256:1093449e37dd1e9b813798f6ad70932b57cf614e5c2b5c51005bf67d55db33ac \
--hash=sha256:69654e564342f507edfa09ee6897883ca76e331d4bbc3676d8a8403838e9fade \
--hash=sha256:6bdfabd4334684a4418b99b3118793f2c13bb67bf1540a769d7816410402a205 \
--hash=sha256:6c3c91859a9b845c33778f11902e7b26440d64b9d5110edd4e4fa1726c41e0a4 \
--hash=sha256:7f67a69c8f12fbc8daf6ae6d36705037bde315abf8b82b6e1f4c9e74eb750f68 \
--hash=sha256:87616771e72820800b8faea82edd858324b29bb99a920d6aa3d3949dd3f88fb0 \
--hash=sha256:8e087b24d0d849c5c81516ec740bf4fd48bf363cfb104545464e0fca749b6af9 \
--hash=sha256:9889bac18a0c07018aac75ef6c1e6511d8411724d67cb879103b01758e110a81 \
--hash=sha256:aa7c77c53bfcd75dbcd4d1f42d6cabf2485d2e1ee0678da850f08e1ab13081a8 \
--hash=sha256:ac153eee6dd4444501c4bb92bff866491d4bfb01ce26dd2fff7ca472c8df9ad0 \
--hash=sha256:b76deb3bdbea2ef97db286cf953488745dd6424c122d275f05836c53f62d4016 \
--hash=sha256:be8eb50eaf8648070b8e58ece8e69c9322d34afe367eec4210fdee9a555e4ca7 \
--hash=sha256:e854b05408f7a8033a027e4b1c7f9889563dd2aca545d13d06711e5c39c3d003 \
--hash=sha256:f160b5ec26be32362d0774964e218f3fcf0a7da299f7e220ef45ae9e3e67101a \
--hash=sha256:f27282bedfd04d4c3492e5c3398360c9d86a295be00eccc63914438b4ac8a83c \
--hash=sha256:f4476f1243af2d8c29da5f235c13dca52177117935e1f9393f9d90f9833f69e4
# via -r requirements.in
s3fs==2023.6.0 \
--hash=sha256:63fd8ddf05eb722de784b7b503196107f2a518061298cf005a8a4715b4d49117 \
Expand All @@ -1554,9 +1554,9 @@ six==1.16.0 \
# isodate
# python-dateutil
# vcrpy
textual==0.36.0 \
--hash=sha256:7d04880bee0274f8cdf05cbe22d9effad3efa458676af2c431997a6d4576005c \
--hash=sha256:fbfc799a55938cfade6cfbf7c5ae3c3e5fc87ff9deaaed788a6dcefe72245451
textual==0.39.0 \
--hash=sha256:4103c0cb4e87bf9f87f4960213d3c1c33fbe7301a1a1c2df0903ecb62212983c \
--hash=sha256:bf98d7eb5a8a39ed87488640e2a18b2825dd340d36eab6193c9a47af98a3b818
# via
# -r requirements.in
# textual-dev
Expand Down
6 changes: 3 additions & 3 deletions requirements/requirements-prod.txt
Original file line number Diff line number Diff line change
Expand Up @@ -988,9 +988,9 @@ six==1.16.0 \
# google-auth
# isodate
# python-dateutil
textual==0.36.0 \
--hash=sha256:7d04880bee0274f8cdf05cbe22d9effad3efa458676af2c431997a6d4576005c \
--hash=sha256:fbfc799a55938cfade6cfbf7c5ae3c3e5fc87ff9deaaed788a6dcefe72245451
textual==0.39.0 \
--hash=sha256:4103c0cb4e87bf9f87f4960213d3c1c33fbe7301a1a1c2df0903ecb62212983c \
--hash=sha256:bf98d7eb5a8a39ed87488640e2a18b2825dd340d36eab6193c9a47af98a3b818
# via
# -r requirements.in
# textual-universal-directorytree
Expand Down
Loading