Welcome to PyFileBrowser’s documentation!¶
Initialization¶
Module for packaging.
- pyfilebrowser.__init__._cli() None¶
Starter function to invoke the file browser via CLI commands.
- Flags
--version | -V: Prints the version.--proxy | -P: Initiates PyFileBrowser with proxy server enabled.--help | -H: Prints the help section.--otp | -O: Generates a one-time password (OTP) QR code for secure access.--extra | -E <path>: Specifies an extra environment YAML file to load additional configurations.
- Commands
start: Initiates the PyFilebrowser as a regular script.start-service: Initiates the PyFilebrowser as a service.start-container: Initiates the PyFilebrowser as a containerized application.
——–Proxy Server——–¶
Engine¶
- pyfilebrowser.proxy.main.epoch()¶
- pyfilebrowser.proxy.main.refresh_allowed_origins() None¶
Refresh all the allowed origins.
See also
Triggered once during the proxy server starts up (by default).
Triggered repeatedly at given intervals as a background task (if
origin_refreshis set).- The background task runs only when the env vars,
private_iporpublic_ipis set to True,as they are the only dynamic values.
- async pyfilebrowser.proxy.main.incrementer(attempt: int) int¶
Increments block time for a host address based on the number of failed attempts.
- Parameters:
attempt – Number of failed attempts.
- Returns:
Returns the appropriate block time in minutes.
- Return type:
int
- async pyfilebrowser.proxy.main.handle_auth_error(request: Request) None¶
Handle authentication errors from the filebrowser API.
- Parameters:
request – The incoming request object.
- async pyfilebrowser.proxy.main.proxy_engine(proxy_request: Request) Response¶
Proxy handler function to forward incoming requests to a target URL.
- Parameters:
proxy_request – The incoming request object.
- Returns:
The response object with the forwarded content and headers.
- Return type:
Response
Templates¶
Constructs an error page using jina template for service unavailable.
- Returns:
HTML content as string.
- Return type:
str
- pyfilebrowser.proxy.templates.templates.forbidden(origin: str) str¶
Constructs an error page using jina template for forbidden response.
- Parameters:
origin – Origin that is forbidden.
- Returns:
HTML content as string.
- Return type:
str
- pyfilebrowser.proxy.templates.templates.unsupported_browser(user_agent: UserAgent) str¶
Constructs a warning page using jina template for unsupported browsers.
- Parameters:
user_agent – User agent object.
- Returns:
HTML content as string.
- Return type:
str
Rate Limit¶
- class pyfilebrowser.proxy.rate_limit.RateLimiter(rps: RateLimit)¶
Object that implements the
RateLimiterfunctionality.>>> RateLimiter
Instantiates the object with the necessary args.
- Parameters:
rps – RateLimit object with
max_requestsandseconds.
- max_requests¶
Maximum requests to allow in a given time frame.
- seconds¶
Number of seconds after which the cache is set to expire.
- init(request: Request) None¶
Checks if the number of calls exceeds the rate limit for the given identifier.
- Parameters:
request – The incoming request object.
- Raises:
429 – Too many requests.
Repeated Timer¶
- class pyfilebrowser.proxy.repeated_timer.RepeatedTimer(interval: int, function: Callable, args: Tuple = None, kwargs: Dict[str, Any] = None)¶
Instantiates RepeatedTimer object to kick off the threading.Timer object with custom intervals.
>>> RepeatedTimer
Repeats the
Timerobject from threading.- Parameters:
interval – Interval in seconds.
function – Function to trigger with intervals.
args – Arguments for the function.
kwargs – Keyword arguments for the function.
- _run()¶
Triggers the target function.
- start()¶
Trigger target function if timer isn’t running already.
- stop()¶
Stop the timer and cancel all futures.
- cancel()¶
Initiate cancellation.
Server¶
- class pyfilebrowser.proxy.server.ProxyServer(config: Config)¶
Shared ProxyServer state that is available between all protocol instances.
>>> ProxyServer
References
https://github.com/encode/uvicorn/issues/742#issuecomment-674411676
- run_in_parallel(logger: Logger) None¶
Initiates the server in a dedicated process.
- Parameters:
logger – Server’s original logger.
See also
Initiates a background task to refresh the allowed origins at given interval.
- pyfilebrowser.proxy.server.proxy_server(server: str, log_config: dict) None¶
Triggers the proxy engine in parallel.
- Parameters:
server – Server URL that has to be proxied.
log_config – Server’s logger object.
See also
Creates a logging configuration similar to the main logger.
Adds the rate limit dependency, per the user’s selection.
Adds CORS Middleware settings, and loads the uvicorn config.
Squire¶
- pyfilebrowser.proxy.squire.log_connection(request: Request) starlette.responses.HTMLResponse | None¶
Logs the connection information and returns an HTML response if the browser is unsupported for video/audio.
See also
Only logs the first connection from a device.
This avoids multiple logs when same device is accessing different paths.
- Returns:
Returns an HTML response if the browser is unsupported for video/audio rendering.
- Return type:
HTMLResponse
Settings¶
- class pyfilebrowser.proxy.settings.Destination(pydantic.BaseModel)¶
Server’s destination settings.
>>> Destination
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- url: HttpUrl¶
- class pyfilebrowser.proxy.settings.EnvConfig(PydanticEnvConfig)¶
Configure all env vars and validate using
pydanticto share across modules.>>> EnvConfig
- - **host**
The host address for the server.
- - **port**
The port number for the server.
- - **workers**
The number of worker processes for handling requests.
- - **debug**
Enable or disable debug mode.
- - **origins**
A list of allowed origins for CORS.
- - **database**
The path to the database file.
- - **allow_public_ip**
Allow access from public IP address.
- - **allow_private_ip**
Allow access from private IP address.
- - **origin_refresh**
Time interval to refresh allowed origins.
- - **rate_limit**
Rate limiting settings for incoming requests.
- - **unsupported_browsers**
List of unsupported browsers.
- - **warn_page**
Path to the custom warning page HTML file.
- - **error_page**
Path to the custom error page HTML file.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- host: str¶
- port: int¶
- workers: int¶
- debug: bool¶
- origins: List[HttpUrl]¶
- database: str¶
- allow_public_ip: bool¶
- allow_private_ip: bool¶
- origin_refresh: Optional[int]¶
- unsupported_browsers: Union[str, List[str]]¶
- warn_page: Path¶
- error_page: Path¶
- classmethod parse_unsupported_browsers(unsupported_browsers: Union[str, List[str]]) Union[List[str], List]¶
Validate unsupported_browsers and convert to list.
- classmethod parse_origins(origins: List[HttpUrl]) Union[List[str], List]¶
Validate origins’ input as a URL, and stores only the host part of the URL.
- class pyfilebrowser.proxy.settings.RateLimit(pydantic.BaseModel)¶
Object to store the rate limit settings.
>>> RateLimit
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- max_requests: int¶
- seconds: int¶
- class pyfilebrowser.proxy.settings.Session(pydantic.BaseModel)¶
Object to store session information.
>>> Session
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- auth_counter: Dict[str, int]¶
- forbid: Set[str]¶
- info: Dict[str, str]¶
- rps: Dict[str, int]¶
- allowed_origins: Set[str]¶
——–PyFB API Client——–¶
Main Module¶
- class pyfilebrowser.main.FileBrowser(**kwargs)¶
Object to handle the filebrowser streaming.
>>> FileBrowser
Instantiates the object.
- Keyword Arguments:
logger – Bring your own logger.
proxy – Boolean flag to enable proxy.
extra_env – JSON or YAML filename to load extra settings.
See also
extra_envis a feature to load additional configuration settings to the filebrowser server.This is useful when you want to load custom settings that are not available in the default configuration.
- The file should be a JSON or YAML file with the following structure:
The key should be the same as the one in configuration settings of the filebrowser. Options: (
server,auther,settings)The JSON/YAML structure should follow the same parent key-value mapping.
The file should be placed in the same directory as the script that invokes the filebrowser.
The filename should be passed as a keyword argument to the
FileBrowserobject. (By default, searched forextra.jsonin the current directory)
- register_signal_handlers() None¶
Register signals (cross-platform) to handle graceful shutdown on various levels.
- cleanup(log: bool = True) None¶
Removes the config and proxy database.
- exit_process() None¶
Deletes the database file, and all the subtitles that were created by this application.
- run_subprocess(arguments: List[str] = None, failed_msg: str = None, stdout: bool = True) None¶
Run
filebrowsercommands as subprocess.- Parameters:
arguments – Arguments to pass to the binary.
failed_msg – Failure message in case of bad return code.
stdout – Boolean flag to show/hide standard output.
- create_users() None¶
Creates the JSON file(s) for user profiles.
- create_config() None¶
Creates the JSON file for configuration.
- import_config() None¶
Imports the configuration file into filebrowser.
- import_users() None¶
Imports the user profile(s) into filebrowser.
- background_tasks() None¶
Initiates the proxy engine and subtitles’ format conversion as background tasks.
- link() None¶
Creates symlinks for the directories specified in the configuration.
- unlink() None¶
Removes the symbolic links created in the server root directory.
- handle_shutdown(signum: int, frame: Optional[frame]) None¶
Handles shutdown signals (e.g., SIGINT, SIGTERM) to initiate a graceful shutdown.
This function is intended to be registered with the signal module and will be triggered when the process receives a termination signal. It logs relevant information and sets a shutdown flag to allow the main process to exit cleanly.
- Parameters:
signum – The signal number received (e.g., signal.SIGINT).
frame – The current stack frame when the signal was received.
- start_container() None¶
Starts the filebrowser server inside a Docker container.
- start_service() None¶
Starts the filebrowser server as a service with graceful shutdown handling.
- start_server() None¶
Starts the filebrowser server as a regular script with automatic restarts.
Container Module¶
- class pyfilebrowser.container.ContainerEngine(container_settings: ContainerSettings, logger: Logger)¶
Container engine to manage Docker containers for PyFilebrowser.
>>> ContainerEngine
- pull_image() None¶
Pull the Docker image from the registry.
- remove_existing() None¶
Remove docker container if it exists already.
- run_container(port: int, data_volume: str) None¶
Run the Docker container for PyFilebrowser.
- Parameters:
port – Host port to map to the container’s port.
data_volume – Root directory path to mount as data volume.
Modals¶
PydanticEnvConfig¶
- class pyfilebrowser.modals.pydantic_config.PydanticEnvConfig(pydantic_settings.BaseSettings)¶
Pydantic BaseSettings with custom order for loading environment variables.
>>> PydanticEnvConfig
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- classmethod settings_customise_sources(settings_cls, init_settings, env_settings, dotenv_settings, file_secret_settings)¶
Order: dotenv, env, init, secrets files.
Configuration¶
- class pyfilebrowser.modals.settings.ServerSettings(PydanticEnvConfig)¶
Configuration settings for PyFilebrowser.
>>> ServerSettings
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- restart: int¶
- class pyfilebrowser.modals.config.Server(PydanticEnvConfig)¶
Configuration settings [
serversection] for the server.>>> Server
Notes
root - The root directory for the server. Contents of this directory will be served.
symlinks - List of symlinks to be created in the root directory. Accepts file or directory paths.
baseURL - The base URL for the server.
socket - Socket to listen to (cannot be used with
address,portor TLS settings)tlsKey - The TLS key for the server.
tlsCert - The TLS certificate for the server.
port - The port for the server.
address - Address to listen on. Defaults to
127.0.0.1log - The log settings for the server.
enableThumbnails - Enable thumbnails for the server.
resizePreview - Resize the preview for the server.
enableExec - Enable command execution for the server.
typeDetectionByHeader - Enable type detection by header for the server.
authHook - The authentication hook for the server.
tokenExpirationTime - The token expiration time for the server. A duration string is a signed sequence of decimal numbers, each with optional fraction and a unit suffix. Examples “300ms”, “-1.5h” or “2h45m”. Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- root: Path¶
- symlinks: Optional[List[Union[Path, Path]]]¶
- baseURL: Optional[str]¶
- socket: Optional[str]¶
- tlsKey: Optional[Union[Path, str]]¶
- tlsCert: Optional[Union[Path, str]]¶
- port: Optional[int]¶
- address: Optional[str]¶
- enableThumbnails: Optional[bool]¶
- resizePreview: Optional[bool]¶
- enableExec: Optional[bool]¶
- typeDetectionByHeader: Optional[bool]¶
- authHook: Optional[str]¶
- tokenExpirationTime: Optional[str]¶
- class pyfilebrowser.modals.config.Branding(PydanticEnvConfig)¶
Configuration for the custom branding settings for the server.
>>> Branding
See also
Environment variables should be prefixed with
branding_, and present in.config.envReferences
- A custom CSS file can be used to style the application. The file should be placed in the
filesdirectory.
- A custom CSS file can be used to style the application. The file should be placed in the
Notes
name - Instance name that will show up on login and signup pages.
disableExternal - This will disable any external links.
disableUsedPercentage - Disables the used volume percentage.
- files - The path to the branding files.
custom.css: Containing the styles you want to apply to your installation.
img: A directory whose files can replace the default logotypes in the application.
theme - The theme of the brand. Uses system default if not set.
color - The color of the brand.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- name: Optional[str]¶
- disableExternal: Optional[bool]¶
- disableUsedPercentage: Optional[bool]¶
- files: Optional[Path]¶
- color: Optional[str]¶
- class pyfilebrowser.modals.config.Tus(PydanticEnvConfig)¶
Configuration for the upload settings in the server.
>>> Tus
See also
Environment variables should be prefixed with
tus_, and present in.config.envNotes
chunkSize - The size of the chunks to be uploaded.
retryCount - The number of retries to be made in case of a failure.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- chunkSize: Optional[int]¶
- retryCount: Optional[int]¶
- class pyfilebrowser.modals.config.Defaults(PydanticEnvConfig)¶
Configuration for all the default settings for the server.
>>> Defaults
See also
Environment variables should be prefixed with
defaults_, and present in.config.envNotes
scope - The default scope for the users. Defaults to the root directory.
locale - The default locale for the users. Locale is an RFC 5646 language tag.
viewMode - The default view mode for the users.
singleClick - The default single click setting for the users.
sorting - The default sorting settings for the users.
perm - The default permission settings for the users.
commands - The default list of commands that can be executed by users.
hideDotfiles - The default setting to hide dotfiles.
dateFormat - The default setting to set the exact date format.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- scope: Optional[str]¶
- locale: Optional[str]¶
- singleClick: Optional[bool]¶
- commands: Optional[List[str]]¶
- hideDotfiles: Optional[bool]¶
- dateFormat: Optional[bool]¶
- class pyfilebrowser.modals.config.Commands(PydanticEnvConfig)¶
Configuration for list of the commands to be executed before or after a certain event.
>>> Commands
See also
The command runner is a feature that enables you to execute shell commands before or after a certain event.
Notes
after_copy - List of commands to be executed after copying a file.
after_delete - List of commands to be executed after deleting a file.
after_rename - List of commands to be executed after renaming a file.
after_save - List of commands to be executed after saving a file.
after_upload - List of commands to be executed after uploading a file.
before_copy - List of commands to be executed before copying a file.
before_delete - List of commands to be executed before deleting a file.
before_rename - List of commands to be executed before renaming a file.
before_save - List of commands to be executed before saving a file.
before_upload - List of commands to be executed before uploading a file.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- after_copy: Optional[List[str]]¶
- after_delete: Optional[List[str]]¶
- after_rename: Optional[List[str]]¶
- after_save: Optional[List[str]]¶
- after_upload: Optional[List[str]]¶
- before_copy: Optional[List[str]]¶
- before_delete: Optional[List[str]]¶
- before_rename: Optional[List[str]]¶
- before_save: Optional[List[str]]¶
- before_upload: Optional[List[str]]¶
- class pyfilebrowser.modals.config.Config(PydanticEnvConfig)¶
Configuration settings [
configsection] for the server.>>> Config
Notes
signup - Enable signup option for new users.
createUserDir - Auto create user home dir while adding new user.
userHomeBasePath - The base path for user home directories.
defaults - The default settings for the server.
authMethod - The authentication method for the server.
authHeader - The authentication header for the server.
branding - The branding settings for the server.
tus - The upload settings for the server.
commands - The command settings for the server.
shell_ - The shell settings for the server.
rules - This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user’s settings to override these. Supports regex.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- signup: Optional[bool]¶
- createUserDir: Optional[bool]¶
- userHomeBasePath: Optional[Path]¶
- authMethod: Optional[str]¶
- authHeader: Optional[str]¶
- shell_: Optional[List[str]]¶
- rules: Optional[List[str]]¶
- class pyfilebrowser.modals.config.ReCAPTCHA(pydantic.BaseModel)¶
Settings for ReCaptcha.
>>> ReCAPTCHA
Notes
host - The host for the ReCaptcha.
key - The key for the ReCaptcha.
secret - The secret for the ReCaptcha.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- host: Optional[HttpUrl]¶
- key: Optional[str]¶
- secret: Optional[str]¶
- class pyfilebrowser.modals.config.Auther(PydanticEnvConfig)¶
Configuration settings [
serversection] for the server.>>> Auther
Notes
recaptcha - ReCaptcha settings for the server.
authenticatorToken - The authenticator token for TOTP.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- authenticatorToken: Optional[str]¶
- class pyfilebrowser.modals.config.ConfigSettings(pydantic.BaseModel)¶
Wrapper for all the configuration settings to form a nested JSON object.
>>> ConfigSettings
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
Models¶
- class pyfilebrowser.modals.models.Log(StrEnum)¶
Enum for different log options.
>>> Log
See also
Options are valid only for default/built-in logger.
Any custom logger passed during PyFilebrowser object init, will take precedence.
- stdout: Optional[str] = 'stdout'¶
- file: Optional[str] = 'file'¶
- class pyfilebrowser.modals.models.Listing(StrEnum)¶
Enum for different listing options.
>>> Listing
- list: Optional[str] = 'list'¶
- mosaic: Optional[str] = 'mosaic'¶
- gallery: Optional[str] = 'gallery'¶
- class pyfilebrowser.modals.models.SortBy(StrEnum)¶
Enum for different sort-by options.
>>> SortBy
- name: str = 'name'¶
- size: str = 'size'¶
- modified: str = 'modified'¶
- class pyfilebrowser.modals.models.Theme(StrEnum)¶
Enum for different theme options.
>>> Theme
- light: Optional[str] = 'light'¶
- dark: Optional[str] = 'dark'¶
- blank: Optional[str] = ''¶
- class pyfilebrowser.modals.models.Sorting(pydantic.BaseModel)¶
Enum for different sorting options.
>>> Sorting
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- asc: bool¶
- class pyfilebrowser.modals.models.Perm(pydantic.BaseModel)¶
Permission settings for each user profile.
>>> Perm
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- admin: bool¶
- execute: bool¶
- create: bool¶
- rename: bool¶
- modify: bool¶
- delete: bool¶
- download: bool¶
Users¶
- class pyfilebrowser.modals.users.Authentication(pydantic.BaseModel)¶
Authentication settings for each user profile.
>>> models.Perm
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- username: Optional[str]¶
- password: Optional[str]¶
- admin: Optional[bool]¶
- class pyfilebrowser.modals.users.UserSettings(PydanticEnvConfig)¶
Profile settings for each user.
>>> UserSettings
Notes
authentication - Authentication settings for each user profile.
scope - The default scope for the users. Defaults to the root directory.
locale - The default locale for the users. Locale is an RFC 5646 language tag.
lockPassword - Default setting to prevent the user from changing the password.
viewMode - Default view mode for the users.
singleClick - Use single clicks to open files and directories.
perm - Permissions are set based on the admin flag for each
Authenticationmodel.commands - List of commands that can be executed by the user.
sorting - Default sorting settings for the user.
rules - List of allow and disallow rules. This overrides the server’s default rules.
hideDotfiles - Default setting to hide dotfiles.
dateFormat - Default setting to set the exact date format.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- authentication: Optional[Authentication]¶
- scope: Optional[str]¶
- locale: Optional[str]¶
- lockPassword: Optional[bool]¶
- singleClick: Optional[bool]¶
- commands: Optional[List[str]]¶
- rules: Optional[List[str]]¶
- hideDotfiles: Optional[bool]¶
- dateFormat: Optional[bool]¶
- classmethod from_env_file(env_file: Optional[str]) UserSettings¶
Create UserSettings instance from environment file.
- Parameters:
env_file – Name of the env file.
- Returns:
Loads the
UserSettingsmodel.- Return type:
- classmethod validate_password_complexity(value: Authentication) Union[Authentication, Dict]¶
Field validator for password.
- Parameters:
value – Value as entered by the user.
- Returns:
Returns an
Authenticationobject or a dictionary with the authentication payload.- Return type:
Authentication | Dict
Squire¶
Download¶
- class pyfilebrowser.squire.download.Executable(pydantic.BaseModel)¶
Executable object to load all the objects to download the executable from releases.
>>> Executable
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- system: str¶
- machine: str¶
- filebrowser_os: str¶
- filebrowser_bin: Path¶
- filebrowser_dl_ext: str¶
- filebrowser_arch: str¶
- filebrowser_file: str¶
- filebrowser_db: str¶
- class pyfilebrowser.squire.download.GitHub(pydantic.BaseSettings)¶
Custom GitHub account information loaded using multiple env prefixes.
>>> GitHub
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- owner: str¶
- repo: str¶
- token: str | None¶
- version: str¶
- pyfilebrowser.squire.download.alias_choices(variable: str) AliasChoices¶
Custom alias choices for environment variables for GitHub.
- Parameters:
variable – Variable name.
- Returns:
Returns the alias choices for the variable.
- Return type:
AliasChoices
Steward¶
- class pyfilebrowser.squire.steward.EnvConfig(pydantic.BaseModel)¶
Configure all env vars and validate using
pydanticto share across modules.>>> EnvConfig
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- user_profiles: List[UserSettings]¶
- config_settings: ConfigSettings¶
- classmethod load_user_profiles() Generator[UserSettings]¶
Load UserSettings instances from .env files in the current directory.
- Yields:
Generator[users.UserSettings] – A generator of
UserSettingsobject.
- class pyfilebrowser.squire.steward.FileIO(pydantic.BaseModel)¶
FileIO object to load the JSON files.
>>> FileIO
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
- settings_dir: Path¶
- config: Path¶
- users: Path¶
- pyfilebrowser.squire.steward.ordinal(n: int) str¶
Returns the ordinal representation of a given number.
- Parameters:
n – The number for which the ordinal representation is to be determined.
- Returns:
The ordinal representation of the input number.
- Return type:
str
- pyfilebrowser.squire.steward.default_logger(log_to_file: bool) Logger¶
Generates a default console logger.
- Parameters:
log_to_file – Boolean flag to stream logs to a file.
- Returns:
Logger object.
- Return type:
logging.Logger
- pyfilebrowser.squire.steward.hash_password(password: str) str¶
Returns a salted hash for the given text.
- Parameters:
password – Password as plain text.
- Returns:
Decoded hashed password as a string.
- Return type:
str
- pyfilebrowser.squire.steward.validate_password(password: str, hashed_password: str) bool¶
Validates whether the hashed password matches the text version.
- Parameters:
password – Password as plain text.
hashed_password – Hashed password.
- Returns:
Returns a boolean flag to indicate whether the password matches.
- Return type:
bool
- pyfilebrowser.squire.steward.remove_trailing_underscore(dictionary: dict) dict¶
Iterates through the dictionary and removes any key ending with an ‘_’ underscore.
- Parameters:
dictionary – Any nested dictionary.
- Returns:
Returns the same nested dictionary, removing trailing underscore in the keys.
- Return type:
dict
- pyfilebrowser.squire.steward.delete(files: Iterable[str], logger: Logger = None) None¶
Deletes the provided list of files.
- Parameters:
files – List or tuple of files to delete.
logger – Custom logger object.
- pyfilebrowser.squire.steward.remove_prefix(text: str) str¶
Returns the message part from the default log output from filebrowser.
Struct¶
- class pyfilebrowser.squire.struct.LoggerConfig(logger: Logger)¶
Creates a dictionary of the given logger’s configuration.
>>> LoggerConfig
Instantiates the object.
- Parameters:
logger – Custom logger.
- extract() Tuple[dict, dict]¶
Extracts the handlers and formatters.
- Returns:
Returns a tuple of handlers and formatters, each as dictionary representation.
- Return type:
Tuple[dict, dict]
- get() Dict[str, Union[dict, int, Dict[str, Dict[str, Union[str, int, bool, List[str]]]]]]¶
Returns logger’s full configuration which can be re-used to create new logger objects with the same config.
- Returns:
Returns the log configration.
- Return type:
Dict[str, dict | int | Dict[str, Dict[str, str | int | bool | List[str]]]]
- pyfilebrowser.squire.struct.update_log_level(data: dict, new_value: Any) dict¶
Recursively update the value where any key equals “level”, for loggers and handlers.
- Parameters:
data – The nested dictionary to traverse.
new_value – The new value to set where the key equals “level”.
- Returns:
The updated nested dictionary.
- Return type:
dict