Skip to content

Conversation

@jsstevenson
Copy link
Member

@jsstevenson jsstevenson commented Sep 17, 2025

  • add read-only mode to get_data_dir(), either with a function arg readonly=True or env var WAGS_TAILS_READONLY=true. If True, don't try to mkdir(), but otherwise run some broad checks to confirm that it's actually writeable (raise an error if they fail). This begins to address Wags-tails incorrectly reads config files on containers #78
  • Make the writeable error more explicit about params and refer back to the docs for easier debugging. Addresses Add note about XDG_DATA_HOME biocommons/anyvar#244
  • clean up XDG data dirs behavior (XDG_DATA_DIRS should be read-only -- if one of the items already includes a directory named wags_tails, use it, but skip otherwise)
  • make tests more granular, add a few

"read only mode" here is not truly read-only, because we will also need to force all source .get_latest() calls to use from_local=True. Unfortunately, we don't have a terribly elegant way of changing things on that side, so I'd prefer to see if this is good enough for now: if WAGS_TAILS_READONLY=true is declared in an environment where the required data is already available at an expected location, then I would expect no further writes to happen. I think I may tackle a bigger redesign effort during an upcoming bikeshedding week.

@jsstevenson jsstevenson added the priority:low Low priority label Sep 17, 2025
@jsstevenson jsstevenson changed the title feat: optionally suppress write in get_data_dir feat!: optionally suppress write in get_data_dir, fix XDG behavior Sep 17, 2025
@jsstevenson jsstevenson changed the title feat!: optionally suppress write in get_data_dir, fix XDG behavior feat!: add read-only mode, fix XDG behavior in get_data_dir() Sep 18, 2025
Comment on lines +85 to +87
* If read-only is enabled, ``$XDG_DATA_DIRS`` can be used to provide a data directory, but only if
a ``wags-tails`` subdirectory already exists within it. Otherwise, an individual directory entry
is skipped. If unable to resolve to a directory that exists, raises ``WagsTailsDirNotAvailableError``.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this extra criteria needed? Only if read-only is enabled, and only if the subdirectory already exists?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I've been chasing my tail on this a bit. When read-only is on, a nonexistent directory is useless, but I think it begs the question of what to do when $WAGS_TAILS_READONLY=true and $WAGS_TAILS_DIR is defined but doesn't exist. I guess a simpler way forward would be to not skip and fail once the process tries to write a file to the data subdirectory, because presumably if you can define $WAGS_TAILS_READONLY then you can also be smart enough to point $WAGS_TAILS_DIR to a real directory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority:low Low priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants