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

Untar processor cannot handle members within subfolders #223

Closed
drammock opened this issue Dec 31, 2020 · 1 comment · Fixed by #224
Closed

Untar processor cannot handle members within subfolders #223

drammock opened this issue Dec 31, 2020 · 1 comment · Fixed by #224

Comments

@drammock
Copy link
Contributor

drammock commented Dec 31, 2020

Description of the problem

individual member files of an archive cannot be selected if they reside within a subfolder inside the archive.

For demonstration, I'm using an archive called MNE-kiloword-data.tar.gz (URL for it is in the code below).
Inside that archive is one folder with one file in it: MNE-kiloword-data/kword_metadata-epo.fif

I want to end up with the file here: /home/username/Desktop/MNE-kiloword-data/kword_metadata-epo.fif
In other words, I want the whole archive's contents to end up on my Desktop (this is just for illustration purposes; in reality we will put it somewhere more sensible).

I have tried several combinations of fname, path, and members below, and always end up with a FileNotFound error. I've also tried explicitly passing the subdirectory inside the archive as one of the members, like this:

processor = pooch.Untar(members=['MNE-kiloword-data/', 'MNE-kiloword-data/kword_metadata-epo.fif'])

...which also didn't work.

Full code that generated the error

fname = 'kword_metadata-epo.fif'
urls = {fname: 'https://osf.io/qkvf9/download?version=1'}
registry = {fname: 'md5:3a124170795abbd2e48aae8727e719a8'}
path = '/home/username/Desktop/MNE-kiloword-data/'  # <--- update with your real username
processor = pooch.Untar(members=['MNE-kiloword-data/kword_metadata-epo.fif'])

foo = pooch.retrieve(url=urls[fname], known_hash=registry[fname],
                     fname=fname, path=path, processor=processor)

Full error message

Downloading data from 'https://osf.io/qkvf9/download?version=1' to file '/home/username/Desktop/MNE-kiloword-data/kword_metadata-epo.fif'.
Extracting 'MNE-kiloword-data/kword_metadata-epo.fif' from '/home/username/Desktop/MNE-kiloword-data/kword_metadata-epo.fif' to '/home/username/Desktop/MNE-kiloword-data/kword_metadata-epo.fif.untar'
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-1-f2eb5fdc640e> in <module>
      6 processor = pooch.Untar(members=['MNE-kiloword-data/kword_metadata-epo.fif'])
      7 
----> 8 foo = pooch.retrieve(url=urls[fname], known_hash=registry[fname],
      9                      fname=fname,
     10                      path=path, processor=processor)

/opt/miniconda3/envs/mnedev/lib/python3.8/site-packages/pooch/core.py in retrieve(url, known_hash, fname, path, processor, downloader)
    237 
    238     if processor is not None:
--> 239         return processor(str(full_path), action, None)
    240 
    241     return str(full_path)

/opt/miniconda3/envs/mnedev/lib/python3.8/site-packages/pooch/processors.py in __call__(self, fname, action, pooch)
     78             if not os.path.exists(extract_dir):
     79                 os.makedirs(extract_dir)
---> 80             self._extract_file(fname, extract_dir)
     81         # Get a list of all file names (including subdirectories) in our folder
     82         # of unzipped files.

/opt/miniconda3/envs/mnedev/lib/python3.8/site-packages/pooch/processors.py in _extract_file(self, fname, extract_dir)
    186                     try:
    187                         # Save it to our desired file name
--> 188                         with open(os.path.join(extract_dir, member), "wb") as output:
    189                             output.write(data_file.read())
    190                     finally:

FileNotFoundError: [Errno 2] No such file or directory: '/home/username/Desktop/MNE-kiloword-data/kword_metadata-epo.fif.untar/MNE-kiloword-data/kword_metadata-epo.fif'

System information

  • Operating system: Linux (Xubuntu 20.04)
  • Python installation (Anaconda, system, ETS): miniconda
  • Version of Python: 3.8.6
  • Version of this package: 1.3.0
  • If using conda, paste the output of conda list below:
output of conda list

packages in environment at /opt/miniconda3/envs/mnedev:

Name Version Build Channel

_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 1_llvm conda-forge
alabaster 0.7.12 py_0 conda-forge
apipkg 1.5 py_0 conda-forge
appdirs 1.4.4 pyh9f0ad1d_0 conda-forge
apptools 4.5.0 pypi_0 pypi
argon2-cffi 20.1.0 py38h1e0a361_2 conda-forge
async_generator 1.10 py_0 conda-forge
attrs 20.2.0 pyh9f0ad1d_0 conda-forge
babel 2.8.0 py_0 conda-forge
backcall 0.2.0 pyh9f0ad1d_0 conda-forge
backports 1.0 py_2 conda-forge
backports.functools_lru_cache 1.6.1 py_0 conda-forge
beautifulsoup4 4.9.3 pyhb0f4dca_0 conda-forge
bleach 3.2.1 pyh9f0ad1d_0 conda-forge
blosc 1.20.1 he1b5a44_0 conda-forge
bokeh 2.2.3 py38h32f6830_0 conda-forge
brotli 1.0.9 he1b5a44_3 conda-forge
brotlipy 0.7.0 py38h8df0ef7_1001 conda-forge
brunsli 0.1 he1b5a44_0 conda-forge
bzip2 1.0.8 h516909a_3 conda-forge
c-ares 1.16.1 h516909a_3 conda-forge
ca-certificates 2020.12.5 ha878542_0 conda-forge
cairo 1.16.0 h9f066cc_1006 conda-forge
cairocffi 1.1.0 py_0 conda-forge
cairosvg 2.4.2 py_0 conda-forge
certifi 2020.12.5 py38h578d9bd_0 conda-forge
cffi 1.14.3 py38h1bdcb99_1 conda-forge
chardet 3.0.4 py38h924ce5b_1008 conda-forge
charls 2.1.0 he1b5a44_2 conda-forge
cloudpickle 1.6.0 py_0 conda-forge
cmarkgfm 0.4.2 py38h1e0a361_3 conda-forge
codespell 1.17.1 pypi_0 pypi
colorama 0.4.4 pyh9f0ad1d_0 conda-forge
colorspacious 1.1.2 pyh24bf2e0_0 conda-forge
configobj 5.0.6 pypi_0 pypi
coverage 5.3 py38h1e0a361_1 conda-forge
cryptography 3.2.1 py38h7699a38_0 conda-forge
cssselect2 0.2.1 pyh9f0ad1d_1 conda-forge
cudatoolkit 10.2.89 h8f6ccaa_6 conda-forge
cudnn 7.6.5.32 h01f27c4_1 conda-forge
cupy 8.1.0 py38h0c20449_0 conda-forge
cycler 0.10.0 py_2 conda-forge
cytoolz 0.11.0 py38h1e0a361_1 conda-forge
dask-core 2.30.0 py_0 conda-forge
dbus 1.13.6 hfdff14a_1 conda-forge
decopatch 1.4.8 pypi_0 pypi
decorator 4.4.2 py_0 conda-forge
defusedxml 0.6.0 py_0 conda-forge
dipy 1.2.0 pypi_0 pypi
docutils 0.16 py38h924ce5b_2 conda-forge
entrypoints 0.3 py38h32f6830_1002 conda-forge
envisage 4.9.2 pypi_0 pypi
execnet 1.7.1 py_0 conda-forge
expat 2.2.9 he1b5a44_2 conda-forge
fastrlock 0.5 py38h950e882_1 conda-forge
filprofiler 0.8.0 pypi_0 pypi
flake8 3.8.4 py_0 conda-forge
fontconfig 2.13.1 h7e3eb15_1002 conda-forge
freetype 2.10.4 h7ca028e_0 conda-forge
fuzzywuzzy 0.18.0 pypi_0 pypi
gettext 0.19.8.1 hf34092f_1004 conda-forge
giflib 5.2.1 h36c2ea0_2 conda-forge
glib 2.66.2 h58526e2_0 conda-forge
gst-plugins-base 1.14.5 h0935bb2_2 conda-forge
gstreamer 1.14.5 h36ae1b5_2 conda-forge
h5py 2.10.0 nompi_py38h7442b35_105 conda-forge
hdf5 1.10.6 nompi_h1022a3e_1110 conda-forge
icu 67.1 he1b5a44_0 conda-forge
idna 2.10 pyh9f0ad1d_0 conda-forge
imagecodecs 2020.5.30 py38h63741c2_4 conda-forge
imageio 2.9.0 py_0 conda-forge
imageio-ffmpeg 0.4.2 pypi_0 pypi
imagesize 1.2.0 py_0 conda-forge
importlib-metadata 2.0.0 py_1 conda-forge
importlib_metadata 2.0.0 1 conda-forge
iniconfig 1.1.1 pyh9f0ad1d_0 conda-forge
ipyevents 0.8.1 py_0 conda-forge
ipykernel 5.3.4 py38h1cdfbd6_1 conda-forge
ipympl 0.5.8 pyh9f0ad1d_0 conda-forge
ipython 7.19.0 py38h81c977d_0 conda-forge
ipython_genutils 0.2.0 py_1 conda-forge
ipywidgets 7.5.1 pyh9f0ad1d_1 conda-forge
jedi 0.17.2 py38h32f6830_1 conda-forge
jeepney 0.4.3 py_0 conda-forge
jinja2 2.11.2 pyh9f0ad1d_0 conda-forge
joblib 0.17.0 py_0 conda-forge
jpeg 9d h36c2ea0_0 conda-forge
json5 0.9.5 pyh9f0ad1d_0 conda-forge
jsonschema 3.2.0 py_2 conda-forge
jupyter 1.0.0 py_2 conda-forge
jupyter_client 6.1.7 py_0 conda-forge
jupyter_console 6.2.0 py_0 conda-forge
jupyter_core 4.6.3 py38h32f6830_2 conda-forge
jupyterlab 2.2.9 py_0 conda-forge
jupyterlab_pygments 0.1.2 pyh9f0ad1d_0 conda-forge
jupyterlab_server 1.2.0 py_0 conda-forge
jxrlib 1.1 h516909a_2 conda-forge
keyring 21.4.0 py38h32f6830_2 conda-forge
kiwisolver 1.3.1 py38h82cb98a_0 conda-forge
krb5 1.17.1 hfafb76e_3 conda-forge
latexcodec 2.0.0 pypi_0 pypi
lcms2 2.11 hcbb858e_1 conda-forge
ld_impl_linux-64 2.35 h769bd43_9 conda-forge
lerc 2.2 he1b5a44_0 conda-forge
libaec 1.0.4 he1b5a44_1 conda-forge
libblas 3.9.0 2_openblas conda-forge
libcblas 3.9.0 2_openblas conda-forge
libclang 10.0.1 default_hde54327_1 conda-forge
libcurl 7.71.1 hcdd3856_8 conda-forge
libedit 3.1.20191231 he28a2e2_2 conda-forge
libev 4.33 h516909a_1 conda-forge
libevent 2.1.10 hcdb4288_3 conda-forge
libffi 3.2.1 he1b5a44_1007 conda-forge
libgcc-ng 9.3.0 h5dbcf3e_17 conda-forge
libgfortran-ng 9.3.0 he4bcb1c_17 conda-forge
libgfortran5 9.3.0 he4bcb1c_17 conda-forge
libglib 2.66.2 hbe7bbb4_0 conda-forge
libiconv 1.16 h516909a_0 conda-forge
liblapack 3.9.0 2_openblas conda-forge
libllvm10 10.0.1 he513fc3_3 conda-forge
libnghttp2 1.41.0 h8cfc5f6_2 conda-forge
libopenblas 0.3.12 pthreads_h4812303_1 conda-forge
libpng 1.6.37 h21135ba_2 conda-forge
libpq 12.3 h5513abc_2 conda-forge
libsodium 1.0.18 h516909a_1 conda-forge
libssh2 1.9.0 hab1572f_5 conda-forge
libstdcxx-ng 9.3.0 h2ae2ef3_17 conda-forge
libtiff 4.1.0 h4f3a223_6 conda-forge
libuuid 2.32.1 h14c3975_1000 conda-forge
libwebp-base 1.1.0 h36c2ea0_3 conda-forge
libxcb 1.13 h14c3975_1002 conda-forge
libxkbcommon 0.10.0 he1b5a44_0 conda-forge
libxml2 2.9.10 h68273f3_2 conda-forge
libxslt 1.1.33 h572872d_1 conda-forge
libzopfli 1.0.3 he1b5a44_0 conda-forge
lineedit 0.1.5 pypi_0 pypi
llvm-openmp 11.0.0 hfc4b9b4_1 conda-forge
llvmlite 0.34.0 py38h4f45e52_2 conda-forge
lz4-c 1.9.2 he1b5a44_3 conda-forge
makefun 1.9.4 pypi_0 pypi
markupsafe 1.1.1 py38h8df0ef7_2 conda-forge
matplotlib 3.3.2 py38h32f6830_1 conda-forge
matplotlib-base 3.3.2 py38h4d1ce4f_1 conda-forge
mayavi 4.7.2 pypi_0 pypi
mccabe 0.6.1 py_1 conda-forge
memory_profiler 0.58.0 py_0 conda-forge
meshio 4.3.3 pypi_0 pypi
mistune 0.8.4 py38h1e0a361_1002 conda-forge
mkl 2020.2 256 conda-forge
mne 0.22.dev0 dev_0
mne-bids 0.6.dev0 dev_0
mnefun 0.1 dev_0
more-itertools 8.6.0 pyhd8ed1ab_0 conda-forge
mysql-common 8.0.21 2 conda-forge
mysql-libs 8.0.21 hf3661c5_2 conda-forge
nb_conda_kernels 2.3.0 py38h32f6830_3 conda-forge
nbclient 0.5.1 py_0 conda-forge
nbconvert 6.0.7 py38h32f6830_2 conda-forge
nbformat 5.0.8 py_0 conda-forge
nccl 2.7.8.1 hc6a2c23_1 conda-forge
ncurses 6.2 he1b5a44_2 conda-forge
neo 0.9.0 pypi_0 pypi
nest-asyncio 1.4.2 pyhd8ed1ab_0 conda-forge
networkx 2.5 py_0 conda-forge
nibabel 3.2.0 pypi_0 pypi
nilearn 0.6.2 pypi_0 pypi
notebook 6.1.4 py38h32f6830_1 conda-forge
nspr 4.29 he1b5a44_1 conda-forge
nss 3.58 h27285de_1 conda-forge
numba 0.51.2 py38hc5bc63f_0 conda-forge
numexpr 2.7.1 py38hc5bc63f_3 conda-forge
numpy 1.19.2 py38hf89b668_1 conda-forge
numpydoc 1.0.0.dev0 pypi_0 pypi
olefile 0.46 pyh9f0ad1d_1 conda-forge
openjpeg 2.3.1 h981e76c_3 conda-forge
openssl 1.1.1i h7f98852_0 conda-forge
oset 0.1.3 pypi_0 pypi
packaging 20.4 pyh9f0ad1d_0 conda-forge
pandas 1.1.4 py38h0ef3d22_0 conda-forge
pandoc 2.11.0.4 hd18ef5c_0 conda-forge
pandocfilters 1.4.2 py_1 conda-forge
parso 0.7.0 pyh9f0ad1d_0 conda-forge
patsy 0.5.1 py_0 conda-forge
pcre 8.44 he1b5a44_0 conda-forge
pexpect 4.8.0 pyh9f0ad1d_2 conda-forge
pickleshare 0.7.5 py_1003 conda-forge
pillow 8.0.1 py38h9776b28_0 conda-forge
pip 20.2.4 py_0 conda-forge
pixman 0.40.0 h36c2ea0_0 conda-forge
pkginfo 1.6.1 pyh9f0ad1d_0 conda-forge
pluggy 0.13.1 py38h924ce5b_3 conda-forge
pooch 1.3.0 pyhd8ed1ab_0 conda-forge
prometheus_client 0.8.0 pyh9f0ad1d_0 conda-forge
prompt-toolkit 3.0.8 py_0 conda-forge
prompt_toolkit 3.0.8 0 conda-forge
psutil 5.7.3 py38h8df0ef7_0 conda-forge
pthread-stubs 0.4 h14c3975_1001 conda-forge
ptyprocess 0.6.0 py_1001 conda-forge
py 1.9.0 pyh9f0ad1d_0 conda-forge
pybtex 0.23.0 pypi_0 pypi
pybtex-docutils 0.2.2 pypi_0 pypi
pycodestyle 2.6.0 pyh9f0ad1d_0 conda-forge
pycparser 2.20 pyh9f0ad1d_2 conda-forge
pydocstyle 5.1.1 pypi_0 pypi
pyface 7.1.0 pyh9f0ad1d_0 conda-forge
pyflakes 2.2.0 pyh9f0ad1d_0 conda-forge
pygments 2.7.2 py_0 conda-forge
pyopenssl 19.1.0 py_1 conda-forge
pyparsing 2.4.7 pyh9f0ad1d_0 conda-forge
pyqt 5.12.3 py38ha8c2ead_4 conda-forge
pyqt5-sip 4.19.18 pypi_0 pypi
pyqtchart 5.12 pypi_0 pypi
pyqtwebengine 5.12.1 pypi_0 pypi
pyrsistent 0.17.3 py38h1e0a361_1 conda-forge
pyside2 5.13.2 py38h3b90aee_3 conda-forge
pysocks 1.7.1 py38h924ce5b_2 conda-forge
pysurfer 0.11.0 pypi_0 pypi
pytest 6.1.2 py38h578d9bd_0 conda-forge
pytest-cov 2.10.1 pyh9f0ad1d_0 conda-forge
pytest-forked 1.2.0 pyh9f0ad1d_0 conda-forge
pytest-harvest 1.10.0 pypi_0 pypi
pytest-mock 3.3.1 py_0 conda-forge
pytest-sugar 0.9.4 pypi_0 pypi
pytest-timeout 1.4.2 pyh9f0ad1d_0 conda-forge
pytest-xdist 2.1.0 py_0 conda-forge
python 3.8.6 h852b56e_0_cpython conda-forge
python-dateutil 2.8.1 py_0 conda-forge
python-picard 0.4 pypi_0 pypi
python_abi 3.8 1_cp38 conda-forge
pytz 2020.4 pyhd8ed1ab_0 conda-forge
pyvista 0.26.1 pypi_0 pypi
pyvistaqt 0.2.0 pypi_0 pypi
pywavelets 1.1.1 py38hab2c0dc_3 conda-forge
pyyaml 5.3.1 py38h8df0ef7_1 conda-forge
pyzmq 19.0.2 py38ha71036d_2 conda-forge
qt 5.12.9 h1f2b2cb_0 conda-forge
qtconsole 4.7.7 pyh9f0ad1d_0 conda-forge
qtpy 1.9.0 py_0 conda-forge
quantities 0.12.4 pypi_0 pypi
radian 0.5.8 pypi_0 pypi
rchitect 0.3.28 pypi_0 pypi
readline 8.0 he28a2e2_2 conda-forge
readme_renderer 27.0 pyh9f0ad1d_0 conda-forge
requests 2.24.0 pyh9f0ad1d_0 conda-forge
requests-toolbelt 0.9.1 py_0 conda-forge
rfc3986 1.4.0 pyh9f0ad1d_0 conda-forge
rstcheck 3.3.1 pypi_0 pypi
scikit-image 0.17.2 py38h0ef3d22_4 conda-forge
scikit-learn 0.23.2 py38h5d63f67_2 conda-forge
scipy 1.5.3 py38hb2138dd_0 conda-forge
scooby 0.5.6 pypi_0 pypi
seaborn 0.11.0 ha770c72_1 conda-forge
seaborn-base 0.11.0 pyhd8ed1ab_1 conda-forge
secretstorage 3.1.2 py38h32f6830_2 conda-forge
send2trash 1.5.0 py_0 conda-forge
setuptools 49.6.0 py38h924ce5b_2 conda-forge
six 1.15.0 pyh9f0ad1d_0 conda-forge
sklearn 0.0 pypi_0 pypi
snakeviz 2.1.0 pyh9f0ad1d_0 conda-forge
snappy 1.1.8 he1b5a44_3 conda-forge
snowballstemmer 2.0.0 py_0 conda-forge
soupsieve 2.0.1 py_1 conda-forge
sphinx 3.3.0 pyhd8ed1ab_0 conda-forge
sphinx-gallery 0.8.1 pypi_0 pypi
sphinx_bootstrap_theme 0.8.0 py_0 conda-forge
sphinx_fontawesome 0.0.6 pyh8c360ce_0 conda-forge
sphinxcontrib-applehelp 1.0.2 py_0 conda-forge
sphinxcontrib-bibtex 2.0.0 pypi_0 pypi
sphinxcontrib-devhelp 1.0.2 py_0 conda-forge
sphinxcontrib-htmlhelp 1.0.3 py_0 conda-forge
sphinxcontrib-jsmath 1.0.1 py_0 conda-forge
sphinxcontrib-qthelp 1.0.3 py_0 conda-forge
sphinxcontrib-serializinghtml 1.1.4 py_0 conda-forge
sphobjinv 2.0.1 pypi_0 pypi
spyder-kernels 1.9.4 py38h32f6830_0 conda-forge
sqlalchemy 1.3.20 py38h1e0a361_0 conda-forge
sqlite 3.33.0 h4cf870e_1 conda-forge
sswef 0.1 dev_0
statsmodels 0.12.1 py38h0b5ebd8_1 conda-forge
termcolor 1.1.0 pypi_0 pypi
terminado 0.9.1 py38h32f6830_1 conda-forge
testpath 0.4.4 py_0 conda-forge
threadpoolctl 2.1.0 pyh5ca1d4c_0 conda-forge
tifffile 2020.10.1 py_0 conda-forge
tinycss2 1.0.2 py_1 conda-forge
tk 8.6.10 hed695b0_1 conda-forge
toml 0.10.2 pyhd8ed1ab_0 conda-forge
toolz 0.11.1 py_0 conda-forge
tornado 6.1 py38h25fe258_0 conda-forge
tqdm 4.46.0 pypi_0 pypi
traitlets 5.0.5 py_0 conda-forge
traits 6.1.1 py38h1e0a361_0 conda-forge
traitsui 7.1.0 pyh9f0ad1d_0 conda-forge
twine 3.2.0 py38h32f6830_1 conda-forge
typing_extensions 3.7.4.3 py_0 conda-forge
urllib3 1.25.11 py_0 conda-forge
viscm 0.9 pyh5ca1d4c_0 conda-forge
vtk 9.0.1 pypi_0 pypi
wcwidth 0.2.5 pyh9f0ad1d_2 conda-forge
webencodings 0.5.1 py_1 conda-forge
wheel 0.35.1 pyh9f0ad1d_0 conda-forge
widgetsnbextension 3.5.1 py38h32f6830_4 conda-forge
wurlitzer 2.0.0 py38h32f6830_2 conda-forge
xarray 0.16.1 py_0 conda-forge
xlrd 1.2.0 pyh9f0ad1d_1 conda-forge
xorg-kbproto 1.0.7 h14c3975_1002 conda-forge
xorg-libice 1.0.10 h516909a_0 conda-forge
xorg-libsm 1.2.3 h84519dc_1000 conda-forge
xorg-libx11 1.6.12 h516909a_0 conda-forge
xorg-libxau 1.0.9 h14c3975_0 conda-forge
xorg-libxdmcp 1.1.3 h516909a_0 conda-forge
xorg-libxext 1.3.4 h516909a_0 conda-forge
xorg-libxrender 0.9.10 h516909a_1002 conda-forge
xorg-renderproto 0.11.1 h14c3975_1002 conda-forge
xorg-xextproto 7.3.0 h14c3975_1002 conda-forge
xorg-xproto 7.0.31 h14c3975_1007 conda-forge
xz 5.2.5 h516909a_1 conda-forge
yaml 0.2.5 h516909a_0 conda-forge
zeromq 4.3.3 he1b5a44_2 conda-forge
zfp 0.5.5 he1b5a44_4 conda-forge
zipp 3.4.0 py_0 conda-forge
zlib 1.2.11 h516909a_1010 conda-forge
zstd 1.4.5 h6597ccf_2 conda-forge

Additional notes

FWIW, ultimately I will want to use the Pooch class; I had similar difficulties getting this to work with pooch.Pooch.fetch() however. My basic problem seems to be that when using a processor like Unzip() or Untar(), there is no option to put the output of the unzipping/untarring in an arbitrary location (i.e., there is only a suffix attribute). I think that if it were possible to do this:

processor = pooch.Untar(folder_to_put_untarred_content_into='/some/arbitrary/path')

...then my difficulties would go away (i.e., for my use case, if I could specify where to untar the archive, then I wouldn't need to bother with the members parameter at all, so I wouldn't hit the problem of members nested within subfolders). I suspect that implementing the target directory for Untar() is probably easier anyway, though I can imagine cases where both capabilities would be useful.

@welcome
Copy link

welcome bot commented Dec 31, 2020

👋 Thanks for opening your first issue here! Please make sure you filled out the template with as much detail as possible.

You might also want to take a look at our Contributing Guide and Code of Conduct.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant