Repository: NVIDIA-Merlin/dataloader (language: python)

Issue:
Add schema setter to enable changing loader features on Loader instance
- Adds schema properties
  - `input_schema`, `output_schema`
  - And setter for the `input_schema` so that `Loader.input_schema = <new_schema>` can be used to change the features that are loaded.

## Motivation

In Merlin Models https://github.com/NVIDIA-Merlin/models/pull/904 would like to be able to automatically detect the case where a loader constructed that will load more features than required by the model. And enable us to update the loader instance to only  load the required features


Discussion / hints:
<details><summary>Click to view CI Results</summary><pre>GitHub pull request #86 of commit 824d77d03367842a2a47a7748737a473bd8be6e3, no merge conflicts.
Running as SYSTEM
Setting status of 824d77d03367842a2a47a7748737a473bd8be6e3 to PENDING with url http://merlin-infra1.nvidia.com:8080/job/merlin_dataloader/157/ and message: 'Pending'
Using context: Jenkins
Building on the built-in node in workspace /var/jenkins_home/jobs/merlin_dataloader/workspace
using credential systems-login
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/NVIDIA-Merlin/dataloader # timeout=10
Fetching upstream changes from https://github.com/NVIDIA-Merlin/dataloader
 > git --version # timeout=10
using GIT_ASKPASS to set credentials login for merlin-systems
 > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/dataloader +refs/pull/86/*:refs/remotes/origin/pr/86/* # timeout=10
 > git rev-parse 824d77d03367842a2a47a7748737a473bd8be6e3^{commit} # timeout=10
Checking out Revision 824d77d03367842a2a47a7748737a473bd8be6e3 (detached)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 824d77d03367842a2a47a7748737a473bd8be6e3 # timeout=10
Commit message: "Add schema property and setter to enable changing loaded features"
 > git rev-list --no-walk ee1ad8af18c96bf9ff9a4189b79f18020ac696f9 # timeout=10
[workspace] $ /bin/bash /tmp/jenkins13833113421793335282.sh
GLOB sdist-make: /var/jenkins_home/workspace/merlin_dataloader/dataloader/setup.py
test-gpu recreate: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
test-gpu installdeps: -rrequirements/dev.txt, pytest, pytest-cov
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu inst: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/.tmp/package/1/merlin-dataloader-0.0.2+28.g824d77d.zip
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu installed: absl-py==1.2.0,aiohttp==3.8.1,aiosignal==1.2.0,alabaster==0.7.12,alembic==1.8.1,anyio==3.6.1,argon2-cffi==21.3.0,argon2-cffi-bindings==21.2.0,astroid==2.5.6,asttokens==2.0.8,astunparse==1.6.3,asv==0.5.1,asvdb==0.4.2,async-timeout==4.0.2,attrs==22.1.0,autopage==0.5.1,awscli==1.27.30,Babel==2.10.3,backcall==0.2.0,beautifulsoup4==4.11.1,betterproto==1.2.5,black==22.6.0,bleach==5.0.1,boto3==1.24.75,botocore==1.29.30,Brotli==1.0.9,cachetools==5.2.0,certifi==2019.11.28,cffi==1.15.1,chardet==3.0.4,charset-normalizer==2.1.1,clang==5.0,click==8.1.3,cliff==4.1.0,cloudpickle==2.2.0,cmaes==0.9.0,cmake==3.24.1.1,cmd2==2.4.2,colorama==0.4.4,colorlog==6.7.0,contourpy==1.0.5,coverage==6.5.0,cpplint==1.6.1,cryptography==38.0.4,cuda-python==11.7.1,cupy-cuda117==10.6.0,cycler==0.11.0,Cython==0.29.32,dask==2022.1.1,dbus-python==1.2.16,debugpy==1.6.3,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.6,distributed==2022.5.1,distro==1.7.0,dm-tree==0.1.6,docker-pycreds==0.4.0,docutils==0.16,emoji==1.7.0,entrypoints==0.4,execnet==1.9.0,executing==1.0.0,faiss==1.7.2,faiss-gpu==1.7.2,fastai==2.7.9,fastapi==0.85.0,fastavro==1.6.1,fastcore==1.5.27,fastdownload==0.0.7,fastjsonschema==2.16.1,fastprogress==1.0.3,fastrlock==0.8,feast==0.19.4,fiddle==0.2.2,filelock==3.8.0,flatbuffers==1.12,fonttools==4.37.3,frozenlist==1.3.1,fsspec==2022.5.0,gast==0.4.0,gevent==21.12.0,geventhttpclient==2.0.2,gitdb==4.0.9,GitPython==3.1.27,google==3.0.0,google-api-core==2.10.1,google-auth==2.11.1,google-auth-oauthlib==0.4.6,google-pasta==0.2.0,googleapis-common-protos==1.52.0,graphviz==0.20.1,greenlet==1.1.3,grpcio==1.41.0,grpcio-channelz==1.49.0,grpcio-reflection==1.48.1,grpclib==0.4.3,h11==0.13.0,h2==4.1.0,h5py==3.7.0,HeapDict==1.0.1,horovod==0.26.1,hpack==4.0.0,httptools==0.5.0,hugectr2onnx==0.0.0,huggingface-hub==0.9.1,hyperframe==6.0.1,idna==2.8,imagesize==1.4.1,implicit==0.6.1,importlib-metadata==4.12.0,importlib-resources==5.9.0,iniconfig==1.1.1,ipykernel==6.15.3,ipython==8.5.0,ipython-genutils==0.2.0,ipywidgets==7.7.0,jedi==0.18.1,Jinja2==3.1.2,jmespath==1.0.1,joblib==1.2.0,json5==0.9.10,jsonschema==4.16.0,jupyter-cache==0.4.3,jupyter-core==4.11.1,jupyter-server==1.18.1,jupyter-server-mathjax==0.2.5,jupyter-sphinx==0.3.2,jupyter_client==7.3.5,jupyterlab==3.4.7,jupyterlab-pygments==0.2.2,jupyterlab-widgets==1.1.0,jupyterlab_server==2.15.1,keras==2.9.0,Keras-Preprocessing==1.1.2,kiwisolver==1.4.4,lazy-object-proxy==1.8.0,libclang==14.0.6,libcst==0.4.7,lightfm==1.16,lightgbm==3.3.2,linkify-it-py==1.0.3,llvmlite==0.39.1,locket==1.0.0,lxml==4.9.1,Mako==1.2.4,Markdown==3.4.1,markdown-it-py==1.1.0,MarkupSafe==2.1.1,matplotlib==3.6.0,matplotlib-inline==0.1.6,mdit-py-plugins==0.2.8,merlin-core==0.6.0+1.g5926fcf,merlin-dataloader==0.0.2+28.g824d77d,merlin-models==0.7.0+11.g280956aa4,merlin-systems==0.5.0+4.g15074ad,mistune==2.0.4,mmh3==3.0.0,moto==4.0.11,mpi4py==3.1.3,msgpack==1.0.4,multidict==6.0.2,mypy-extensions==0.4.3,myst-nb==0.13.2,myst-parser==0.15.2,natsort==8.1.0,nbclassic==0.4.3,nbclient==0.6.8,nbconvert==7.0.0,nbdime==3.1.1,nbformat==5.5.0,nbsphinx==0.8.10,nest-asyncio==1.5.5,ninja==1.10.2.3,notebook==6.4.12,notebook-shim==0.1.0,npy-append-array==0.9.13,numba==0.56.2,numpy==1.22.4,nvidia-pyindex==1.0.9,# Editable install with no version control (nvtabular==1.4.0+8.g95e12d347),-e /usr/local/lib/python3.8/dist-packages,nvtx==0.2.5,oauthlib==3.2.1,oldest-supported-numpy==2022.8.16,onnx==1.12.0,onnxruntime==1.11.1,opt-einsum==3.3.0,optuna==3.0.4,packaging==21.3,pandas==1.3.5,pandavro==1.5.2,pandocfilters==1.5.0,parso==0.8.3,partd==1.3.0,pathtools==0.1.2,pbr==5.11.0,pexpect==4.8.0,pickleshare==0.7.5,Pillow==9.2.0,pkgutil_resolve_name==1.3.10,platformdirs==2.5.2,plotly==5.11.0,pluggy==1.0.0,prettytable==3.5.0,prometheus-client==0.14.1,promise==2.3,prompt-toolkit==3.0.31,proto-plus==1.19.6,protobuf==3.19.5,psutil==5.9.2,ptyprocess==0.7.0,pure-eval==0.2.2,py==1.11.0,pyarrow==7.0.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pybind11==2.10.0,pycparser==2.21,pydantic==1.10.2,pydot==1.4.2,Pygments==2.13.0,PyGObject==3.36.0,pynvml==11.4.1,pyparsing==3.0.9,pyperclip==1.8.2,pyrsistent==0.18.1,pytest==7.1.3,pytest-cov==4.0.0,pytest-xdist==3.1.0,python-apt==2.0.0+ubuntu0.20.4.8,python-dateutil==2.8.2,python-dotenv==0.21.0,python-rapidjson==1.8,pytz==2022.2.1,PyYAML==5.4.1,pyzmq==24.0.0,regex==2022.9.13,requests==2.22.0,requests-oauthlib==1.3.1,requests-unixsocket==0.2.0,responses==0.22.0,rsa==4.7.2,s3fs==2022.2.0,s3transfer==0.6.0,sacremoses==0.0.53,scikit-build==0.15.0,scikit-learn==1.1.2,scipy==1.8.1,seedir==0.3.0,Send2Trash==1.8.0,sentry-sdk==1.9.8,setproctitle==1.3.2,setuptools-scm==7.0.5,shortuuid==1.0.9,six==1.15.0,sklearn==0.0,smmap==5.0.0,sniffio==1.3.0,snowballstemmer==2.2.0,sortedcontainers==2.4.0,soupsieve==2.3.2.post1,Sphinx==5.3.0,sphinx-markdown-tables==0.0.15,sphinx-multiversion==0.2.4,sphinx-rtd-theme==1.1.1,sphinx-togglebutton==0.3.1,sphinx_external_toc==0.3.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-copydirs @ git+https://github.com/mikemckiernan/sphinxcontrib-copydirs.git@8d23fdd32ee0b2f2d2ee091ac8eb8c1e88271dd4,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,SQLAlchemy==1.4.45,stack-data==0.5.0,starlette==0.20.4,stevedore==4.1.1,stringcase==1.2.0,supervisor==4.1.0,tabulate==0.8.10,tblib==1.7.0,tdqm==0.0.1,tenacity==8.0.1,tensorboard==2.9.1,tensorboard-data-server==0.6.1,tensorboard-plugin-wit==1.8.1,tensorflow==2.9.2,tensorflow-estimator==2.9.0,tensorflow-gpu==2.9.2,tensorflow-io-gcs-filesystem==0.27.0,tensorflow-metadata==1.10.0,termcolor==2.0.1,terminado==0.15.0,testbook==0.4.2,threadpoolctl==3.1.0,tinycss2==1.1.1,tokenizers==0.10.3,toml==0.10.2,tomli==2.0.1,toolz==0.12.0,torch==1.12.1+cu113,torchmetrics==0.3.2,tornado==6.2,tox==3.26.0,tqdm==4.64.1,traitlets==5.4.0,transformers==4.12.0,transformers4rec==0.1.12+2.gbcc939255,treelite==2.3.0,treelite-runtime==2.3.0,tritonclient==2.25.0,types-toml==0.10.8.1,typing-inspect==0.8.0,typing_extensions==4.3.0,uc-micro-py==1.0.1,urllib3==1.26.12,uvicorn==0.18.3,uvloop==0.17.0,versioneer==0.20,virtualenv==20.16.5,wandb==0.13.3,watchfiles==0.17.0,wcwidth==0.2.5,webencodings==0.5.1,websocket-client==1.4.1,websockets==10.3,Werkzeug==2.2.2,widgetsnbextension==3.6.0,wrapt==1.12.1,xgboost==1.6.2,xmltodict==0.13.0,yarl==1.8.1,zict==2.2.0,zipp==3.8.1,zope.event==4.5.0,zope.interface==5.4.0
test-gpu run-test-pre: PYTHONHASHSEED='2059056053'
test-gpu run-test: commands[0] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/core.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/core.git
  Cloning https://github.com/NVIDIA-Merlin/core.git to /tmp/pip-req-build-18zngniq
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/core.git /tmp/pip-req-build-18zngniq
  Resolved https://github.com/NVIDIA-Merlin/core.git to commit 644d4e302f6cd27f6392cc9d862be7b18425cb1d
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (1.10.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (2022.3.0)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (2022.3.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (0.55.1)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (1.2.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (2022.5.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (21.3)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (4.64.1)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (3.19.5)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (1.3.5)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (7.0.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (1.2.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (5.4.1)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (0.12.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.2.0)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.7.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (5.8.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (3.0.3)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.4.0)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.0.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.0.4)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (8.1.3)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (6.2)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+18.g644d4e3) (0.38.1)
Requirement already satisfied: numpy<1.22,>=1.18 in /var/jenkins_home/.local/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+18.g644d4e3) (1.20.3)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+18.g644d4e3) (65.5.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core==0.9.0+18.g644d4e3) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (2022.2.1)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (4.0.0)
Building wheels for collected packages: merlin-core
  Building wheel for merlin-core (pyproject.toml): started
  Building wheel for merlin-core (pyproject.toml): finished with status 'done'
  Created wheel for merlin-core: filename=merlin_core-0.9.0+18.g644d4e3-py3-none-any.whl size=119759 sha256=70e0363543bb7156d7ba3262d1019cb7d0fed72b944d0485e400de7d74e20a3c
  Stored in directory: /tmp/pip-ephem-wheel-cache-ubzrwoma/wheels/c8/38/16/a6968787eafcec5fa772148af8408b089562f71af0752e8e84
Successfully built merlin-core
Installing collected packages: merlin-core
  Attempting uninstall: merlin-core
    Found existing installation: merlin-core 0.9.0
    Uninstalling merlin-core-0.9.0:
      Successfully uninstalled merlin-core-0.9.0
Successfully installed merlin-core-0.9.0+18.g644d4e3
test-gpu run-test: commands[1] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/nvtabular.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/nvtabular.git
  Cloning https://github.com/NVIDIA-Merlin/nvtabular.git to /tmp/pip-req-build-qa82qp5n
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/nvtabular.git /tmp/pip-req-build-qa82qp5n
  Resolved https://github.com/NVIDIA-Merlin/nvtabular.git to commit 985510ef0f529aa54a8ac29414d3ed71542c4c62
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from nvtabular==1.6.0+22.g985510ef) (1.8.1)
Requirement already satisfied: merlin-dataloader>=0.0.2 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.0.2+28.g824d77d)
Requirement already satisfied: merlin-core>=0.2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.9.0+18.g644d4e3)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.10.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.55.1)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.5.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (21.3)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.64.1)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.19.5)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.3.5)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (7.0.0)
Requirement already satisfied: numpy<1.25.0,>=1.17.3 in /var/jenkins_home/.local/lib/python3.8/site-packages (from scipy->nvtabular==1.6.0+22.g985510ef) (1.20.3)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.4.1)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.12.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.7.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.8.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.3)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.4.0)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.4)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (8.1.3)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.2)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.38.1)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (65.5.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.2.1)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.0.0)
Building wheels for collected packages: nvtabular
  Building wheel for nvtabular (pyproject.toml): started
  Building wheel for nvtabular (pyproject.toml): finished with status 'done'
  Created wheel for nvtabular: filename=nvtabular-1.6.0+22.g985510ef-cp38-cp38-linux_x86_64.whl size=257120 sha256=a891b5c45487962b9077d848e28e2cbc9ed520e639481b84eb7e0f640a1c6fb8
  Stored in directory: /tmp/pip-ephem-wheel-cache-m1bttzvd/wheels/8f/d9/f9/30f2cdc5bf8787fae6fdfe55afd6e1b493e619ec32c32ec40b
Successfully built nvtabular
Installing collected packages: nvtabular
  Attempting uninstall: nvtabular
    Found existing installation: nvtabular 1.1.1
    Not uninstalling nvtabular at /var/jenkins_home/.local/lib/python3.8/site-packages, outside environment /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
    Can't uninstall 'nvtabular'. No files were found to uninstall.
Successfully installed nvtabular-1.6.0+22.g985510ef
test-gpu run-test: commands[2] | python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
cachedir: .tox/test-gpu/.pytest_cache
rootdir: /var/jenkins_home/workspace/merlin_dataloader/dataloader, configfile: pyproject.toml
plugins: anyio-3.5.0, cov-4.0.0, xdist-3.1.0
collected 99 items / 1 skipped

tests/unit/dataloader/test_dataloader_backend.py ....                    [  4%]
tests/unit/dataloader/test_tf_dataloader.py ............................ [ 32%]
.........FFs....                                                         [ 48%]
tests/unit/dataloader/test_tf_embeddings.py FFFFFFFFFFFF                 [ 60%]
tests/unit/dataloader/test_torch_dataloader.py ......................... [ 85%]
                                                                         [ 85%]
tests/unit/dataloader/test_torch_embeddings.py FFFFFFFFFFFF              [ 97%]
tests/examples/test_getting_started_pytorch.py .                         [ 98%]
tests/examples/test_getting_started_tensorflow.py .                      [100%]

=================================== FAILURES ===================================
__________________________ test_sparse_tensors[False] __________________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_sparse_tensors_False_0')
sparse_dense = False

    @pytest.mark.parametrize("sparse_dense", [False, True])
    def test_sparse_tensors(tmpdir, sparse_dense):
        # create small dataset, add values to sparse_list
        json_sample = {
            "conts": {},
            "cats": {
                "spar1": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 2,
                    "multi_max": 4,
                    "multi_avg": 3,
                },
                "spar2": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 3,
                    "multi_max": 5,
                    "multi_avg": 4,
                },
                # "": {"dtype": None, "cardinality": 500, "min_entry_size": 1, "max_entry_size": 5},
            },
            "labels": {"rating": {"dtype": None, "cardinality": 2}},
        }
        datagen = pytest.importorskip("nvtabular.tools.data_gen")
    
        cols = datagen._get_cols_from_schema(json_sample)
        df_gen = datagen.DatasetGen(datagen.UniformDistro(), gpu_frac=0.0001)
        target_path = os.path.join(tmpdir, "input/")
        os.mkdir(target_path)
>       df_files = df_gen.full_df_create(10000, cols, output=target_path)

tests/unit/dataloader/test_tf_dataloader.py:486: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:245: in full_df_create
    df_single = self.create_df(
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:225: in create_df
    self.create_cats(size, cats_rep=cats_rep, entries=entries),
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:160: in create_cats
    df = concat([df, ser], axis=1)
.tox/test-gpu/lib/python3.8/site-packages/merlin/core/dispatch.py:487: in concat
    return cudf.core.reshape.concat(objs, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

objs = [Empty DataFrame
Columns: []
Index: [], <cudf.core.column.lists.ListColumn object at 0x7f53fa727bc0>
[
  [
    43,
    40,
    4
  ]
]
dtype: list]
axis = 1, join = 'outer', ignore_index = False, sort = None

    def concat(objs, axis=0, join="outer", ignore_index=False, sort=None):
        """Concatenate DataFrames, Series, or Indices row-wise.
    
        Parameters
        ----------
        objs : list of DataFrame, Series, or Index
        axis : {0/'index', 1/'columns'}, default 0
            The axis to concatenate along.
        join : {'inner', 'outer'}, default 'outer'
            How to handle indexes on other axis (or axes).
        ignore_index : bool, default False
            Set True to ignore the index of the *objs* and provide a
            default range index instead.
        sort : bool, default False
            Sort non-concatenation axis if it is not already aligned.
    
        Returns
        -------
        A new object of like type with rows from each object in ``objs``.
    
        Examples
        --------
        Combine two ``Series``.
    
        >>> import cudf
        >>> s1 = cudf.Series(['a', 'b'])
        >>> s2 = cudf.Series(['c', 'd'])
        >>> s1
        0    a
        1    b
        dtype: object
        >>> s2
        0    c
        1    d
        dtype: object
        >>> cudf.concat([s1, s2])
        0    a
        1    b
        0    c
        1    d
        dtype: object
    
        Clear the existing index and reset it in the
        result by setting the ``ignore_index`` option to ``True``.
    
        >>> cudf.concat([s1, s2], ignore_index=True)
        0    a
        1    b
        2    c
        3    d
        dtype: object
    
        Combine two DataFrame objects with identical columns.
    
        >>> df1 = cudf.DataFrame([['a', 1], ['b', 2]],
        ...                    columns=['letter', 'number'])
        >>> df1
          letter  number
        0      a       1
        1      b       2
        >>> df2 = cudf.DataFrame([['c', 3], ['d', 4]],
        ...                    columns=['letter', 'number'])
        >>> df2
          letter  number
        0      c       3
        1      d       4
        >>> cudf.concat([df1, df2])
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine DataFrame objects with overlapping columns and return
        everything. Columns outside the intersection will
        be filled with ``null`` values.
    
        >>> df3 = cudf.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],
        ...                    columns=['letter', 'number', 'animal'])
        >>> df3
          letter  number animal
        0      c       3    cat
        1      d       4    dog
        >>> cudf.concat([df1, df3], sort=False)
          letter  number animal
        0      a       1   <NA>
        1      b       2   <NA>
        0      c       3    cat
        1      d       4    dog
    
        Combine ``DataFrame`` objects with overlapping columns
        and return only those that are shared by passing ``inner`` to
        the ``join`` keyword argument.
    
        >>> cudf.concat([df1, df3], join="inner")
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine ``DataFrame`` objects horizontally along the
        x axis by passing in ``axis=1``.
    
        >>> df4 = cudf.DataFrame([['bird', 'polly'], ['monkey', 'george']],
        ...                    columns=['animal', 'name'])
        >>> df4
           animal    name
        0    bird   polly
        1  monkey  george
        >>> cudf.concat([df1, df4], axis=1)
          letter  number  animal    name
        0      a       1    bird   polly
        1      b       2  monkey  george
        """
        # TODO: Do we really need to have different error messages for an empty
        # list and a list of None?
        if not objs:
            raise ValueError("No objects to concatenate")
    
        objs = [obj for obj in objs if obj is not None]
    
        if not objs:
            raise ValueError("All objects passed were None")
    
        # Return for single object
        if len(objs) == 1:
            obj = objs[0]
    
            if ignore_index:
                if axis == 1:
                    result = cudf.DataFrame._from_data(
                        data=obj._data.copy(deep=True),
                        index=obj.index.copy(deep=True),
                    )
                    # The DataFrame constructor for dict-like data (such as the
                    # ColumnAccessor given by obj._data here) will drop any columns
                    # in the data that are not in `columns`, so we have to rename
                    # after construction.
                    result.columns = pd.RangeIndex(len(obj._data.names))
                elif axis == 0:
                    if isinstance(obj, cudf.Series):
                        result = cudf.Series._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
                    elif isinstance(obj, pd.Series):
                        result = cudf.Series(
                            data=obj,
                            index=cudf.RangeIndex(len(obj)),
                        )
                    else:
                        result = cudf.DataFrame._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
            else:
                result = obj.copy()
    
            return result.sort_index(axis=axis) if sort else result
    
        # Retrieve the base types of `objs`. In order to support sub-types
        # and object wrappers, we use `isinstance()` instead of comparing
        # types directly
        typs = set()
        for o in objs:
            if isinstance(o, cudf.MultiIndex):
                typs.add(cudf.MultiIndex)
            elif isinstance(o, cudf.BaseIndex):
                typs.add(type(o))
            elif isinstance(o, cudf.DataFrame):
                typs.add(cudf.DataFrame)
            elif isinstance(o, cudf.Series):
                typs.add(cudf.Series)
            else:
>               raise TypeError(f"cannot concatenate object of type {type(o)}")
E               TypeError: cannot concatenate object of type <class 'cudf.core.column.lists.ListColumn'>

/usr/local/lib/python3.8/dist-packages/cudf/core/reshape.py:288: TypeError
__________________________ test_sparse_tensors[True] ___________________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_sparse_tensors_True_0')
sparse_dense = True

    @pytest.mark.parametrize("sparse_dense", [False, True])
    def test_sparse_tensors(tmpdir, sparse_dense):
        # create small dataset, add values to sparse_list
        json_sample = {
            "conts": {},
            "cats": {
                "spar1": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 2,
                    "multi_max": 4,
                    "multi_avg": 3,
                },
                "spar2": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 3,
                    "multi_max": 5,
                    "multi_avg": 4,
                },
                # "": {"dtype": None, "cardinality": 500, "min_entry_size": 1, "max_entry_size": 5},
            },
            "labels": {"rating": {"dtype": None, "cardinality": 2}},
        }
        datagen = pytest.importorskip("nvtabular.tools.data_gen")
    
        cols = datagen._get_cols_from_schema(json_sample)
        df_gen = datagen.DatasetGen(datagen.UniformDistro(), gpu_frac=0.0001)
        target_path = os.path.join(tmpdir, "input/")
        os.mkdir(target_path)
>       df_files = df_gen.full_df_create(10000, cols, output=target_path)

tests/unit/dataloader/test_tf_dataloader.py:486: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:245: in full_df_create
    df_single = self.create_df(
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:225: in create_df
    self.create_cats(size, cats_rep=cats_rep, entries=entries),
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:160: in create_cats
    df = concat([df, ser], axis=1)
.tox/test-gpu/lib/python3.8/site-packages/merlin/core/dispatch.py:487: in concat
    return cudf.core.reshape.concat(objs, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

objs = [Empty DataFrame
Columns: []
Index: [], <cudf.core.column.lists.ListColumn object at 0x7f53d84ddd40>
[
  [
    10,
    0
  ]
]
dtype: list]
axis = 1, join = 'outer', ignore_index = False, sort = None

    def concat(objs, axis=0, join="outer", ignore_index=False, sort=None):
        """Concatenate DataFrames, Series, or Indices row-wise.
    
        Parameters
        ----------
        objs : list of DataFrame, Series, or Index
        axis : {0/'index', 1/'columns'}, default 0
            The axis to concatenate along.
        join : {'inner', 'outer'}, default 'outer'
            How to handle indexes on other axis (or axes).
        ignore_index : bool, default False
            Set True to ignore the index of the *objs* and provide a
            default range index instead.
        sort : bool, default False
            Sort non-concatenation axis if it is not already aligned.
    
        Returns
        -------
        A new object of like type with rows from each object in ``objs``.
    
        Examples
        --------
        Combine two ``Series``.
    
        >>> import cudf
        >>> s1 = cudf.Series(['a', 'b'])
        >>> s2 = cudf.Series(['c', 'd'])
        >>> s1
        0    a
        1    b
        dtype: object
        >>> s2
        0    c
        1    d
        dtype: object
        >>> cudf.concat([s1, s2])
        0    a
        1    b
        0    c
        1    d
        dtype: object
    
        Clear the existing index and reset it in the
        result by setting the ``ignore_index`` option to ``True``.
    
        >>> cudf.concat([s1, s2], ignore_index=True)
        0    a
        1    b
        2    c
        3    d
        dtype: object
    
        Combine two DataFrame objects with identical columns.
    
        >>> df1 = cudf.DataFrame([['a', 1], ['b', 2]],
        ...                    columns=['letter', 'number'])
        >>> df1
          letter  number
        0      a       1
        1      b       2
        >>> df2 = cudf.DataFrame([['c', 3], ['d', 4]],
        ...                    columns=['letter', 'number'])
        >>> df2
          letter  number
        0      c       3
        1      d       4
        >>> cudf.concat([df1, df2])
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine DataFrame objects with overlapping columns and return
        everything. Columns outside the intersection will
        be filled with ``null`` values.
    
        >>> df3 = cudf.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],
        ...                    columns=['letter', 'number', 'animal'])
        >>> df3
          letter  number animal
        0      c       3    cat
        1      d       4    dog
        >>> cudf.concat([df1, df3], sort=False)
          letter  number animal
        0      a       1   <NA>
        1      b       2   <NA>
        0      c       3    cat
        1      d       4    dog
    
        Combine ``DataFrame`` objects with overlapping columns
        and return only those that are shared by passing ``inner`` to
        the ``join`` keyword argument.
    
        >>> cudf.concat([df1, df3], join="inner")
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine ``DataFrame`` objects horizontally along the
        x axis by passing in ``axis=1``.
    
        >>> df4 = cudf.DataFrame([['bird', 'polly'], ['monkey', 'george']],
        ...                    columns=['animal', 'name'])
        >>> df4
           animal    name
        0    bird   polly
        1  monkey  george
        >>> cudf.concat([df1, df4], axis=1)
          letter  number  animal    name
        0      a       1    bird   polly
        1      b       2  monkey  george
        """
        # TODO: Do we really need to have different error messages for an empty
        # list and a list of None?
        if not objs:
            raise ValueError("No objects to concatenate")
    
        objs = [obj for obj in objs if obj is not None]
    
        if not objs:
            raise ValueError("All objects passed were None")
    
        # Return for single object
        if len(objs) == 1:
            obj = objs[0]
    
            if ignore_index:
                if axis == 1:
                    result = cudf.DataFrame._from_data(
                        data=obj._data.copy(deep=True),
                        index=obj.index.copy(deep=True),
                    )
                    # The DataFrame constructor for dict-like data (such as the
                    # ColumnAccessor given by obj._data here) will drop any columns
                    # in the data that are not in `columns`, so we have to rename
                    # after construction.
                    result.columns = pd.RangeIndex(len(obj._data.names))
                elif axis == 0:
                    if isinstance(obj, cudf.Series):
                        result = cudf.Series._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
                    elif isinstance(obj, pd.Series):
                        result = cudf.Series(
                            data=obj,
                            index=cudf.RangeIndex(len(obj)),
                        )
                    else:
                        result = cudf.DataFrame._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
            else:
                result = obj.copy()
    
            return result.sort_index(axis=axis) if sort else result
    
        # Retrieve the base types of `objs`. In order to support sub-types
        # and object wrappers, we use `isinstance()` instead of comparing
        # types directly
        typs = set()
        for o in objs:
            if isinstance(o, cudf.MultiIndex):
                typs.add(cudf.MultiIndex)
            elif isinstance(o, cudf.BaseIndex):
                typs.add(type(o))
            elif isinstance(o, cudf.DataFrame):
                typs.add(cudf.DataFrame)
            elif isinstance(o, cudf.Series):
                typs.add(cudf.Series)
            else:
>               raise TypeError(f"cannot concatenate object of type {type(o)}")
E               TypeError: cannot concatenate object of type <class 'cudf.core.column.lists.ListColumn'>

/usr/local/lib/python3.8/dist-packages/cudf/core/reshape.py:288: TypeError
_________________ test_embedding_tf_np_mmap_dl_no_lookup[None] _________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_mmap_dl_n0')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_mmap_dl_no_lookup(tmpdir, embedding_ids, np_embeddings_from_pq, cpu):
        batch_size = 10000
        embeddings_file, _ = np_embeddings_from_pq
        cat_names = ["id"]
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TF_MmapNumpyTorchEmbedding(embeddings_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:55: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53fa723c40>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
_________________ test_embedding_tf_np_mmap_dl_no_lookup[cpu] __________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_mmap_dl_n1')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_mmap_dl_no_lookup(tmpdir, embedding_ids, np_embeddings_from_pq, cpu):
        batch_size = 10000
        embeddings_file, _ = np_embeddings_from_pq
        cat_names = ["id"]
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TF_MmapNumpyTorchEmbedding(embeddings_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:55: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53bc6ac8e0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
________________ test_embedding_tf_np_mmap_dl_with_lookup[None] ________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_mmap_dl_w0')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_mmap_dl_with_lookup(tmpdir, rev_embedding_ids, np_embeddings_from_pq, cpu):
        batch_size = 10000
        embeddings_file, id_lookup_file = np_embeddings_from_pq
        cat_names = ["id"]
        embedding_ids = rev_embedding_ids
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TF_MmapNumpyTorchEmbedding(embeddings_file, ids_lookup_npz=id_lookup_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53d84b4b80>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
________________ test_embedding_tf_np_mmap_dl_with_lookup[cpu] _________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_mmap_dl_w1')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_mmap_dl_with_lookup(tmpdir, rev_embedding_ids, np_embeddings_from_pq, cpu):
        batch_size = 10000
        embeddings_file, id_lookup_file = np_embeddings_from_pq
        cat_names = ["id"]
        embedding_ids = rev_embedding_ids
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TF_MmapNumpyTorchEmbedding(embeddings_file, ids_lookup_npz=id_lookup_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:92: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53fd361d30>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
___________________ test_embedding_tf_np_dl_no_lookup[None] ____________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_dl_no_loo0')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_np = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TF_NumpyEmbeddingOperator(embeddings_np)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:129: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53bc77f940>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
____________________ test_embedding_tf_np_dl_no_lookup[cpu] ____________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_dl_no_loo1')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_np = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TF_NumpyEmbeddingOperator(embeddings_np)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:129: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53fd2ea5e0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
__________________ test_embedding_tf_np_dl_with_lookup[None] ___________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_dl_with_l0')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_dl_with_lookup(tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids = rev_embedding_ids
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_np = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[
                TF_NumpyEmbeddingOperator(embeddings_np, id_lookup_table=embedding_ids.to_numpy())
            ],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:167: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f538c58dfd0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
___________________ test_embedding_tf_np_dl_with_lookup[cpu] ___________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_np_dl_with_l1')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_np_dl_with_lookup(tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids = rev_embedding_ids
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_np = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[
                TF_NumpyEmbeddingOperator(embeddings_np, id_lookup_table=embedding_ids.to_numpy())
            ],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:167: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f538c105fa0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
_____________________ test_embedding_tf_dl_no_lookup[None] _____________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_dl_no_lookup0')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
        tf_tensor = tf.convert_to_tensor(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TFEmbeddingOperator(tf_tensor)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:207: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f54b439b0d0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
_____________________ test_embedding_tf_dl_no_lookup[cpu] ______________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_dl_no_lookup1')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
        tf_tensor = tf.convert_to_tensor(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TFEmbeddingOperator(tf_tensor)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:207: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53bc778fa0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
____________________ test_embedding_tf_dl_with_lookup[None] ____________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_dl_with_look0')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_dl_with_lookup(tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids = rev_embedding_ids
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
        tf_tensor = tf.convert_to_tensor(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TFEmbeddingOperator(tf_tensor, id_lookup_table=embedding_ids.to_numpy())],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:246: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f53bc77fe50>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
____________________ test_embedding_tf_dl_with_lookup[cpu] _____________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_tf_dl_with_look1')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_tf_dl_with_lookup(tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids = rev_embedding_ids
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
        tf_tensor = tf.convert_to_tensor(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TFEmbeddingOperator(tf_tensor, id_lookup_table=embedding_ids.to_numpy())],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_tf_embeddings.py:246: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/tensorflow.py:120: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.tensorflow.Loader object at 0x7f538c5eafd0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
______________ test_embedding_torch_np_mmap_dl_with_lookup[None] _______________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_mmap_d0')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_mmap_dl_with_lookup(
        tmpdir, rev_embedding_ids, np_embeddings_from_pq, cpu
    ):
        batch_size = 10000
        embeddings_file, lookup_file = np_embeddings_from_pq
        cat_names = ["id"]
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        rev_embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[Torch_MmapNumpyTorchEmbedding(embeddings_file, ids_lookup_npz=lookup_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:54: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f54b44917c0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
_______________ test_embedding_torch_np_mmap_dl_with_lookup[cpu] _______________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_mmap_d1')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_mmap_dl_with_lookup(
        tmpdir, rev_embedding_ids, np_embeddings_from_pq, cpu
    ):
        batch_size = 10000
        embeddings_file, lookup_file = np_embeddings_from_pq
        cat_names = ["id"]
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        rev_embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[Torch_MmapNumpyTorchEmbedding(embeddings_file, ids_lookup_npz=lookup_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:54: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f538c225f10>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
_______________ test_embedding_torch_np_mmap_dl_no_lookup[None] ________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_mmap_d2')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_mmap_dl_no_lookup(tmpdir, embedding_ids, np_embeddings_from_pq, cpu):
        batch_size = 10000
        embeddings_file, lookup_file = np_embeddings_from_pq
        cat_names = ["id"]
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[Torch_MmapNumpyTorchEmbedding(embeddings_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:87: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f53d8538250>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
________________ test_embedding_torch_np_mmap_dl_no_lookup[cpu] ________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_mmap_d3')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
np_embeddings_from_pq = ('/tmp/pytest-of-jenkins/pytest-12/np_embeds0/embeddings.npy', '/tmp/pytest-of-jenkins/pytest-12/np_embeds0/ids_lookup.npy')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_mmap_dl_no_lookup(tmpdir, embedding_ids, np_embeddings_from_pq, cpu):
        batch_size = 10000
        embeddings_file, lookup_file = np_embeddings_from_pq
        cat_names = ["id"]
        embeddings = np.load(embeddings_file)
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
    
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[Torch_MmapNumpyTorchEmbedding(embeddings_file)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:87: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f53d8514400>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
_________________ test_embedding_torch_np_dl_with_lookup[None] _________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_dl_wit0')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_dl_with_lookup(
        tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu
    ):
        cat_names = ["id"]
        batch_size = 10000
        embedding_ids = rev_embedding_ids
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_df = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[
                Torch_NumpyEmbeddingOperator(embeddings_df, id_lookup_table=embedding_ids.to_numpy())
            ],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:123: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f54b4541c70>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
_________________ test_embedding_torch_np_dl_with_lookup[cpu] __________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_dl_wit1')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_dl_with_lookup(
        tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu
    ):
        cat_names = ["id"]
        batch_size = 10000
        embedding_ids = rev_embedding_ids
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_df = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[
                Torch_NumpyEmbeddingOperator(embeddings_df, id_lookup_table=embedding_ids.to_numpy())
            ],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:123: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f53bc76ff40>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
__________________ test_embedding_torch_np_dl_no_lookup[None] __________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_dl_no_0')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_df = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[Torch_NumpyEmbeddingOperator(embeddings_df)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:158: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f53787edf40>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
__________________ test_embedding_torch_np_dl_no_lookup[cpu] ___________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_np_dl_no_1')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_np_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        embeddings_df = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:]
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[Torch_NumpyEmbeddingOperator(embeddings_df)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:158: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f53fa71bac0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float64'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
__________________ test_embedding_torch_dl_with_lookup[None] ___________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_dl_with_l0')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_dl_with_lookup(tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids = rev_embedding_ids
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:].astype("float32")
        torch_tensor = torch.from_numpy(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TorchEmbeddingOperator(torch_tensor, id_lookup_table=embedding_ids.to_numpy())],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f538c144f70>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float32'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
___________________ test_embedding_torch_dl_with_lookup[cpu] ___________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_dl_with_l1')
rev_embedding_ids =           id
0      99999
1      99998
2      99997
3      99996
4      99995
...      ...
99995      4
99996      3
99997      2
99998      1
99999      0

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_dl_with_lookup(tmpdir, rev_embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids = rev_embedding_ids
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy()[:, 1:].astype("float32")
        torch_tensor = torch.from_numpy(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TorchEmbeddingOperator(torch_tensor, id_lookup_table=embedding_ids.to_numpy())],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f53d85e99a0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float32'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
___________________ test_embedding_torch_dl_no_lookup[None] ____________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_dl_no_loo0')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = None

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy().astype("float32")
        torch_tensor = torch.from_numpy(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TorchEmbeddingOperator(torch_tensor)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:227: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f54b4119100>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float32'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
____________________ test_embedding_torch_dl_no_lookup[cpu] ____________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-12/test_embedding_torch_dl_no_loo1')
embedding_ids =           id
0          0
1          1
2          2
3          3
4          4
...      ...
99995  99995
99996  99996
99997  99997
99998  99998
99999  99999

[100000 rows x 1 columns]
embeddings_from_dataframe = local('/tmp/pytest-of-jenkins/pytest-12/embeds0')
cpu = 'cpu'

    @pytest.mark.parametrize("cpu", [None, "cpu"] if HAS_GPU else ["cpu"])
    def test_embedding_torch_dl_no_lookup(tmpdir, embedding_ids, embeddings_from_dataframe, cpu):
        cat_names = ["id"]
        batch_size = 10000
        pq_path = tmpdir / "id.parquet"
        embedding_ids.to_parquet(pq_path)
        dataset = Dataset(str(pq_path))
        dataset = dataset.repartition(10)
        schema = dataset.schema
        for col_name in cat_names:
            schema[col_name] = schema[col_name].with_tags(Tags.CATEGORICAL)
        dataset.schema = schema
        paths = sorted(glob.glob(f"{embeddings_from_dataframe}/*"))
        embeddings_ds = Dataset(paths)
        np_tensor = embeddings_ds.to_ddf().compute().to_numpy().astype("float32")
        torch_tensor = torch.from_numpy(np_tensor)
>       data_loader = Loader(
            dataset,
            batch_size=batch_size,
            transforms=[TorchEmbeddingOperator(torch_tensor)],
            shuffle=False,
            device=cpu,
        )

tests/unit/dataloader/test_torch_embeddings.py:227: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
merlin/dataloader/torch.py:83: in __init__
    LoaderBase.__init__(
merlin/dataloader/loader_base.py:119: in __init__
    self.schema = self.transforms.output_schema
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <merlin.dataloader.torch.Loader object at 0x7f53bc7786a0>
value = [{'name': 'id', 'tags': {<Tags.CATEGORICAL: 'categorical'>}, 'properties': {}, 'dtype': dtype('int32'), 'is_list': Fal...: {<Tags.CONTINUOUS: 'continuous'>}, 'properties': {}, 'dtype': dtype('float32'), 'is_list': True, 'is_ragged': False}]

    @schema.setter
    def schema(self, value):
        """Set schema property
        Parameters
        ----------
        value : ~merlin.schema.Schema
            The schema corresponding to data to be loaded.
        Raises
        ------
        ValueError
            When value provided doesn't match expected type
        """
        if not isinstance(value, Schema):
            raise ValueError(
                "schema value on loader must be of type merlin.io.Schema. "
                f"provided: {type(value)}"
            )
        self._schema = value
        self.cat_names = (
            value.select_by_tag(Tags.CATEGORICAL).excluding_by_tag(Tags.TARGET).column_names
        )
        self.cont_names = (
            value.select_by_tag(Tags.CONTINUOUS).excluding_by_tag(Tags.TARGET).column_names
        )
        self.label_names = value.select_by_tag(Tags.TARGET).column_names
    
        self.sparse_names = []
        self.sparse_max = {}
        self.sparse_as_dense = set()
        self.dtype_reverse_map = {}
    
        for col_name, col_spec in self._schema.column_schemas.items():
            if col_spec.dtype not in self.dtype_reverse_map:
                self.dtype_reverse_map[col_spec.dtype] = [col_name]
            else:
                self.dtype_reverse_map[col_spec.dtype].append(col_name)
            if col_spec.is_list:
                self.sparse_names.append(col_name)
    
                value_count = col_spec.value_count
                if value_count and value_count.max:
                    self.sparse_max[col_name] = value_count.max
    
                if not col_spec.is_ragged:
                    self.sparse_as_dense.add(col_name)
    
                    if not value_count:
                        # TODO: error message linking to docs
>                       raise ValueError(
                            f"Dense column {col_name} doesn't have the max value_count defined"
                            " in the schema"
                        )
E                       ValueError: Dense column embeddings doesn't have the max value_count defined in the schema

merlin/dataloader/loader_base.py:678: ValueError
=============================== warnings summary ===============================
../../../../../usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33
  /usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    DASK_VERSION = LooseVersion(dask.__version__)

.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: 34 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

tests/unit/dataloader/test_jax_dataloader.py:24
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_jax_dataloader.py:24: PytestUnknownMarkWarning: Unknown pytest.mark.jax - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.jax

tests/unit/dataloader/test_tf_dataloader.py:32
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_dataloader.py:32: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_tf_embeddings.py:25
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_embeddings.py:25: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_torch_dataloader.py:30
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_dataloader.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/unit/dataloader/test_torch_embeddings.py:34
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_embeddings.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/examples/test_getting_started_pytorch.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_pytorch.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/examples/test_getting_started_tensorflow.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_tensorflow.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_seeding[128]
  /var/jenkins_home/.local/lib/python3.8/site-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: 
  A value is trying to be set on a copy of a slice from a DataFrame
  
  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    self._setitem_single_block(indexer, value, name)

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_empty_error[128]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/loader_base.py:85: UserWarning: no schema associated with the input dataset. Calling dataset.infer_schema to automatically generate
    warnings.warn(

tests/unit/dataloader/test_tf_dataloader.py: 7 warnings
tests/unit/dataloader/test_torch_dataloader.py: 11 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/merlin/io/dataset.py:253: UserWarning: Initializing an NVTabular Dataset in CPU mode.This is an experimental feature with extremely limited support!
    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.10-final-0 -----------
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
merlin/dataloader/__init__.py                                2      0   100%
merlin/dataloader/_version.py                              354    205    42%
merlin/dataloader/jax.py                                    51     51     0%
merlin/dataloader/loader_base.py                           455     39    91%
merlin/dataloader/ops/__init__.py                            0      0   100%
merlin/dataloader/ops/embeddings/__init__.py                 0      0   100%
merlin/dataloader/ops/embeddings/embedding_op.py            62     20    68%
merlin/dataloader/ops/embeddings/tf_embedding_op.py         19      5    74%
merlin/dataloader/ops/embeddings/torch_embedding_op.py      20      5    75%
merlin/dataloader/tensorflow.py                            114     32    72%
merlin/dataloader/tf_utils.py                               57     27    53%
merlin/dataloader/torch.py                                  66      9    86%
merlin/loader/__init__.py                                    4      0   100%
merlin/loader/jax.py                                         1      1     0%
merlin/loader/tensorflow.py                                  1      0   100%
merlin/loader/torch.py                                       1      0   100%
----------------------------------------------------------------------------
TOTAL                                                     1207    394    67%

=========================== short test summary info ============================
SKIPPED [1] tests/unit/dataloader/test_jax_dataloader.py:26: could not import 'jax': No module named 'jax'
SKIPPED [1] tests/unit/dataloader/test_tf_dataloader.py:523: not working correctly in ci environment
====== 26 failed, 72 passed, 2 skipped, 62 warnings in 222.94s (0:03:42) =======
ERROR: InvocationError for command /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/bin/python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   test-gpu: commands failed
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script  : #!/bin/bash
cd /var/jenkins_home/
CUDA_VISIBLE_DEVICES=1 python test_res_push.py "https://api.GitHub.com/repos/NVIDIA-Merlin/dataloader/issues/$ghprbPullId/comments" "/var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log" 
[workspace] $ /bin/bash /tmp/jenkins8887196523024741285.sh
</pre></details>
<details><summary>Click to view CI Results</summary><pre>GitHub pull request #86 of commit 1eefa82f143ec750651353bb73d5ebfa3a4044c6, no merge conflicts.
Running as SYSTEM
Setting status of 1eefa82f143ec750651353bb73d5ebfa3a4044c6 to PENDING with url http://merlin-infra1.nvidia.com:8080/job/merlin_dataloader/159/ and message: 'Pending'
Using context: Jenkins
Building on the built-in node in workspace /var/jenkins_home/jobs/merlin_dataloader/workspace
using credential systems-login
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/NVIDIA-Merlin/dataloader # timeout=10
Fetching upstream changes from https://github.com/NVIDIA-Merlin/dataloader
 > git --version # timeout=10
using GIT_ASKPASS to set credentials login for merlin-systems
 > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/dataloader +refs/pull/86/*:refs/remotes/origin/pr/86/* # timeout=10
 > git rev-parse 1eefa82f143ec750651353bb73d5ebfa3a4044c6^{commit} # timeout=10
Checking out Revision 1eefa82f143ec750651353bb73d5ebfa3a4044c6 (detached)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 1eefa82f143ec750651353bb73d5ebfa3a4044c6 # timeout=10
Commit message: "Fix transforms attribute"
 > git rev-list --no-walk 176bfadadc9eb2924f1cfe1049e8fcca1df3af82 # timeout=10
[workspace] $ /bin/bash /tmp/jenkins16842232648664357592.sh
GLOB sdist-make: /var/jenkins_home/workspace/merlin_dataloader/dataloader/setup.py
test-gpu recreate: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
test-gpu installdeps: -rrequirements/dev.txt, pytest, pytest-cov
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu inst: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/.tmp/package/1/merlin-dataloader-0.0.2+30.g1eefa82.zip
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu installed: absl-py==1.2.0,aiohttp==3.8.1,aiosignal==1.2.0,alabaster==0.7.12,alembic==1.8.1,anyio==3.6.1,argon2-cffi==21.3.0,argon2-cffi-bindings==21.2.0,astroid==2.5.6,asttokens==2.0.8,astunparse==1.6.3,asv==0.5.1,asvdb==0.4.2,async-timeout==4.0.2,attrs==22.1.0,autopage==0.5.1,awscli==1.27.30,Babel==2.10.3,backcall==0.2.0,beautifulsoup4==4.11.1,betterproto==1.2.5,black==22.6.0,bleach==5.0.1,boto3==1.24.75,botocore==1.29.30,Brotli==1.0.9,cachetools==5.2.0,certifi==2019.11.28,cffi==1.15.1,chardet==3.0.4,charset-normalizer==2.1.1,clang==5.0,click==8.1.3,cliff==4.1.0,cloudpickle==2.2.0,cmaes==0.9.0,cmake==3.24.1.1,cmd2==2.4.2,colorama==0.4.4,colorlog==6.7.0,contourpy==1.0.5,coverage==6.5.0,cpplint==1.6.1,cryptography==38.0.4,cuda-python==11.7.1,cupy-cuda117==10.6.0,cycler==0.11.0,Cython==0.29.32,dask==2022.1.1,dbus-python==1.2.16,debugpy==1.6.3,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.6,distributed==2022.5.1,distro==1.7.0,dm-tree==0.1.6,docker-pycreds==0.4.0,docutils==0.16,emoji==1.7.0,entrypoints==0.4,execnet==1.9.0,executing==1.0.0,faiss==1.7.2,faiss-gpu==1.7.2,fastai==2.7.9,fastapi==0.85.0,fastavro==1.6.1,fastcore==1.5.27,fastdownload==0.0.7,fastjsonschema==2.16.1,fastprogress==1.0.3,fastrlock==0.8,feast==0.19.4,fiddle==0.2.2,filelock==3.8.0,flatbuffers==1.12,fonttools==4.37.3,frozenlist==1.3.1,fsspec==2022.5.0,gast==0.4.0,gevent==21.12.0,geventhttpclient==2.0.2,gitdb==4.0.9,GitPython==3.1.27,google==3.0.0,google-api-core==2.10.1,google-auth==2.11.1,google-auth-oauthlib==0.4.6,google-pasta==0.2.0,googleapis-common-protos==1.52.0,graphviz==0.20.1,greenlet==1.1.3,grpcio==1.41.0,grpcio-channelz==1.49.0,grpcio-reflection==1.48.1,grpclib==0.4.3,h11==0.13.0,h2==4.1.0,h5py==3.7.0,HeapDict==1.0.1,horovod==0.26.1,hpack==4.0.0,httptools==0.5.0,hugectr2onnx==0.0.0,huggingface-hub==0.9.1,hyperframe==6.0.1,idna==2.8,imagesize==1.4.1,implicit==0.6.1,importlib-metadata==4.12.0,importlib-resources==5.9.0,iniconfig==1.1.1,ipykernel==6.15.3,ipython==8.5.0,ipython-genutils==0.2.0,ipywidgets==7.7.0,jedi==0.18.1,Jinja2==3.1.2,jmespath==1.0.1,joblib==1.2.0,json5==0.9.10,jsonschema==4.16.0,jupyter-cache==0.4.3,jupyter-core==4.11.1,jupyter-server==1.18.1,jupyter-server-mathjax==0.2.5,jupyter-sphinx==0.3.2,jupyter_client==7.3.5,jupyterlab==3.4.7,jupyterlab-pygments==0.2.2,jupyterlab-widgets==1.1.0,jupyterlab_server==2.15.1,keras==2.9.0,Keras-Preprocessing==1.1.2,kiwisolver==1.4.4,lazy-object-proxy==1.8.0,libclang==14.0.6,libcst==0.4.7,lightfm==1.16,lightgbm==3.3.2,linkify-it-py==1.0.3,llvmlite==0.39.1,locket==1.0.0,lxml==4.9.1,Mako==1.2.4,Markdown==3.4.1,markdown-it-py==1.1.0,MarkupSafe==2.1.1,matplotlib==3.6.0,matplotlib-inline==0.1.6,mdit-py-plugins==0.2.8,merlin-core==0.6.0+1.g5926fcf,merlin-dataloader==0.0.2+30.g1eefa82,merlin-models==0.7.0+11.g280956aa4,merlin-systems==0.5.0+4.g15074ad,mistune==2.0.4,mmh3==3.0.0,moto==4.0.11,mpi4py==3.1.3,msgpack==1.0.4,multidict==6.0.2,mypy-extensions==0.4.3,myst-nb==0.13.2,myst-parser==0.15.2,natsort==8.1.0,nbclassic==0.4.3,nbclient==0.6.8,nbconvert==7.0.0,nbdime==3.1.1,nbformat==5.5.0,nbsphinx==0.8.10,nest-asyncio==1.5.5,ninja==1.10.2.3,notebook==6.4.12,notebook-shim==0.1.0,npy-append-array==0.9.13,numba==0.56.2,numpy==1.22.4,nvidia-pyindex==1.0.9,# Editable install with no version control (nvtabular==1.4.0+8.g95e12d347),-e /usr/local/lib/python3.8/dist-packages,nvtx==0.2.5,oauthlib==3.2.1,oldest-supported-numpy==2022.8.16,onnx==1.12.0,onnxruntime==1.11.1,opt-einsum==3.3.0,optuna==3.0.4,packaging==21.3,pandas==1.3.5,pandavro==1.5.2,pandocfilters==1.5.0,parso==0.8.3,partd==1.3.0,pathtools==0.1.2,pbr==5.11.0,pexpect==4.8.0,pickleshare==0.7.5,Pillow==9.2.0,pkgutil_resolve_name==1.3.10,platformdirs==2.5.2,plotly==5.11.0,pluggy==1.0.0,prettytable==3.5.0,prometheus-client==0.14.1,promise==2.3,prompt-toolkit==3.0.31,proto-plus==1.19.6,protobuf==3.19.5,psutil==5.9.2,ptyprocess==0.7.0,pure-eval==0.2.2,py==1.11.0,pyarrow==7.0.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pybind11==2.10.0,pycparser==2.21,pydantic==1.10.2,pydot==1.4.2,Pygments==2.13.0,PyGObject==3.36.0,pynvml==11.4.1,pyparsing==3.0.9,pyperclip==1.8.2,pyrsistent==0.18.1,pytest==7.1.3,pytest-cov==4.0.0,pytest-xdist==3.1.0,python-apt==2.0.0+ubuntu0.20.4.8,python-dateutil==2.8.2,python-dotenv==0.21.0,python-rapidjson==1.8,pytz==2022.2.1,PyYAML==5.4.1,pyzmq==24.0.0,regex==2022.9.13,requests==2.22.0,requests-oauthlib==1.3.1,requests-unixsocket==0.2.0,responses==0.22.0,rsa==4.7.2,s3fs==2022.2.0,s3transfer==0.6.0,sacremoses==0.0.53,scikit-build==0.15.0,scikit-learn==1.1.2,scipy==1.8.1,seedir==0.3.0,Send2Trash==1.8.0,sentry-sdk==1.9.8,setproctitle==1.3.2,setuptools-scm==7.0.5,shortuuid==1.0.9,six==1.15.0,sklearn==0.0,smmap==5.0.0,sniffio==1.3.0,snowballstemmer==2.2.0,sortedcontainers==2.4.0,soupsieve==2.3.2.post1,Sphinx==5.3.0,sphinx-markdown-tables==0.0.15,sphinx-multiversion==0.2.4,sphinx-rtd-theme==1.1.1,sphinx-togglebutton==0.3.1,sphinx_external_toc==0.3.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-copydirs @ git+https://github.com/mikemckiernan/sphinxcontrib-copydirs.git@8d23fdd32ee0b2f2d2ee091ac8eb8c1e88271dd4,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,SQLAlchemy==1.4.45,stack-data==0.5.0,starlette==0.20.4,stevedore==4.1.1,stringcase==1.2.0,supervisor==4.1.0,tabulate==0.8.10,tblib==1.7.0,tdqm==0.0.1,tenacity==8.0.1,tensorboard==2.9.1,tensorboard-data-server==0.6.1,tensorboard-plugin-wit==1.8.1,tensorflow==2.9.2,tensorflow-estimator==2.9.0,tensorflow-gpu==2.9.2,tensorflow-io-gcs-filesystem==0.27.0,tensorflow-metadata==1.10.0,termcolor==2.0.1,terminado==0.15.0,testbook==0.4.2,threadpoolctl==3.1.0,tinycss2==1.1.1,tokenizers==0.10.3,toml==0.10.2,tomli==2.0.1,toolz==0.12.0,torch==1.12.1+cu113,torchmetrics==0.3.2,tornado==6.2,tox==3.26.0,tqdm==4.64.1,traitlets==5.4.0,transformers==4.12.0,transformers4rec==0.1.12+2.gbcc939255,treelite==2.3.0,treelite-runtime==2.3.0,tritonclient==2.25.0,types-toml==0.10.8.1,typing-inspect==0.8.0,typing_extensions==4.3.0,uc-micro-py==1.0.1,urllib3==1.26.12,uvicorn==0.18.3,uvloop==0.17.0,versioneer==0.20,virtualenv==20.16.5,wandb==0.13.3,watchfiles==0.17.0,wcwidth==0.2.5,webencodings==0.5.1,websocket-client==1.4.1,websockets==10.3,Werkzeug==2.2.2,widgetsnbextension==3.6.0,wrapt==1.12.1,xgboost==1.6.2,xmltodict==0.13.0,yarl==1.8.1,zict==2.2.0,zipp==3.8.1,zope.event==4.5.0,zope.interface==5.4.0
test-gpu run-test-pre: PYTHONHASHSEED='47210374'
test-gpu run-test: commands[0] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/core.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/core.git
  Cloning https://github.com/NVIDIA-Merlin/core.git to /tmp/pip-req-build-x12kxy8i
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/core.git /tmp/pip-req-build-x12kxy8i
  Resolved https://github.com/NVIDIA-Merlin/core.git to commit 644d4e302f6cd27f6392cc9d862be7b18425cb1d
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (1.3.5)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (3.19.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (2022.5.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (0.55.1)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (2022.3.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (4.64.1)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (1.2.5)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (1.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (21.3)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+18.g644d4e3) (7.0.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+18.g644d4e3) (2022.3.0)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (1.2.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (0.4.3)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (5.4.1)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.2.0)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.4.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.0.4)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (5.8.0)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (8.1.3)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.0.0)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.7.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (3.0.3)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (6.2)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+18.g644d4e3) (65.5.1)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+18.g644d4e3) (0.38.1)
Requirement already satisfied: numpy<1.22,>=1.18 in /var/jenkins_home/.local/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+18.g644d4e3) (1.20.3)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core==0.9.0+18.g644d4e3) (3.0.9)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (2022.2.1)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (2.8.2)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+18.g644d4e3) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (1.0.1)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (6.0.2)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (4.1.0)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core==0.9.0+18.g644d4e3) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+18.g644d4e3) (4.0.0)
Building wheels for collected packages: merlin-core
  Building wheel for merlin-core (pyproject.toml): started
  Building wheel for merlin-core (pyproject.toml): finished with status 'done'
  Created wheel for merlin-core: filename=merlin_core-0.9.0+18.g644d4e3-py3-none-any.whl size=119759 sha256=12acc6254c09979947b8c80954f5489fc6ad3e33b72fd278c2a655a658076e63
  Stored in directory: /tmp/pip-ephem-wheel-cache-i1b8s3ah/wheels/c8/38/16/a6968787eafcec5fa772148af8408b089562f71af0752e8e84
Successfully built merlin-core
Installing collected packages: merlin-core
  Attempting uninstall: merlin-core
    Found existing installation: merlin-core 0.9.0
    Uninstalling merlin-core-0.9.0:
      Successfully uninstalled merlin-core-0.9.0
Successfully installed merlin-core-0.9.0+18.g644d4e3
test-gpu run-test: commands[1] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/nvtabular.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/nvtabular.git
  Cloning https://github.com/NVIDIA-Merlin/nvtabular.git to /tmp/pip-req-build-5o9uy6ts
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/nvtabular.git /tmp/pip-req-build-5o9uy6ts
  Resolved https://github.com/NVIDIA-Merlin/nvtabular.git to commit 985510ef0f529aa54a8ac29414d3ed71542c4c62
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from nvtabular==1.6.0+22.g985510ef) (1.8.1)
Requirement already satisfied: merlin-core>=0.2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.9.0+18.g644d4e3)
Requirement already satisfied: merlin-dataloader>=0.0.2 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.0.2+30.g1eefa82)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.3.5)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.19.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.5.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.55.1)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.64.1)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.5)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (21.3)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (7.0.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: numpy<1.25.0,>=1.17.3 in /var/jenkins_home/.local/lib/python3.8/site-packages (from scipy->nvtabular==1.6.0+22.g985510ef) (1.20.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.4.3)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.4.1)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.4.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.4)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.8.0)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (8.1.3)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.0)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.7.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.3)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.2)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (65.5.1)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.38.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.9)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.2.1)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.8.2)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.1)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.2)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.1.0)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.0.0)
Building wheels for collected packages: nvtabular
  Building wheel for nvtabular (pyproject.toml): started
  Building wheel for nvtabular (pyproject.toml): finished with status 'done'
  Created wheel for nvtabular: filename=nvtabular-1.6.0+22.g985510ef-cp38-cp38-linux_x86_64.whl size=257120 sha256=8e255e1df27787b8c2ac64519056c73e64414d760be05481a7b303eef7baaa89
  Stored in directory: /tmp/pip-ephem-wheel-cache-po6l3vlb/wheels/8f/d9/f9/30f2cdc5bf8787fae6fdfe55afd6e1b493e619ec32c32ec40b
Successfully built nvtabular
Installing collected packages: nvtabular
  Attempting uninstall: nvtabular
    Found existing installation: nvtabular 1.1.1
    Not uninstalling nvtabular at /var/jenkins_home/.local/lib/python3.8/site-packages, outside environment /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
    Can't uninstall 'nvtabular'. No files were found to uninstall.
Successfully installed nvtabular-1.6.0+22.g985510ef
test-gpu run-test: commands[2] | python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
cachedir: .tox/test-gpu/.pytest_cache
rootdir: /var/jenkins_home/workspace/merlin_dataloader/dataloader, configfile: pyproject.toml
plugins: anyio-3.5.0, cov-4.0.0, xdist-3.1.0
collected 99 items / 1 skipped

tests/unit/dataloader/test_dataloader_backend.py ....                    [  4%]
tests/unit/dataloader/test_tf_dataloader.py ............................ [ 32%]
.........FFs....                                                         [ 48%]
tests/unit/dataloader/test_tf_embeddings.py ............                 [ 60%]
tests/unit/dataloader/test_torch_dataloader.py ......................... [ 85%]
                                                                         [ 85%]
tests/unit/dataloader/test_torch_embeddings.py ............              [ 97%]
tests/examples/test_getting_started_pytorch.py .                         [ 98%]
tests/examples/test_getting_started_tensorflow.py .                      [100%]

=================================== FAILURES ===================================
__________________________ test_sparse_tensors[False] __________________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-15/test_sparse_tensors_False_0')
sparse_dense = False

    @pytest.mark.parametrize("sparse_dense", [False, True])
    def test_sparse_tensors(tmpdir, sparse_dense):
        # create small dataset, add values to sparse_list
        json_sample = {
            "conts": {},
            "cats": {
                "spar1": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 2,
                    "multi_max": 4,
                    "multi_avg": 3,
                },
                "spar2": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 3,
                    "multi_max": 5,
                    "multi_avg": 4,
                },
                # "": {"dtype": None, "cardinality": 500, "min_entry_size": 1, "max_entry_size": 5},
            },
            "labels": {"rating": {"dtype": None, "cardinality": 2}},
        }
        datagen = pytest.importorskip("nvtabular.tools.data_gen")
    
        cols = datagen._get_cols_from_schema(json_sample)
        df_gen = datagen.DatasetGen(datagen.UniformDistro(), gpu_frac=0.0001)
        target_path = os.path.join(tmpdir, "input/")
        os.mkdir(target_path)
>       df_files = df_gen.full_df_create(10000, cols, output=target_path)

tests/unit/dataloader/test_tf_dataloader.py:486: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:245: in full_df_create
    df_single = self.create_df(
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:225: in create_df
    self.create_cats(size, cats_rep=cats_rep, entries=entries),
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:160: in create_cats
    df = concat([df, ser], axis=1)
.tox/test-gpu/lib/python3.8/site-packages/merlin/core/dispatch.py:487: in concat
    return cudf.core.reshape.concat(objs, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

objs = [Empty DataFrame
Columns: []
Index: [], <cudf.core.column.lists.ListColumn object at 0x7f3fd9528e40>
[
  [
    43,
    40,
    4
  ]
]
dtype: list]
axis = 1, join = 'outer', ignore_index = False, sort = None

    def concat(objs, axis=0, join="outer", ignore_index=False, sort=None):
        """Concatenate DataFrames, Series, or Indices row-wise.
    
        Parameters
        ----------
        objs : list of DataFrame, Series, or Index
        axis : {0/'index', 1/'columns'}, default 0
            The axis to concatenate along.
        join : {'inner', 'outer'}, default 'outer'
            How to handle indexes on other axis (or axes).
        ignore_index : bool, default False
            Set True to ignore the index of the *objs* and provide a
            default range index instead.
        sort : bool, default False
            Sort non-concatenation axis if it is not already aligned.
    
        Returns
        -------
        A new object of like type with rows from each object in ``objs``.
    
        Examples
        --------
        Combine two ``Series``.
    
        >>> import cudf
        >>> s1 = cudf.Series(['a', 'b'])
        >>> s2 = cudf.Series(['c', 'd'])
        >>> s1
        0    a
        1    b
        dtype: object
        >>> s2
        0    c
        1    d
        dtype: object
        >>> cudf.concat([s1, s2])
        0    a
        1    b
        0    c
        1    d
        dtype: object
    
        Clear the existing index and reset it in the
        result by setting the ``ignore_index`` option to ``True``.
    
        >>> cudf.concat([s1, s2], ignore_index=True)
        0    a
        1    b
        2    c
        3    d
        dtype: object
    
        Combine two DataFrame objects with identical columns.
    
        >>> df1 = cudf.DataFrame([['a', 1], ['b', 2]],
        ...                    columns=['letter', 'number'])
        >>> df1
          letter  number
        0      a       1
        1      b       2
        >>> df2 = cudf.DataFrame([['c', 3], ['d', 4]],
        ...                    columns=['letter', 'number'])
        >>> df2
          letter  number
        0      c       3
        1      d       4
        >>> cudf.concat([df1, df2])
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine DataFrame objects with overlapping columns and return
        everything. Columns outside the intersection will
        be filled with ``null`` values.
    
        >>> df3 = cudf.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],
        ...                    columns=['letter', 'number', 'animal'])
        >>> df3
          letter  number animal
        0      c       3    cat
        1      d       4    dog
        >>> cudf.concat([df1, df3], sort=False)
          letter  number animal
        0      a       1   <NA>
        1      b       2   <NA>
        0      c       3    cat
        1      d       4    dog
    
        Combine ``DataFrame`` objects with overlapping columns
        and return only those that are shared by passing ``inner`` to
        the ``join`` keyword argument.
    
        >>> cudf.concat([df1, df3], join="inner")
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine ``DataFrame`` objects horizontally along the
        x axis by passing in ``axis=1``.
    
        >>> df4 = cudf.DataFrame([['bird', 'polly'], ['monkey', 'george']],
        ...                    columns=['animal', 'name'])
        >>> df4
           animal    name
        0    bird   polly
        1  monkey  george
        >>> cudf.concat([df1, df4], axis=1)
          letter  number  animal    name
        0      a       1    bird   polly
        1      b       2  monkey  george
        """
        # TODO: Do we really need to have different error messages for an empty
        # list and a list of None?
        if not objs:
            raise ValueError("No objects to concatenate")
    
        objs = [obj for obj in objs if obj is not None]
    
        if not objs:
            raise ValueError("All objects passed were None")
    
        # Return for single object
        if len(objs) == 1:
            obj = objs[0]
    
            if ignore_index:
                if axis == 1:
                    result = cudf.DataFrame._from_data(
                        data=obj._data.copy(deep=True),
                        index=obj.index.copy(deep=True),
                    )
                    # The DataFrame constructor for dict-like data (such as the
                    # ColumnAccessor given by obj._data here) will drop any columns
                    # in the data that are not in `columns`, so we have to rename
                    # after construction.
                    result.columns = pd.RangeIndex(len(obj._data.names))
                elif axis == 0:
                    if isinstance(obj, cudf.Series):
                        result = cudf.Series._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
                    elif isinstance(obj, pd.Series):
                        result = cudf.Series(
                            data=obj,
                            index=cudf.RangeIndex(len(obj)),
                        )
                    else:
                        result = cudf.DataFrame._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
            else:
                result = obj.copy()
    
            return result.sort_index(axis=axis) if sort else result
    
        # Retrieve the base types of `objs`. In order to support sub-types
        # and object wrappers, we use `isinstance()` instead of comparing
        # types directly
        typs = set()
        for o in objs:
            if isinstance(o, cudf.MultiIndex):
                typs.add(cudf.MultiIndex)
            elif isinstance(o, cudf.BaseIndex):
                typs.add(type(o))
            elif isinstance(o, cudf.DataFrame):
                typs.add(cudf.DataFrame)
            elif isinstance(o, cudf.Series):
                typs.add(cudf.Series)
            else:
>               raise TypeError(f"cannot concatenate object of type {type(o)}")
E               TypeError: cannot concatenate object of type <class 'cudf.core.column.lists.ListColumn'>

/usr/local/lib/python3.8/dist-packages/cudf/core/reshape.py:288: TypeError
__________________________ test_sparse_tensors[True] ___________________________

tmpdir = local('/tmp/pytest-of-jenkins/pytest-15/test_sparse_tensors_True_0')
sparse_dense = True

    @pytest.mark.parametrize("sparse_dense", [False, True])
    def test_sparse_tensors(tmpdir, sparse_dense):
        # create small dataset, add values to sparse_list
        json_sample = {
            "conts": {},
            "cats": {
                "spar1": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 2,
                    "multi_max": 4,
                    "multi_avg": 3,
                },
                "spar2": {
                    "dtype": None,
                    "cardinality": 50,
                    "min_entry_size": 1,
                    "max_entry_size": 5,
                    "multi_min": 3,
                    "multi_max": 5,
                    "multi_avg": 4,
                },
                # "": {"dtype": None, "cardinality": 500, "min_entry_size": 1, "max_entry_size": 5},
            },
            "labels": {"rating": {"dtype": None, "cardinality": 2}},
        }
        datagen = pytest.importorskip("nvtabular.tools.data_gen")
    
        cols = datagen._get_cols_from_schema(json_sample)
        df_gen = datagen.DatasetGen(datagen.UniformDistro(), gpu_frac=0.0001)
        target_path = os.path.join(tmpdir, "input/")
        os.mkdir(target_path)
>       df_files = df_gen.full_df_create(10000, cols, output=target_path)

tests/unit/dataloader/test_tf_dataloader.py:486: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:245: in full_df_create
    df_single = self.create_df(
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:225: in create_df
    self.create_cats(size, cats_rep=cats_rep, entries=entries),
.tox/test-gpu/lib/python3.8/site-packages/nvtabular/tools/data_gen.py:160: in create_cats
    df = concat([df, ser], axis=1)
.tox/test-gpu/lib/python3.8/site-packages/merlin/core/dispatch.py:487: in concat
    return cudf.core.reshape.concat(objs, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

objs = [Empty DataFrame
Columns: []
Index: [], <cudf.core.column.lists.ListColumn object at 0x7f3fd011a040>
[
  [
    10,
    0
  ]
]
dtype: list]
axis = 1, join = 'outer', ignore_index = False, sort = None

    def concat(objs, axis=0, join="outer", ignore_index=False, sort=None):
        """Concatenate DataFrames, Series, or Indices row-wise.
    
        Parameters
        ----------
        objs : list of DataFrame, Series, or Index
        axis : {0/'index', 1/'columns'}, default 0
            The axis to concatenate along.
        join : {'inner', 'outer'}, default 'outer'
            How to handle indexes on other axis (or axes).
        ignore_index : bool, default False
            Set True to ignore the index of the *objs* and provide a
            default range index instead.
        sort : bool, default False
            Sort non-concatenation axis if it is not already aligned.
    
        Returns
        -------
        A new object of like type with rows from each object in ``objs``.
    
        Examples
        --------
        Combine two ``Series``.
    
        >>> import cudf
        >>> s1 = cudf.Series(['a', 'b'])
        >>> s2 = cudf.Series(['c', 'd'])
        >>> s1
        0    a
        1    b
        dtype: object
        >>> s2
        0    c
        1    d
        dtype: object
        >>> cudf.concat([s1, s2])
        0    a
        1    b
        0    c
        1    d
        dtype: object
    
        Clear the existing index and reset it in the
        result by setting the ``ignore_index`` option to ``True``.
    
        >>> cudf.concat([s1, s2], ignore_index=True)
        0    a
        1    b
        2    c
        3    d
        dtype: object
    
        Combine two DataFrame objects with identical columns.
    
        >>> df1 = cudf.DataFrame([['a', 1], ['b', 2]],
        ...                    columns=['letter', 'number'])
        >>> df1
          letter  number
        0      a       1
        1      b       2
        >>> df2 = cudf.DataFrame([['c', 3], ['d', 4]],
        ...                    columns=['letter', 'number'])
        >>> df2
          letter  number
        0      c       3
        1      d       4
        >>> cudf.concat([df1, df2])
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine DataFrame objects with overlapping columns and return
        everything. Columns outside the intersection will
        be filled with ``null`` values.
    
        >>> df3 = cudf.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],
        ...                    columns=['letter', 'number', 'animal'])
        >>> df3
          letter  number animal
        0      c       3    cat
        1      d       4    dog
        >>> cudf.concat([df1, df3], sort=False)
          letter  number animal
        0      a       1   <NA>
        1      b       2   <NA>
        0      c       3    cat
        1      d       4    dog
    
        Combine ``DataFrame`` objects with overlapping columns
        and return only those that are shared by passing ``inner`` to
        the ``join`` keyword argument.
    
        >>> cudf.concat([df1, df3], join="inner")
          letter  number
        0      a       1
        1      b       2
        0      c       3
        1      d       4
    
        Combine ``DataFrame`` objects horizontally along the
        x axis by passing in ``axis=1``.
    
        >>> df4 = cudf.DataFrame([['bird', 'polly'], ['monkey', 'george']],
        ...                    columns=['animal', 'name'])
        >>> df4
           animal    name
        0    bird   polly
        1  monkey  george
        >>> cudf.concat([df1, df4], axis=1)
          letter  number  animal    name
        0      a       1    bird   polly
        1      b       2  monkey  george
        """
        # TODO: Do we really need to have different error messages for an empty
        # list and a list of None?
        if not objs:
            raise ValueError("No objects to concatenate")
    
        objs = [obj for obj in objs if obj is not None]
    
        if not objs:
            raise ValueError("All objects passed were None")
    
        # Return for single object
        if len(objs) == 1:
            obj = objs[0]
    
            if ignore_index:
                if axis == 1:
                    result = cudf.DataFrame._from_data(
                        data=obj._data.copy(deep=True),
                        index=obj.index.copy(deep=True),
                    )
                    # The DataFrame constructor for dict-like data (such as the
                    # ColumnAccessor given by obj._data here) will drop any columns
                    # in the data that are not in `columns`, so we have to rename
                    # after construction.
                    result.columns = pd.RangeIndex(len(obj._data.names))
                elif axis == 0:
                    if isinstance(obj, cudf.Series):
                        result = cudf.Series._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
                    elif isinstance(obj, pd.Series):
                        result = cudf.Series(
                            data=obj,
                            index=cudf.RangeIndex(len(obj)),
                        )
                    else:
                        result = cudf.DataFrame._from_data(
                            data=obj._data.copy(deep=True),
                            index=cudf.RangeIndex(len(obj)),
                        )
            else:
                result = obj.copy()
    
            return result.sort_index(axis=axis) if sort else result
    
        # Retrieve the base types of `objs`. In order to support sub-types
        # and object wrappers, we use `isinstance()` instead of comparing
        # types directly
        typs = set()
        for o in objs:
            if isinstance(o, cudf.MultiIndex):
                typs.add(cudf.MultiIndex)
            elif isinstance(o, cudf.BaseIndex):
                typs.add(type(o))
            elif isinstance(o, cudf.DataFrame):
                typs.add(cudf.DataFrame)
            elif isinstance(o, cudf.Series):
                typs.add(cudf.Series)
            else:
>               raise TypeError(f"cannot concatenate object of type {type(o)}")
E               TypeError: cannot concatenate object of type <class 'cudf.core.column.lists.ListColumn'>

/usr/local/lib/python3.8/dist-packages/cudf/core/reshape.py:288: TypeError
=============================== warnings summary ===============================
../../../../../usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33
  /usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    DASK_VERSION = LooseVersion(dask.__version__)

.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: 34 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

tests/unit/dataloader/test_jax_dataloader.py:24
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_jax_dataloader.py:24: PytestUnknownMarkWarning: Unknown pytest.mark.jax - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.jax

tests/unit/dataloader/test_tf_dataloader.py:32
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_dataloader.py:32: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_tf_embeddings.py:25
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_embeddings.py:25: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_torch_dataloader.py:30
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_dataloader.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/unit/dataloader/test_torch_embeddings.py:34
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_embeddings.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/examples/test_getting_started_pytorch.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_pytorch.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/examples/test_getting_started_tensorflow.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_tensorflow.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_seeding[128]
  /var/jenkins_home/.local/lib/python3.8/site-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: 
  A value is trying to be set on a copy of a slice from a DataFrame
  
  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    self._setitem_single_block(indexer, value, name)

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_empty_error[128]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/loader_base.py:85: UserWarning: no schema associated with the input dataset. Calling dataset.infer_schema to automatically generate
    warnings.warn(

tests/unit/dataloader/test_tf_dataloader.py: 7 warnings
tests/unit/dataloader/test_torch_dataloader.py: 11 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/merlin/io/dataset.py:253: UserWarning: Initializing an NVTabular Dataset in CPU mode.This is an experimental feature with extremely limited support!
    warnings.warn(

tests/unit/dataloader/test_torch_embeddings.py::test_embedding_torch_dl_with_lookup[None]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/ops/embeddings/torch_embedding_op.py:52: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at  ../torch/csrc/utils/tensor_new.cpp:201.)
    return torch.Tensor(values).to(torch.int32)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.10-final-0 -----------
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
merlin/dataloader/__init__.py                                2      0   100%
merlin/dataloader/_version.py                              354    205    42%
merlin/dataloader/jax.py                                    51     51     0%
merlin/dataloader/loader_base.py                           465     40    91%
merlin/dataloader/ops/__init__.py                            0      0   100%
merlin/dataloader/ops/embeddings/__init__.py                 0      0   100%
merlin/dataloader/ops/embeddings/embedding_op.py            63      6    90%
merlin/dataloader/ops/embeddings/tf_embedding_op.py         19      0   100%
merlin/dataloader/ops/embeddings/torch_embedding_op.py      20      0   100%
merlin/dataloader/tensorflow.py                            114     32    72%
merlin/dataloader/tf_utils.py                               57     27    53%
merlin/dataloader/torch.py                                  66      8    88%
merlin/loader/__init__.py                                    4      0   100%
merlin/loader/jax.py                                         1      1     0%
merlin/loader/tensorflow.py                                  1      0   100%
merlin/loader/torch.py                                       1      0   100%
----------------------------------------------------------------------------
TOTAL                                                     1218    370    70%

=========================== short test summary info ============================
SKIPPED [1] tests/unit/dataloader/test_jax_dataloader.py:26: could not import 'jax': No module named 'jax'
SKIPPED [1] tests/unit/dataloader/test_tf_dataloader.py:523: not working correctly in ci environment
======= 2 failed, 96 passed, 2 skipped, 63 warnings in 146.47s (0:02:26) =======
ERROR: InvocationError for command /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/bin/python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   test-gpu: commands failed
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script  : #!/bin/bash
cd /var/jenkins_home/
CUDA_VISIBLE_DEVICES=1 python test_res_push.py "https://api.GitHub.com/repos/NVIDIA-Merlin/dataloader/issues/$ghprbPullId/comments" "/var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log" 
[workspace] $ /bin/bash /tmp/jenkins18078101353847706266.sh
</pre></details>
## Documentation preview

<https://nvidia-merlin.github.io/dataloader/review/pr-86>

This https://github.com/NVIDIA-Merlin/core/pull/187 is required to get the tests passing again on GPU
rerun tests
<details><summary>Click to view CI Results</summary><pre>GitHub pull request #86 of commit 1eefa82f143ec750651353bb73d5ebfa3a4044c6, no merge conflicts.
Running as SYSTEM
Setting status of 1eefa82f143ec750651353bb73d5ebfa3a4044c6 to PENDING with url http://merlin-infra1.nvidia.com:8080/job/merlin_dataloader/160/ and message: 'Pending'
Using context: Jenkins
Building on the built-in node in workspace /var/jenkins_home/jobs/merlin_dataloader/workspace
using credential systems-login
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/NVIDIA-Merlin/dataloader # timeout=10
Fetching upstream changes from https://github.com/NVIDIA-Merlin/dataloader
 > git --version # timeout=10
using GIT_ASKPASS to set credentials login for merlin-systems
 > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/dataloader +refs/pull/86/*:refs/remotes/origin/pr/86/* # timeout=10
 > git rev-parse 1eefa82f143ec750651353bb73d5ebfa3a4044c6^{commit} # timeout=10
Checking out Revision 1eefa82f143ec750651353bb73d5ebfa3a4044c6 (detached)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 1eefa82f143ec750651353bb73d5ebfa3a4044c6 # timeout=10
Commit message: "Fix transforms attribute"
 > git rev-list --no-walk 1eefa82f143ec750651353bb73d5ebfa3a4044c6 # timeout=10
[workspace] $ /bin/bash /tmp/jenkins6999961435173395366.sh
GLOB sdist-make: /var/jenkins_home/workspace/merlin_dataloader/dataloader/setup.py
test-gpu recreate: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
test-gpu installdeps: -rrequirements/dev.txt, pytest, pytest-cov
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu inst: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/.tmp/package/1/merlin-dataloader-0.0.2+30.g1eefa82.zip
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu installed: absl-py==1.2.0,aiohttp==3.8.1,aiosignal==1.2.0,alabaster==0.7.12,alembic==1.9.0,anyio==3.6.1,argon2-cffi==21.3.0,argon2-cffi-bindings==21.2.0,astroid==2.5.6,asttokens==2.0.8,astunparse==1.6.3,asv==0.5.1,asvdb==0.4.2,async-timeout==4.0.2,attrs==22.1.0,autopage==0.5.1,awscli==1.27.31,Babel==2.10.3,backcall==0.2.0,beautifulsoup4==4.11.1,betterproto==1.2.5,black==22.6.0,bleach==5.0.1,boto3==1.24.75,botocore==1.29.31,Brotli==1.0.9,cachetools==5.2.0,certifi==2019.11.28,cffi==1.15.1,chardet==3.0.4,charset-normalizer==2.1.1,clang==5.0,click==8.1.3,cliff==4.1.0,cloudpickle==2.2.0,cmaes==0.9.0,cmake==3.24.1.1,cmd2==2.4.2,colorama==0.4.4,colorlog==6.7.0,contourpy==1.0.5,coverage==6.5.0,cpplint==1.6.1,cryptography==38.0.4,cuda-python==11.7.1,cupy-cuda117==10.6.0,cycler==0.11.0,Cython==0.29.32,dask==2022.1.1,dbus-python==1.2.16,debugpy==1.6.3,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.6,distributed==2022.5.1,distro==1.7.0,dm-tree==0.1.6,docker-pycreds==0.4.0,docutils==0.16,emoji==1.7.0,entrypoints==0.4,execnet==1.9.0,executing==1.0.0,faiss==1.7.2,faiss-gpu==1.7.2,fastai==2.7.9,fastapi==0.85.0,fastavro==1.6.1,fastcore==1.5.27,fastdownload==0.0.7,fastjsonschema==2.16.1,fastprogress==1.0.3,fastrlock==0.8,feast==0.19.4,fiddle==0.2.2,filelock==3.8.0,flatbuffers==1.12,fonttools==4.37.3,frozenlist==1.3.1,fsspec==2022.5.0,gast==0.4.0,gevent==21.12.0,geventhttpclient==2.0.2,gitdb==4.0.9,GitPython==3.1.27,google==3.0.0,google-api-core==2.10.1,google-auth==2.11.1,google-auth-oauthlib==0.4.6,google-pasta==0.2.0,googleapis-common-protos==1.52.0,graphviz==0.20.1,greenlet==1.1.3,grpcio==1.41.0,grpcio-channelz==1.49.0,grpcio-reflection==1.48.1,grpclib==0.4.3,h11==0.13.0,h2==4.1.0,h5py==3.7.0,HeapDict==1.0.1,horovod==0.26.1,hpack==4.0.0,httptools==0.5.0,hugectr2onnx==0.0.0,huggingface-hub==0.9.1,hyperframe==6.0.1,idna==2.8,imagesize==1.4.1,implicit==0.6.1,importlib-metadata==4.12.0,importlib-resources==5.9.0,iniconfig==1.1.1,ipykernel==6.15.3,ipython==8.5.0,ipython-genutils==0.2.0,ipywidgets==7.7.0,jedi==0.18.1,Jinja2==3.1.2,jmespath==1.0.1,joblib==1.2.0,json5==0.9.10,jsonschema==4.16.0,jupyter-cache==0.4.3,jupyter-core==4.11.1,jupyter-server==1.18.1,jupyter-server-mathjax==0.2.5,jupyter-sphinx==0.3.2,jupyter_client==7.3.5,jupyterlab==3.4.7,jupyterlab-pygments==0.2.2,jupyterlab-widgets==1.1.0,jupyterlab_server==2.15.1,keras==2.9.0,Keras-Preprocessing==1.1.2,kiwisolver==1.4.4,lazy-object-proxy==1.8.0,libclang==14.0.6,libcst==0.4.7,lightfm==1.16,lightgbm==3.3.2,linkify-it-py==1.0.3,llvmlite==0.39.1,locket==1.0.0,lxml==4.9.1,Mako==1.2.4,Markdown==3.4.1,markdown-it-py==1.1.0,MarkupSafe==2.1.1,matplotlib==3.6.0,matplotlib-inline==0.1.6,mdit-py-plugins==0.2.8,merlin-core==0.6.0+1.g5926fcf,merlin-dataloader==0.0.2+30.g1eefa82,merlin-models==0.7.0+11.g280956aa4,merlin-systems==0.5.0+4.g15074ad,mistune==2.0.4,mmh3==3.0.0,moto==4.0.11,mpi4py==3.1.3,msgpack==1.0.4,multidict==6.0.2,mypy-extensions==0.4.3,myst-nb==0.13.2,myst-parser==0.15.2,natsort==8.1.0,nbclassic==0.4.3,nbclient==0.6.8,nbconvert==7.0.0,nbdime==3.1.1,nbformat==5.5.0,nbsphinx==0.8.10,nest-asyncio==1.5.5,ninja==1.10.2.3,notebook==6.4.12,notebook-shim==0.1.0,npy-append-array==0.9.13,numba==0.56.2,numpy==1.22.4,nvidia-pyindex==1.0.9,# Editable install with no version control (nvtabular==1.4.0+8.g95e12d347),-e /usr/local/lib/python3.8/dist-packages,nvtx==0.2.5,oauthlib==3.2.1,oldest-supported-numpy==2022.8.16,onnx==1.12.0,onnxruntime==1.11.1,opt-einsum==3.3.0,optuna==3.0.4,packaging==21.3,pandas==1.3.5,pandavro==1.5.2,pandocfilters==1.5.0,parso==0.8.3,partd==1.3.0,pathtools==0.1.2,pbr==5.11.0,pexpect==4.8.0,pickleshare==0.7.5,Pillow==9.2.0,pkgutil_resolve_name==1.3.10,platformdirs==2.5.2,plotly==5.11.0,pluggy==1.0.0,prettytable==3.5.0,prometheus-client==0.14.1,promise==2.3,prompt-toolkit==3.0.31,proto-plus==1.19.6,protobuf==3.19.5,psutil==5.9.2,ptyprocess==0.7.0,pure-eval==0.2.2,py==1.11.0,pyarrow==7.0.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pybind11==2.10.0,pycparser==2.21,pydantic==1.10.2,pydot==1.4.2,Pygments==2.13.0,PyGObject==3.36.0,pynvml==11.4.1,pyparsing==3.0.9,pyperclip==1.8.2,pyrsistent==0.18.1,pytest==7.1.3,pytest-cov==4.0.0,pytest-xdist==3.1.0,python-apt==2.0.0+ubuntu0.20.4.8,python-dateutil==2.8.2,python-dotenv==0.21.0,python-rapidjson==1.8,pytz==2022.2.1,PyYAML==5.4.1,pyzmq==24.0.0,regex==2022.9.13,requests==2.22.0,requests-oauthlib==1.3.1,requests-unixsocket==0.2.0,responses==0.22.0,rsa==4.7.2,s3fs==2022.2.0,s3transfer==0.6.0,sacremoses==0.0.53,scikit-build==0.15.0,scikit-learn==1.1.2,scipy==1.8.1,seedir==0.3.0,Send2Trash==1.8.0,sentry-sdk==1.9.8,setproctitle==1.3.2,setuptools-scm==7.0.5,shortuuid==1.0.9,six==1.15.0,sklearn==0.0,smmap==5.0.0,sniffio==1.3.0,snowballstemmer==2.2.0,sortedcontainers==2.4.0,soupsieve==2.3.2.post1,Sphinx==5.3.0,sphinx-markdown-tables==0.0.15,sphinx-multiversion==0.2.4,sphinx-rtd-theme==1.1.1,sphinx-togglebutton==0.3.1,sphinx_external_toc==0.3.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-copydirs @ git+https://github.com/mikemckiernan/sphinxcontrib-copydirs.git@8d23fdd32ee0b2f2d2ee091ac8eb8c1e88271dd4,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,SQLAlchemy==1.4.45,stack-data==0.5.0,starlette==0.20.4,stevedore==4.1.1,stringcase==1.2.0,supervisor==4.1.0,tabulate==0.8.10,tblib==1.7.0,tdqm==0.0.1,tenacity==8.0.1,tensorboard==2.9.1,tensorboard-data-server==0.6.1,tensorboard-plugin-wit==1.8.1,tensorflow==2.9.2,tensorflow-estimator==2.9.0,tensorflow-gpu==2.9.2,tensorflow-io-gcs-filesystem==0.27.0,tensorflow-metadata==1.10.0,termcolor==2.0.1,terminado==0.15.0,testbook==0.4.2,threadpoolctl==3.1.0,tinycss2==1.1.1,tokenizers==0.10.3,toml==0.10.2,tomli==2.0.1,toolz==0.12.0,torch==1.12.1+cu113,torchmetrics==0.3.2,tornado==6.2,tox==3.26.0,tqdm==4.64.1,traitlets==5.4.0,transformers==4.12.0,transformers4rec==0.1.12+2.gbcc939255,treelite==2.3.0,treelite-runtime==2.3.0,tritonclient==2.25.0,types-toml==0.10.8.1,typing-inspect==0.8.0,typing_extensions==4.3.0,uc-micro-py==1.0.1,urllib3==1.26.12,uvicorn==0.18.3,uvloop==0.17.0,versioneer==0.20,virtualenv==20.16.5,wandb==0.13.3,watchfiles==0.17.0,wcwidth==0.2.5,webencodings==0.5.1,websocket-client==1.4.1,websockets==10.3,Werkzeug==2.2.2,widgetsnbextension==3.6.0,wrapt==1.12.1,xgboost==1.6.2,xmltodict==0.13.0,yarl==1.8.1,zict==2.2.0,zipp==3.8.1,zope.event==4.5.0,zope.interface==5.4.0
test-gpu run-test-pre: PYTHONHASHSEED='1896496762'
test-gpu run-test: commands[0] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/core.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/core.git
  Cloning https://github.com/NVIDIA-Merlin/core.git to /tmp/pip-req-build-ajl1sdbt
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/core.git /tmp/pip-req-build-ajl1sdbt
  Resolved https://github.com/NVIDIA-Merlin/core.git to commit 73c2afc277967015e2f334b8c57a9e8789fa19bd
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (7.0.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (21.3)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (3.19.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.5.0)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.2.5)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (0.55.1)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (1.3.5)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (4.64.1)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.10.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.4.1)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.7.0)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (6.2)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.4.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (3.0.3)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (8.1.3)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.4)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.8.0)
Requirement already satisfied: numpy<1.22,>=1.18 in /var/jenkins_home/.local/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (1.20.3)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (0.38.1)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (65.5.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core==0.9.0+19.g73c2afc) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2022.2.1)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.52.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.0.0)
Building wheels for collected packages: merlin-core
  Building wheel for merlin-core (pyproject.toml): started
  Building wheel for merlin-core (pyproject.toml): finished with status 'done'
  Created wheel for merlin-core: filename=merlin_core-0.9.0+19.g73c2afc-py3-none-any.whl size=119766 sha256=d339c7ca8e5e6a50d2771862760c8da05f72a068dac4f8d517126a793eb08594
  Stored in directory: /tmp/pip-ephem-wheel-cache-yjfdyv4k/wheels/c8/38/16/a6968787eafcec5fa772148af8408b089562f71af0752e8e84
Successfully built merlin-core
Installing collected packages: merlin-core
  Attempting uninstall: merlin-core
    Found existing installation: merlin-core 0.9.0
    Uninstalling merlin-core-0.9.0:
      Successfully uninstalled merlin-core-0.9.0
Successfully installed merlin-core-0.9.0+19.g73c2afc
test-gpu run-test: commands[1] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/nvtabular.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/nvtabular.git
  Cloning https://github.com/NVIDIA-Merlin/nvtabular.git to /tmp/pip-req-build-n7yuw0p_
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/nvtabular.git /tmp/pip-req-build-n7yuw0p_
  Resolved https://github.com/NVIDIA-Merlin/nvtabular.git to commit 985510ef0f529aa54a8ac29414d3ed71542c4c62
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: merlin-core>=0.2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.9.0+19.g73c2afc)
Requirement already satisfied: merlin-dataloader>=0.0.2 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.0.2+30.g1eefa82)
Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from nvtabular==1.6.0+22.g985510ef) (1.8.1)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (7.0.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (21.3)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.19.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.5.0)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.5)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.55.1)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.3.5)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.64.1)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.10.0)
Requirement already satisfied: numpy<1.25.0,>=1.17.3 in /var/jenkins_home/.local/lib/python3.8/site-packages (from scipy->nvtabular==1.6.0+22.g985510ef) (1.20.3)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.4.1)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.7.0)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.2)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.4.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.3)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (8.1.3)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.4)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.8.0)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.38.1)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (65.5.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.2.1)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.52.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.0.0)
Building wheels for collected packages: nvtabular
  Building wheel for nvtabular (pyproject.toml): started
  Building wheel for nvtabular (pyproject.toml): finished with status 'done'
  Created wheel for nvtabular: filename=nvtabular-1.6.0+22.g985510ef-cp38-cp38-linux_x86_64.whl size=257120 sha256=64aab955f486018399ca4306edbfc6aecca521798fd89b66af541a50358f62c8
  Stored in directory: /tmp/pip-ephem-wheel-cache-3twmyrb9/wheels/8f/d9/f9/30f2cdc5bf8787fae6fdfe55afd6e1b493e619ec32c32ec40b
Successfully built nvtabular
Installing collected packages: nvtabular
  Attempting uninstall: nvtabular
    Found existing installation: nvtabular 1.1.1
    Not uninstalling nvtabular at /var/jenkins_home/.local/lib/python3.8/site-packages, outside environment /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
    Can't uninstall 'nvtabular'. No files were found to uninstall.
Successfully installed nvtabular-1.6.0+22.g985510ef
test-gpu run-test: commands[2] | python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
cachedir: .tox/test-gpu/.pytest_cache
rootdir: /var/jenkins_home/workspace/merlin_dataloader/dataloader, configfile: pyproject.toml
plugins: anyio-3.5.0, cov-4.0.0, xdist-3.1.0
collected 99 items / 1 skipped

tests/unit/dataloader/test_dataloader_backend.py ....                    [  4%]
tests/unit/dataloader/test_tf_dataloader.py ............................ [ 32%]
...........s....                                                         [ 48%]
tests/unit/dataloader/test_tf_embeddings.py ............                 [ 60%]
tests/unit/dataloader/test_torch_dataloader.py ......................... [ 85%]
                                                                         [ 85%]
tests/unit/dataloader/test_torch_embeddings.py ............              [ 97%]
tests/examples/test_getting_started_pytorch.py .                         [ 98%]
tests/examples/test_getting_started_tensorflow.py .                      [100%]

=============================== warnings summary ===============================
../../../../../usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33
  /usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    DASK_VERSION = LooseVersion(dask.__version__)

.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: 34 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

tests/unit/dataloader/test_jax_dataloader.py:24
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_jax_dataloader.py:24: PytestUnknownMarkWarning: Unknown pytest.mark.jax - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.jax

tests/unit/dataloader/test_tf_dataloader.py:32
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_dataloader.py:32: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_tf_embeddings.py:25
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_embeddings.py:25: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_torch_dataloader.py:30
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_dataloader.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/unit/dataloader/test_torch_embeddings.py:34
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_embeddings.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/examples/test_getting_started_pytorch.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_pytorch.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/examples/test_getting_started_tensorflow.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_tensorflow.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_seeding[128]
  /var/jenkins_home/.local/lib/python3.8/site-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: 
  A value is trying to be set on a copy of a slice from a DataFrame
  
  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    self._setitem_single_block(indexer, value, name)

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_empty_error[128]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/loader_base.py:85: UserWarning: no schema associated with the input dataset. Calling dataset.infer_schema to automatically generate
    warnings.warn(

tests/unit/dataloader/test_tf_dataloader.py: 7 warnings
tests/unit/dataloader/test_torch_dataloader.py: 11 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/merlin/io/dataset.py:253: UserWarning: Initializing an NVTabular Dataset in CPU mode.This is an experimental feature with extremely limited support!
    warnings.warn(

tests/unit/dataloader/test_torch_embeddings.py::test_embedding_torch_dl_with_lookup[None]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/ops/embeddings/torch_embedding_op.py:52: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at  ../torch/csrc/utils/tensor_new.cpp:201.)
    return torch.Tensor(values).to(torch.int32)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.10-final-0 -----------
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
merlin/dataloader/__init__.py                                2      0   100%
merlin/dataloader/_version.py                              354    205    42%
merlin/dataloader/jax.py                                    51     51     0%
merlin/dataloader/loader_base.py                           465     40    91%
merlin/dataloader/ops/__init__.py                            0      0   100%
merlin/dataloader/ops/embeddings/__init__.py                 0      0   100%
merlin/dataloader/ops/embeddings/embedding_op.py            63      6    90%
merlin/dataloader/ops/embeddings/tf_embedding_op.py         19      0   100%
merlin/dataloader/ops/embeddings/torch_embedding_op.py      20      0   100%
merlin/dataloader/tensorflow.py                            114     20    82%
merlin/dataloader/tf_utils.py                               57     27    53%
merlin/dataloader/torch.py                                  66      8    88%
merlin/loader/__init__.py                                    4      0   100%
merlin/loader/jax.py                                         1      1     0%
merlin/loader/tensorflow.py                                  1      0   100%
merlin/loader/torch.py                                       1      0   100%
----------------------------------------------------------------------------
TOTAL                                                     1218    358    71%

=========================== short test summary info ============================
SKIPPED [1] tests/unit/dataloader/test_jax_dataloader.py:26: could not import 'jax': No module named 'jax'
SKIPPED [1] tests/unit/dataloader/test_tf_dataloader.py:523: not working correctly in ci environment
============ 98 passed, 2 skipped, 63 warnings in 158.04s (0:02:38) ============
___________________________________ summary ____________________________________
  test-gpu: commands succeeded
  congratulations :)
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script  : #!/bin/bash
cd /var/jenkins_home/
CUDA_VISIBLE_DEVICES=1 python test_res_push.py "https://api.GitHub.com/repos/NVIDIA-Merlin/dataloader/issues/$ghprbPullId/comments" "/var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log" 
[workspace] $ /bin/bash /tmp/jenkins2896272768584318072.sh
</pre></details>
<details><summary>Click to view CI Results</summary><pre>GitHub pull request #86 of commit 282160b5da540d2e6c62c78af4d870a185dd2bd9, no merge conflicts.
Running as SYSTEM
Setting status of 282160b5da540d2e6c62c78af4d870a185dd2bd9 to PENDING with url http://merlin-infra1.nvidia.com:8080/job/merlin_dataloader/161/ and message: 'Pending'
Using context: Jenkins
Building on the built-in node in workspace /var/jenkins_home/jobs/merlin_dataloader/workspace
using credential systems-login
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/NVIDIA-Merlin/dataloader # timeout=10
Fetching upstream changes from https://github.com/NVIDIA-Merlin/dataloader
 > git --version # timeout=10
using GIT_ASKPASS to set credentials login for merlin-systems
 > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/dataloader +refs/pull/86/*:refs/remotes/origin/pr/86/* # timeout=10
 > git rev-parse 282160b5da540d2e6c62c78af4d870a185dd2bd9^{commit} # timeout=10
Checking out Revision 282160b5da540d2e6c62c78af4d870a185dd2bd9 (detached)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 282160b5da540d2e6c62c78af4d870a185dd2bd9 # timeout=10
Commit message: "Add schema property for backwards compatibility."
 > git rev-list --no-walk 1eefa82f143ec750651353bb73d5ebfa3a4044c6 # timeout=10
[workspace] $ /bin/bash /tmp/jenkins6654909107747549303.sh
GLOB sdist-make: /var/jenkins_home/workspace/merlin_dataloader/dataloader/setup.py
test-gpu recreate: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
test-gpu installdeps: -rrequirements/dev.txt, pytest, pytest-cov
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu inst: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/.tmp/package/1/merlin-dataloader-0.0.2+31.g282160b.zip
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu installed: absl-py==1.2.0,aiohttp==3.8.1,aiosignal==1.2.0,alabaster==0.7.12,alembic==1.9.0,anyio==3.6.1,argon2-cffi==21.3.0,argon2-cffi-bindings==21.2.0,astroid==2.5.6,asttokens==2.0.8,astunparse==1.6.3,asv==0.5.1,asvdb==0.4.2,async-timeout==4.0.2,attrs==22.1.0,autopage==0.5.1,awscli==1.27.31,Babel==2.10.3,backcall==0.2.0,beautifulsoup4==4.11.1,betterproto==1.2.5,black==22.6.0,bleach==5.0.1,boto3==1.24.75,botocore==1.29.31,Brotli==1.0.9,cachetools==5.2.0,certifi==2019.11.28,cffi==1.15.1,chardet==3.0.4,charset-normalizer==2.1.1,clang==5.0,click==8.1.3,cliff==4.1.0,cloudpickle==2.2.0,cmaes==0.9.0,cmake==3.24.1.1,cmd2==2.4.2,colorama==0.4.4,colorlog==6.7.0,contourpy==1.0.5,coverage==6.5.0,cpplint==1.6.1,cryptography==38.0.4,cuda-python==11.7.1,cupy-cuda117==10.6.0,cycler==0.11.0,Cython==0.29.32,dask==2022.1.1,dbus-python==1.2.16,debugpy==1.6.3,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.6,distributed==2022.5.1,distro==1.7.0,dm-tree==0.1.6,docker-pycreds==0.4.0,docutils==0.16,emoji==1.7.0,entrypoints==0.4,execnet==1.9.0,executing==1.0.0,faiss==1.7.2,faiss-gpu==1.7.2,fastai==2.7.9,fastapi==0.85.0,fastavro==1.6.1,fastcore==1.5.27,fastdownload==0.0.7,fastjsonschema==2.16.1,fastprogress==1.0.3,fastrlock==0.8,feast==0.19.4,fiddle==0.2.2,filelock==3.8.0,flatbuffers==1.12,fonttools==4.37.3,frozenlist==1.3.1,fsspec==2022.5.0,gast==0.4.0,gevent==21.12.0,geventhttpclient==2.0.2,gitdb==4.0.9,GitPython==3.1.27,google==3.0.0,google-api-core==2.10.1,google-auth==2.11.1,google-auth-oauthlib==0.4.6,google-pasta==0.2.0,googleapis-common-protos==1.52.0,graphviz==0.20.1,greenlet==1.1.3,grpcio==1.41.0,grpcio-channelz==1.49.0,grpcio-reflection==1.48.1,grpclib==0.4.3,h11==0.13.0,h2==4.1.0,h5py==3.7.0,HeapDict==1.0.1,horovod==0.26.1,hpack==4.0.0,httptools==0.5.0,hugectr2onnx==0.0.0,huggingface-hub==0.9.1,hyperframe==6.0.1,idna==2.8,imagesize==1.4.1,implicit==0.6.1,importlib-metadata==4.12.0,importlib-resources==5.9.0,iniconfig==1.1.1,ipykernel==6.15.3,ipython==8.5.0,ipython-genutils==0.2.0,ipywidgets==7.7.0,jedi==0.18.1,Jinja2==3.1.2,jmespath==1.0.1,joblib==1.2.0,json5==0.9.10,jsonschema==4.16.0,jupyter-cache==0.4.3,jupyter-core==4.11.1,jupyter-server==1.18.1,jupyter-server-mathjax==0.2.5,jupyter-sphinx==0.3.2,jupyter_client==7.3.5,jupyterlab==3.4.7,jupyterlab-pygments==0.2.2,jupyterlab-widgets==1.1.0,jupyterlab_server==2.15.1,keras==2.9.0,Keras-Preprocessing==1.1.2,kiwisolver==1.4.4,lazy-object-proxy==1.8.0,libclang==14.0.6,libcst==0.4.7,lightfm==1.16,lightgbm==3.3.2,linkify-it-py==1.0.3,llvmlite==0.39.1,locket==1.0.0,lxml==4.9.1,Mako==1.2.4,Markdown==3.4.1,markdown-it-py==1.1.0,MarkupSafe==2.1.1,matplotlib==3.6.0,matplotlib-inline==0.1.6,mdit-py-plugins==0.2.8,merlin-core==0.6.0+1.g5926fcf,merlin-dataloader==0.0.2+31.g282160b,merlin-models==0.7.0+11.g280956aa4,merlin-systems==0.5.0+4.g15074ad,mistune==2.0.4,mmh3==3.0.0,moto==4.0.11,mpi4py==3.1.3,msgpack==1.0.4,multidict==6.0.2,mypy-extensions==0.4.3,myst-nb==0.13.2,myst-parser==0.15.2,natsort==8.1.0,nbclassic==0.4.3,nbclient==0.6.8,nbconvert==7.0.0,nbdime==3.1.1,nbformat==5.5.0,nbsphinx==0.8.10,nest-asyncio==1.5.5,ninja==1.10.2.3,notebook==6.4.12,notebook-shim==0.1.0,npy-append-array==0.9.13,numba==0.56.2,numpy==1.22.4,nvidia-pyindex==1.0.9,# Editable install with no version control (nvtabular==1.4.0+8.g95e12d347),-e /usr/local/lib/python3.8/dist-packages,nvtx==0.2.5,oauthlib==3.2.1,oldest-supported-numpy==2022.8.16,onnx==1.12.0,onnxruntime==1.11.1,opt-einsum==3.3.0,optuna==3.0.4,packaging==21.3,pandas==1.3.5,pandavro==1.5.2,pandocfilters==1.5.0,parso==0.8.3,partd==1.3.0,pathtools==0.1.2,pbr==5.11.0,pexpect==4.8.0,pickleshare==0.7.5,Pillow==9.2.0,pkgutil_resolve_name==1.3.10,platformdirs==2.5.2,plotly==5.11.0,pluggy==1.0.0,prettytable==3.5.0,prometheus-client==0.14.1,promise==2.3,prompt-toolkit==3.0.31,proto-plus==1.19.6,protobuf==3.19.5,psutil==5.9.2,ptyprocess==0.7.0,pure-eval==0.2.2,py==1.11.0,pyarrow==7.0.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pybind11==2.10.0,pycparser==2.21,pydantic==1.10.2,pydot==1.4.2,Pygments==2.13.0,PyGObject==3.36.0,pynvml==11.4.1,pyparsing==3.0.9,pyperclip==1.8.2,pyrsistent==0.18.1,pytest==7.1.3,pytest-cov==4.0.0,pytest-xdist==3.1.0,python-apt==2.0.0+ubuntu0.20.4.8,python-dateutil==2.8.2,python-dotenv==0.21.0,python-rapidjson==1.8,pytz==2022.2.1,PyYAML==5.4.1,pyzmq==24.0.0,regex==2022.9.13,requests==2.22.0,requests-oauthlib==1.3.1,requests-unixsocket==0.2.0,responses==0.22.0,rsa==4.7.2,s3fs==2022.2.0,s3transfer==0.6.0,sacremoses==0.0.53,scikit-build==0.15.0,scikit-learn==1.1.2,scipy==1.8.1,seedir==0.3.0,Send2Trash==1.8.0,sentry-sdk==1.9.8,setproctitle==1.3.2,setuptools-scm==7.0.5,shortuuid==1.0.9,six==1.15.0,sklearn==0.0,smmap==5.0.0,sniffio==1.3.0,snowballstemmer==2.2.0,sortedcontainers==2.4.0,soupsieve==2.3.2.post1,Sphinx==5.3.0,sphinx-markdown-tables==0.0.15,sphinx-multiversion==0.2.4,sphinx-rtd-theme==1.1.1,sphinx-togglebutton==0.3.1,sphinx_external_toc==0.3.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-copydirs @ git+https://github.com/mikemckiernan/sphinxcontrib-copydirs.git@8d23fdd32ee0b2f2d2ee091ac8eb8c1e88271dd4,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,SQLAlchemy==1.4.45,stack-data==0.5.0,starlette==0.20.4,stevedore==4.1.1,stringcase==1.2.0,supervisor==4.1.0,tabulate==0.8.10,tblib==1.7.0,tdqm==0.0.1,tenacity==8.0.1,tensorboard==2.9.1,tensorboard-data-server==0.6.1,tensorboard-plugin-wit==1.8.1,tensorflow==2.9.2,tensorflow-estimator==2.9.0,tensorflow-gpu==2.9.2,tensorflow-io-gcs-filesystem==0.27.0,tensorflow-metadata==1.10.0,termcolor==2.0.1,terminado==0.15.0,testbook==0.4.2,threadpoolctl==3.1.0,tinycss2==1.1.1,tokenizers==0.10.3,toml==0.10.2,tomli==2.0.1,toolz==0.12.0,torch==1.12.1+cu113,torchmetrics==0.3.2,tornado==6.2,tox==3.26.0,tqdm==4.64.1,traitlets==5.4.0,transformers==4.12.0,transformers4rec==0.1.12+2.gbcc939255,treelite==2.3.0,treelite-runtime==2.3.0,tritonclient==2.25.0,types-toml==0.10.8.1,typing-inspect==0.8.0,typing_extensions==4.3.0,uc-micro-py==1.0.1,urllib3==1.26.12,uvicorn==0.18.3,uvloop==0.17.0,versioneer==0.20,virtualenv==20.16.5,wandb==0.13.3,watchfiles==0.17.0,wcwidth==0.2.5,webencodings==0.5.1,websocket-client==1.4.1,websockets==10.3,Werkzeug==2.2.2,widgetsnbextension==3.6.0,wrapt==1.12.1,xgboost==1.6.2,xmltodict==0.13.0,yarl==1.8.1,zict==2.2.0,zipp==3.8.1,zope.event==4.5.0,zope.interface==5.4.0
test-gpu run-test-pre: PYTHONHASHSEED='282485996'
test-gpu run-test: commands[0] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/core.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/core.git
  Cloning https://github.com/NVIDIA-Merlin/core.git to /tmp/pip-req-build-8ee0giqj
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/core.git /tmp/pip-req-build-8ee0giqj
  Resolved https://github.com/NVIDIA-Merlin/core.git to commit 73c2afc277967015e2f334b8c57a9e8789fa19bd
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (3.19.5)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.2.5)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (21.3)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (7.0.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (0.55.1)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (4.64.1)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.5.0)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (1.3.5)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.4.1)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.2.0)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (8.1.3)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.7.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.4)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (6.2)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (3.0.3)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.8.0)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.0)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.4.0)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (65.5.1)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (0.38.1)
Requirement already satisfied: numpy<1.22,>=1.18 in /var/jenkins_home/.local/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (1.20.3)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core==0.9.0+19.g73c2afc) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2022.2.1)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.1)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.2)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.1.0)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.0.0)
Building wheels for collected packages: merlin-core
  Building wheel for merlin-core (pyproject.toml): started
  Building wheel for merlin-core (pyproject.toml): finished with status 'done'
  Created wheel for merlin-core: filename=merlin_core-0.9.0+19.g73c2afc-py3-none-any.whl size=119766 sha256=135124b4ea0f7e9e6fa938409402ebc2d446b2b6db271a0df56bfe21d60aedcd
  Stored in directory: /tmp/pip-ephem-wheel-cache-xep_nprs/wheels/c8/38/16/a6968787eafcec5fa772148af8408b089562f71af0752e8e84
Successfully built merlin-core
Installing collected packages: merlin-core
  Attempting uninstall: merlin-core
    Found existing installation: merlin-core 0.9.0
    Uninstalling merlin-core-0.9.0:
      Successfully uninstalled merlin-core-0.9.0
Successfully installed merlin-core-0.9.0+19.g73c2afc
test-gpu run-test: commands[1] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/nvtabular.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/nvtabular.git
  Cloning https://github.com/NVIDIA-Merlin/nvtabular.git to /tmp/pip-req-build-9iir573k
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/nvtabular.git /tmp/pip-req-build-9iir573k
  Resolved https://github.com/NVIDIA-Merlin/nvtabular.git to commit 985510ef0f529aa54a8ac29414d3ed71542c4c62
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from nvtabular==1.6.0+22.g985510ef) (1.8.1)
Requirement already satisfied: merlin-dataloader>=0.0.2 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.0.2+31.g282160b)
Requirement already satisfied: merlin-core>=0.2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.9.0+19.g73c2afc)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.19.5)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.5)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (21.3)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (7.0.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.55.1)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.64.1)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.5.0)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.3.5)
Requirement already satisfied: numpy<1.25.0,>=1.17.3 in /var/jenkins_home/.local/lib/python3.8/site-packages (from scipy->nvtabular==1.6.0+22.g985510ef) (1.20.3)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.4.1)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.2.0)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (8.1.3)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.7.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.4)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.2)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.3)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.8.0)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.0)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.4.0)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (65.5.1)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.38.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.2.1)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.1)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.2)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.1.0)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.0.0)
Building wheels for collected packages: nvtabular
  Building wheel for nvtabular (pyproject.toml): started
  Building wheel for nvtabular (pyproject.toml): finished with status 'done'
  Created wheel for nvtabular: filename=nvtabular-1.6.0+22.g985510ef-cp38-cp38-linux_x86_64.whl size=257120 sha256=1c0522beb5af16505083ab4197eb491257019df9d1ff0b291532494392b4ebdf
  Stored in directory: /tmp/pip-ephem-wheel-cache-ho8fp1no/wheels/8f/d9/f9/30f2cdc5bf8787fae6fdfe55afd6e1b493e619ec32c32ec40b
Successfully built nvtabular
Installing collected packages: nvtabular
  Attempting uninstall: nvtabular
    Found existing installation: nvtabular 1.1.1
    Not uninstalling nvtabular at /var/jenkins_home/.local/lib/python3.8/site-packages, outside environment /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
    Can't uninstall 'nvtabular'. No files were found to uninstall.
Successfully installed nvtabular-1.6.0+22.g985510ef
test-gpu run-test: commands[2] | python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
cachedir: .tox/test-gpu/.pytest_cache
rootdir: /var/jenkins_home/workspace/merlin_dataloader/dataloader, configfile: pyproject.toml
plugins: anyio-3.5.0, cov-4.0.0, xdist-3.1.0
collected 99 items / 1 skipped

tests/unit/dataloader/test_dataloader_backend.py ....                    [  4%]
tests/unit/dataloader/test_tf_dataloader.py ............................ [ 32%]
...........s....                                                         [ 48%]
tests/unit/dataloader/test_tf_embeddings.py ............                 [ 60%]
tests/unit/dataloader/test_torch_dataloader.py ......................... [ 85%]
                                                                         [ 85%]
tests/unit/dataloader/test_torch_embeddings.py ............              [ 97%]
tests/examples/test_getting_started_pytorch.py .                         [ 98%]
tests/examples/test_getting_started_tensorflow.py .                      [100%]

=============================== warnings summary ===============================
../../../../../usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33
  /usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    DASK_VERSION = LooseVersion(dask.__version__)

.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: 34 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

tests/unit/dataloader/test_jax_dataloader.py:24
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_jax_dataloader.py:24: PytestUnknownMarkWarning: Unknown pytest.mark.jax - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.jax

tests/unit/dataloader/test_tf_dataloader.py:32
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_dataloader.py:32: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_tf_embeddings.py:25
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_embeddings.py:25: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_torch_dataloader.py:30
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_dataloader.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/unit/dataloader/test_torch_embeddings.py:34
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_embeddings.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/examples/test_getting_started_pytorch.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_pytorch.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/examples/test_getting_started_tensorflow.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_tensorflow.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_seeding[128]
  /var/jenkins_home/.local/lib/python3.8/site-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: 
  A value is trying to be set on a copy of a slice from a DataFrame
  
  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    self._setitem_single_block(indexer, value, name)

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_empty_error[128]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/loader_base.py:85: UserWarning: no schema associated with the input dataset. Calling dataset.infer_schema to automatically generate
    warnings.warn(

tests/unit/dataloader/test_tf_dataloader.py: 7 warnings
tests/unit/dataloader/test_torch_dataloader.py: 11 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/merlin/io/dataset.py:253: UserWarning: Initializing an NVTabular Dataset in CPU mode.This is an experimental feature with extremely limited support!
    warnings.warn(

tests/unit/dataloader/test_torch_embeddings.py::test_embedding_torch_dl_with_lookup[None]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/ops/embeddings/torch_embedding_op.py:52: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at  ../torch/csrc/utils/tensor_new.cpp:201.)
    return torch.Tensor(values).to(torch.int32)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.10-final-0 -----------
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
merlin/dataloader/__init__.py                                2      0   100%
merlin/dataloader/_version.py                              354    205    42%
merlin/dataloader/jax.py                                    51     51     0%
merlin/dataloader/loader_base.py                           468     41    91%
merlin/dataloader/ops/__init__.py                            0      0   100%
merlin/dataloader/ops/embeddings/__init__.py                 0      0   100%
merlin/dataloader/ops/embeddings/embedding_op.py            63      6    90%
merlin/dataloader/ops/embeddings/tf_embedding_op.py         19      0   100%
merlin/dataloader/ops/embeddings/torch_embedding_op.py      20      0   100%
merlin/dataloader/tensorflow.py                            114     20    82%
merlin/dataloader/tf_utils.py                               57     27    53%
merlin/dataloader/torch.py                                  66      8    88%
merlin/loader/__init__.py                                    4      0   100%
merlin/loader/jax.py                                         1      1     0%
merlin/loader/tensorflow.py                                  1      0   100%
merlin/loader/torch.py                                       1      0   100%
----------------------------------------------------------------------------
TOTAL                                                     1221    359    71%

=========================== short test summary info ============================
SKIPPED [1] tests/unit/dataloader/test_jax_dataloader.py:26: could not import 'jax': No module named 'jax'
SKIPPED [1] tests/unit/dataloader/test_tf_dataloader.py:523: not working correctly in ci environment
============ 98 passed, 2 skipped, 63 warnings in 159.92s (0:02:39) ============
___________________________________ summary ____________________________________
  test-gpu: commands succeeded
  congratulations :)
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script  : #!/bin/bash
cd /var/jenkins_home/
CUDA_VISIBLE_DEVICES=1 python test_res_push.py "https://api.GitHub.com/repos/NVIDIA-Merlin/dataloader/issues/$ghprbPullId/comments" "/var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log" 
[workspace] $ /bin/bash /tmp/jenkins7885619416801463307.sh
</pre></details>
There is an edge case I haven't tested that might not work as expected - If this input schema setter is used after the loader has already started iterating through batches. changing the schema might not take effect until the next partition is loaded, or might even raise some exception. 

Maybe could add a check inside the input schema setter method to raise an Exception if the loader has already been started (e.g. [based on the _working property](https://github.com/NVIDIA-Merlin/dataloader/blob/c52a7071c522c0fb5ad485675195c973743f66bc/merlin/dataloader/loader_base.py#L218-L222)  for example). Explaining that setting the schema is not supported if the loader has already started.
> Maybe could add a check inside the input schema setter method to raise an Exception if the loader has already been started (e.g. [based on the _working property](https://github.com/NVIDIA-Merlin/dataloader/blob/c52a7071c522c0fb5ad485675195c973743f66bc/merlin/dataloader/loader_base.py#L218-L222) for example). Explaining that setting the schema is not supported if the loader has already started.

I think this is a good idea.

<details><summary>Click to view CI Results</summary><pre>GitHub pull request #86 of commit b09729536407eed47c1b178046762a9b8c0d9487, no merge conflicts.
Running as SYSTEM
Setting status of b09729536407eed47c1b178046762a9b8c0d9487 to PENDING with url http://merlin-infra1.nvidia.com:8080/job/merlin_dataloader/162/ and message: 'Pending'
Using context: Jenkins
Building on the built-in node in workspace /var/jenkins_home/jobs/merlin_dataloader/workspace
using credential systems-login
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/NVIDIA-Merlin/dataloader # timeout=10
Fetching upstream changes from https://github.com/NVIDIA-Merlin/dataloader
 > git --version # timeout=10
using GIT_ASKPASS to set credentials login for merlin-systems
 > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/dataloader +refs/pull/86/*:refs/remotes/origin/pr/86/* # timeout=10
 > git rev-parse b09729536407eed47c1b178046762a9b8c0d9487^{commit} # timeout=10
Checking out Revision b09729536407eed47c1b178046762a9b8c0d9487 (detached)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f b09729536407eed47c1b178046762a9b8c0d9487 # timeout=10
Commit message: "Raise error if input_schema setter is used after loader started"
 > git rev-list --no-walk 282160b5da540d2e6c62c78af4d870a185dd2bd9 # timeout=10
[workspace] $ /bin/bash /tmp/jenkins17792543443432338924.sh
GLOB sdist-make: /var/jenkins_home/workspace/merlin_dataloader/dataloader/setup.py
test-gpu recreate: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
test-gpu installdeps: -rrequirements/dev.txt, pytest, pytest-cov
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu inst: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/.tmp/package/1/merlin-dataloader-0.0.2+32.gb097295.zip
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu installed: absl-py==1.2.0,aiohttp==3.8.1,aiosignal==1.2.0,alabaster==0.7.12,alembic==1.9.0,anyio==3.6.1,argon2-cffi==21.3.0,argon2-cffi-bindings==21.2.0,astroid==2.5.6,asttokens==2.0.8,astunparse==1.6.3,asv==0.5.1,asvdb==0.4.2,async-timeout==4.0.2,attrs==22.1.0,autopage==0.5.1,awscli==1.27.32,Babel==2.10.3,backcall==0.2.0,beautifulsoup4==4.11.1,betterproto==1.2.5,black==22.6.0,bleach==5.0.1,boto3==1.24.75,botocore==1.29.32,Brotli==1.0.9,cachetools==5.2.0,certifi==2019.11.28,cffi==1.15.1,chardet==3.0.4,charset-normalizer==2.1.1,clang==5.0,click==8.1.3,cliff==4.1.0,cloudpickle==2.2.0,cmaes==0.9.0,cmake==3.24.1.1,cmd2==2.4.2,colorama==0.4.4,colorlog==6.7.0,contourpy==1.0.5,coverage==7.0.0,cpplint==1.6.1,cryptography==38.0.4,cuda-python==11.7.1,cupy-cuda117==10.6.0,cycler==0.11.0,Cython==0.29.32,dask==2022.1.1,dbus-python==1.2.16,debugpy==1.6.3,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.6,distributed==2022.5.1,distro==1.7.0,dm-tree==0.1.6,docker-pycreds==0.4.0,docutils==0.16,emoji==1.7.0,entrypoints==0.4,execnet==1.9.0,executing==1.0.0,faiss==1.7.2,faiss-gpu==1.7.2,fastai==2.7.9,fastapi==0.85.0,fastavro==1.6.1,fastcore==1.5.27,fastdownload==0.0.7,fastjsonschema==2.16.1,fastprogress==1.0.3,fastrlock==0.8,feast==0.19.4,fiddle==0.2.2,filelock==3.8.0,flatbuffers==1.12,fonttools==4.37.3,frozenlist==1.3.1,fsspec==2022.5.0,gast==0.4.0,gevent==21.12.0,geventhttpclient==2.0.2,gitdb==4.0.9,GitPython==3.1.27,google==3.0.0,google-api-core==2.10.1,google-auth==2.11.1,google-auth-oauthlib==0.4.6,google-pasta==0.2.0,googleapis-common-protos==1.52.0,graphviz==0.20.1,greenlet==1.1.3,grpcio==1.41.0,grpcio-channelz==1.49.0,grpcio-reflection==1.48.1,grpclib==0.4.3,h11==0.13.0,h2==4.1.0,h5py==3.7.0,HeapDict==1.0.1,horovod==0.26.1,hpack==4.0.0,httptools==0.5.0,hugectr2onnx==0.0.0,huggingface-hub==0.9.1,hyperframe==6.0.1,idna==2.8,imagesize==1.4.1,implicit==0.6.1,importlib-metadata==4.12.0,importlib-resources==5.9.0,iniconfig==1.1.1,ipykernel==6.15.3,ipython==8.5.0,ipython-genutils==0.2.0,ipywidgets==7.7.0,jedi==0.18.1,Jinja2==3.1.2,jmespath==1.0.1,joblib==1.2.0,json5==0.9.10,jsonschema==4.16.0,jupyter-cache==0.4.3,jupyter-core==4.11.1,jupyter-server==1.18.1,jupyter-server-mathjax==0.2.5,jupyter-sphinx==0.3.2,jupyter_client==7.3.5,jupyterlab==3.4.7,jupyterlab-pygments==0.2.2,jupyterlab-widgets==1.1.0,jupyterlab_server==2.15.1,keras==2.9.0,Keras-Preprocessing==1.1.2,kiwisolver==1.4.4,lazy-object-proxy==1.8.0,libclang==14.0.6,libcst==0.4.7,lightfm==1.16,lightgbm==3.3.2,linkify-it-py==1.0.3,llvmlite==0.39.1,locket==1.0.0,lxml==4.9.1,Mako==1.2.4,Markdown==3.4.1,markdown-it-py==1.1.0,MarkupSafe==2.1.1,matplotlib==3.6.0,matplotlib-inline==0.1.6,mdit-py-plugins==0.2.8,merlin-core==0.6.0+1.g5926fcf,merlin-dataloader==0.0.2+32.gb097295,merlin-models==0.7.0+11.g280956aa4,merlin-systems==0.5.0+4.g15074ad,mistune==2.0.4,mmh3==3.0.0,moto==4.0.12,mpi4py==3.1.3,msgpack==1.0.4,multidict==6.0.2,mypy-extensions==0.4.3,myst-nb==0.13.2,myst-parser==0.15.2,natsort==8.1.0,nbclassic==0.4.3,nbclient==0.6.8,nbconvert==7.0.0,nbdime==3.1.1,nbformat==5.5.0,nbsphinx==0.8.10,nest-asyncio==1.5.5,ninja==1.10.2.3,notebook==6.4.12,notebook-shim==0.1.0,npy-append-array==0.9.13,numba==0.56.2,numpy==1.22.4,nvidia-pyindex==1.0.9,# Editable install with no version control (nvtabular==1.4.0+8.g95e12d347),-e /usr/local/lib/python3.8/dist-packages,nvtx==0.2.5,oauthlib==3.2.1,oldest-supported-numpy==2022.8.16,onnx==1.12.0,onnxruntime==1.11.1,opt-einsum==3.3.0,optuna==3.0.5,packaging==21.3,pandas==1.3.5,pandavro==1.5.2,pandocfilters==1.5.0,parso==0.8.3,partd==1.3.0,pathtools==0.1.2,pbr==5.11.0,pexpect==4.8.0,pickleshare==0.7.5,Pillow==9.2.0,pkgutil_resolve_name==1.3.10,platformdirs==2.5.2,plotly==5.11.0,pluggy==1.0.0,prettytable==3.5.0,prometheus-client==0.14.1,promise==2.3,prompt-toolkit==3.0.31,proto-plus==1.19.6,protobuf==3.19.5,psutil==5.9.2,ptyprocess==0.7.0,pure-eval==0.2.2,py==1.11.0,pyarrow==7.0.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pybind11==2.10.0,pycparser==2.21,pydantic==1.10.2,pydot==1.4.2,Pygments==2.13.0,PyGObject==3.36.0,pynvml==11.4.1,pyparsing==3.0.9,pyperclip==1.8.2,pyrsistent==0.18.1,pytest==7.1.3,pytest-cov==4.0.0,pytest-xdist==3.1.0,python-apt==2.0.0+ubuntu0.20.4.8,python-dateutil==2.8.2,python-dotenv==0.21.0,python-rapidjson==1.8,pytz==2022.2.1,PyYAML==5.4.1,pyzmq==24.0.0,regex==2022.9.13,requests==2.22.0,requests-oauthlib==1.3.1,requests-unixsocket==0.2.0,responses==0.22.0,rsa==4.7.2,s3fs==2022.2.0,s3transfer==0.6.0,sacremoses==0.0.53,scikit-build==0.15.0,scikit-learn==1.1.2,scipy==1.8.1,seedir==0.3.0,Send2Trash==1.8.0,sentry-sdk==1.9.8,setproctitle==1.3.2,setuptools-scm==7.0.5,shortuuid==1.0.9,six==1.15.0,sklearn==0.0,smmap==5.0.0,sniffio==1.3.0,snowballstemmer==2.2.0,sortedcontainers==2.4.0,soupsieve==2.3.2.post1,Sphinx==5.3.0,sphinx-markdown-tables==0.0.15,sphinx-multiversion==0.2.4,sphinx-rtd-theme==1.1.1,sphinx-togglebutton==0.3.1,sphinx_external_toc==0.3.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-copydirs @ git+https://github.com/mikemckiernan/sphinxcontrib-copydirs.git@8d23fdd32ee0b2f2d2ee091ac8eb8c1e88271dd4,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,SQLAlchemy==1.4.45,stack-data==0.5.0,starlette==0.20.4,stevedore==4.1.1,stringcase==1.2.0,supervisor==4.1.0,tabulate==0.8.10,tblib==1.7.0,tdqm==0.0.1,tenacity==8.0.1,tensorboard==2.9.1,tensorboard-data-server==0.6.1,tensorboard-plugin-wit==1.8.1,tensorflow==2.9.2,tensorflow-estimator==2.9.0,tensorflow-gpu==2.9.2,tensorflow-io-gcs-filesystem==0.27.0,tensorflow-metadata==1.10.0,termcolor==2.0.1,terminado==0.15.0,testbook==0.4.2,threadpoolctl==3.1.0,tinycss2==1.1.1,tokenizers==0.10.3,toml==0.10.2,tomli==2.0.1,toolz==0.12.0,torch==1.12.1+cu113,torchmetrics==0.3.2,tornado==6.2,tox==3.26.0,tqdm==4.64.1,traitlets==5.4.0,transformers==4.12.0,transformers4rec==0.1.12+2.gbcc939255,treelite==2.3.0,treelite-runtime==2.3.0,tritonclient==2.25.0,types-toml==0.10.8.1,typing-inspect==0.8.0,typing_extensions==4.3.0,uc-micro-py==1.0.1,urllib3==1.26.12,uvicorn==0.18.3,uvloop==0.17.0,versioneer==0.20,virtualenv==20.16.5,wandb==0.13.3,watchfiles==0.17.0,wcwidth==0.2.5,webencodings==0.5.1,websocket-client==1.4.1,websockets==10.3,Werkzeug==2.2.2,widgetsnbextension==3.6.0,wrapt==1.12.1,xgboost==1.6.2,xmltodict==0.13.0,yarl==1.8.1,zict==2.2.0,zipp==3.8.1,zope.event==4.5.0,zope.interface==5.4.0
test-gpu run-test-pre: PYTHONHASHSEED='556015852'
test-gpu run-test: commands[0] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/core.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/core.git
  Cloning https://github.com/NVIDIA-Merlin/core.git to /tmp/pip-req-build-14ym9m91
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/core.git /tmp/pip-req-build-14ym9m91
  Resolved https://github.com/NVIDIA-Merlin/core.git to commit 73c2afc277967015e2f334b8c57a9e8789fa19bd
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (21.3)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (4.64.1)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (7.0.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.10.0)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.5.0)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (3.19.5)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.2.5)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (1.3.5)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (0.55.1)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (0.4.3)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.4.1)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (6.2)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (8.1.3)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (3.0.3)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.7.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.4)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.0)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.4.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.8.0)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (65.6.3)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (0.38.1)
Requirement already satisfied: numpy<1.22,>=1.18 in /var/jenkins_home/.local/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (1.20.3)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core==0.9.0+19.g73c2afc) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2022.2.1)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.0.0)
Building wheels for collected packages: merlin-core
  Building wheel for merlin-core (pyproject.toml): started
  Building wheel for merlin-core (pyproject.toml): finished with status 'done'
  Created wheel for merlin-core: filename=merlin_core-0.9.0+19.g73c2afc-py3-none-any.whl size=119766 sha256=5c37754a0b0cbea043508d8b667dd04c2265ccea642920f021197ff008ddb26d
  Stored in directory: /tmp/pip-ephem-wheel-cache-z9eok5sn/wheels/c8/38/16/a6968787eafcec5fa772148af8408b089562f71af0752e8e84
Successfully built merlin-core
Installing collected packages: merlin-core
  Attempting uninstall: merlin-core
    Found existing installation: merlin-core 0.9.0
    Uninstalling merlin-core-0.9.0:
      Successfully uninstalled merlin-core-0.9.0
Successfully installed merlin-core-0.9.0+19.g73c2afc
test-gpu run-test: commands[1] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/nvtabular.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/nvtabular.git
  Cloning https://github.com/NVIDIA-Merlin/nvtabular.git to /tmp/pip-req-build-b12enzy4
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/nvtabular.git /tmp/pip-req-build-b12enzy4
  Resolved https://github.com/NVIDIA-Merlin/nvtabular.git to commit 985510ef0f529aa54a8ac29414d3ed71542c4c62
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: merlin-core>=0.2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.9.0+19.g73c2afc)
Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from nvtabular==1.6.0+22.g985510ef) (1.8.1)
Requirement already satisfied: merlin-dataloader>=0.0.2 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.0.2+32.gb097295)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (21.3)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.64.1)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (7.0.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.10.0)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.5.0)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.19.5)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.5)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.3.5)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.55.1)
Requirement already satisfied: numpy<1.25.0,>=1.17.3 in /var/jenkins_home/.local/lib/python3.8/site-packages (from scipy->nvtabular==1.6.0+22.g985510ef) (1.20.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.4.3)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.4.1)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.12.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.2)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (8.1.3)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.3)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.7.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.4)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.0)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.4.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.8.0)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (65.6.3)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.38.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.2.1)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.52.0)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.1)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.0.0)
Building wheels for collected packages: nvtabular
  Building wheel for nvtabular (pyproject.toml): started
  Building wheel for nvtabular (pyproject.toml): finished with status 'done'
  Created wheel for nvtabular: filename=nvtabular-1.6.0+22.g985510ef-cp38-cp38-linux_x86_64.whl size=257120 sha256=4658a0144ae7940fd3ad31ad0f0cc89c8ac5763fac56a4eb16e14d327511f8f4
  Stored in directory: /tmp/pip-ephem-wheel-cache-h8bvuzpk/wheels/8f/d9/f9/30f2cdc5bf8787fae6fdfe55afd6e1b493e619ec32c32ec40b
Successfully built nvtabular
Installing collected packages: nvtabular
  Attempting uninstall: nvtabular
    Found existing installation: nvtabular 1.1.1
    Not uninstalling nvtabular at /var/jenkins_home/.local/lib/python3.8/site-packages, outside environment /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
    Can't uninstall 'nvtabular'. No files were found to uninstall.
Successfully installed nvtabular-1.6.0+22.g985510ef
test-gpu run-test: commands[2] | python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
cachedir: .tox/test-gpu/.pytest_cache
rootdir: /var/jenkins_home/workspace/merlin_dataloader/dataloader, configfile: pyproject.toml
plugins: anyio-3.5.0, cov-4.0.0, xdist-3.1.0
collected 100 items / 1 skipped

tests/unit/dataloader/test_dataloader_backend.py ....                    [  4%]
tests/unit/dataloader/test_tf_dataloader.py ..F......................... [ 32%]
............s....                                                        [ 49%]
tests/unit/dataloader/test_tf_embeddings.py ............                 [ 61%]
tests/unit/dataloader/test_torch_dataloader.py ......................... [ 86%]
                                                                         [ 86%]
tests/unit/dataloader/test_torch_embeddings.py ............              [ 98%]
tests/examples/test_getting_started_pytorch.py .                         [ 99%]
tests/examples/test_getting_started_tensorflow.py .                      [100%]

=================================== FAILURES ===================================
______________________ test_set_input_schema_after_start _______________________

    def test_set_input_schema_after_start():
        df = make_df({"a": [1, 2, 3], "b": [4, 5, 6]})
        dataset = Dataset(df)
        loader = tf_dataloader.Loader(dataset, batch_size=1)
        with pytest.raises(RuntimeError) as exc_info:
            x, y = loader.peek()
>           loader.input_schema = dataset.schema.excluding_by_name(["b"])
E           Failed: DID NOT RAISE <class 'RuntimeError'>

tests/unit/dataloader/test_tf_dataloader.py:72: Failed
=============================== warnings summary ===============================
../../../../../usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33
  /usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    DASK_VERSION = LooseVersion(dask.__version__)

.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: 34 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

tests/unit/dataloader/test_jax_dataloader.py:24
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_jax_dataloader.py:24: PytestUnknownMarkWarning: Unknown pytest.mark.jax - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.jax

tests/unit/dataloader/test_tf_dataloader.py:32
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_dataloader.py:32: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_tf_embeddings.py:25
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_embeddings.py:25: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_torch_dataloader.py:30
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_dataloader.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/unit/dataloader/test_torch_embeddings.py:34
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_embeddings.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/examples/test_getting_started_pytorch.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_pytorch.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/examples/test_getting_started_tensorflow.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_tensorflow.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_seeding[128]
  /var/jenkins_home/.local/lib/python3.8/site-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: 
  A value is trying to be set on a copy of a slice from a DataFrame
  
  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    self._setitem_single_block(indexer, value, name)

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_empty_error[128]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/loader_base.py:85: UserWarning: no schema associated with the input dataset. Calling dataset.infer_schema to automatically generate
    warnings.warn(

tests/unit/dataloader/test_tf_dataloader.py: 7 warnings
tests/unit/dataloader/test_torch_dataloader.py: 11 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/merlin/io/dataset.py:253: UserWarning: Initializing an NVTabular Dataset in CPU mode.This is an experimental feature with extremely limited support!
    warnings.warn(

tests/unit/dataloader/test_torch_embeddings.py::test_embedding_torch_dl_with_lookup[None]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/ops/embeddings/torch_embedding_op.py:52: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at  ../torch/csrc/utils/tensor_new.cpp:201.)
    return torch.Tensor(values).to(torch.int32)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.10-final-0 -----------
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
merlin/dataloader/__init__.py                                2      0   100%
merlin/dataloader/_version.py                              354    205    42%
merlin/dataloader/jax.py                                    51     51     0%
merlin/dataloader/loader_base.py                           470     42    91%
merlin/dataloader/ops/__init__.py                            0      0   100%
merlin/dataloader/ops/embeddings/__init__.py                 0      0   100%
merlin/dataloader/ops/embeddings/embedding_op.py            63      6    90%
merlin/dataloader/ops/embeddings/tf_embedding_op.py         19      0   100%
merlin/dataloader/ops/embeddings/torch_embedding_op.py      20      0   100%
merlin/dataloader/tensorflow.py                            114     20    82%
merlin/dataloader/tf_utils.py                               57     27    53%
merlin/dataloader/torch.py                                  66      8    88%
merlin/loader/__init__.py                                    4      0   100%
merlin/loader/jax.py                                         1      1     0%
merlin/loader/tensorflow.py                                  1      0   100%
merlin/loader/torch.py                                       1      0   100%
----------------------------------------------------------------------------
TOTAL                                                     1223    360    71%

=========================== short test summary info ============================
SKIPPED [1] tests/unit/dataloader/test_jax_dataloader.py:26: could not import 'jax': No module named 'jax'
SKIPPED [1] tests/unit/dataloader/test_tf_dataloader.py:535: not working correctly in ci environment
======= 1 failed, 98 passed, 2 skipped, 63 warnings in 158.68s (0:02:38) =======
ERROR: InvocationError for command /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/bin/python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   test-gpu: commands failed
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script  : #!/bin/bash
cd /var/jenkins_home/
CUDA_VISIBLE_DEVICES=1 python test_res_push.py "https://api.GitHub.com/repos/NVIDIA-Merlin/dataloader/issues/$ghprbPullId/comments" "/var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log" 
[workspace] $ /bin/bash /tmp/jenkins9453236715739882839.sh
</pre></details>
<details><summary>Click to view CI Results</summary><pre>GitHub pull request #86 of commit 745d7c53d7f63ee39bdc250f30175fbc4b5924df, no merge conflicts.
Running as SYSTEM
Setting status of 745d7c53d7f63ee39bdc250f30175fbc4b5924df to PENDING with url http://merlin-infra1.nvidia.com:8080/job/merlin_dataloader/163/ and message: 'Pending'
Using context: Jenkins
Building on the built-in node in workspace /var/jenkins_home/jobs/merlin_dataloader/workspace
using credential systems-login
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/NVIDIA-Merlin/dataloader # timeout=10
Fetching upstream changes from https://github.com/NVIDIA-Merlin/dataloader
 > git --version # timeout=10
using GIT_ASKPASS to set credentials login for merlin-systems
 > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/dataloader +refs/pull/86/*:refs/remotes/origin/pr/86/* # timeout=10
 > git rev-parse 745d7c53d7f63ee39bdc250f30175fbc4b5924df^{commit} # timeout=10
Checking out Revision 745d7c53d7f63ee39bdc250f30175fbc4b5924df (detached)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 745d7c53d7f63ee39bdc250f30175fbc4b5924df # timeout=10
Commit message: "Check `_batch_itr` property to validate if loader is started"
 > git rev-list --no-walk b09729536407eed47c1b178046762a9b8c0d9487 # timeout=10
[workspace] $ /bin/bash /tmp/jenkins16694826836221002651.sh
GLOB sdist-make: /var/jenkins_home/workspace/merlin_dataloader/dataloader/setup.py
test-gpu recreate: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
test-gpu installdeps: -rrequirements/dev.txt, pytest, pytest-cov
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu inst: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/.tmp/package/1/merlin-dataloader-0.0.2+33.g745d7c5.zip
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu installed: absl-py==1.2.0,aiohttp==3.8.1,aiosignal==1.2.0,alabaster==0.7.12,alembic==1.9.0,anyio==3.6.1,argon2-cffi==21.3.0,argon2-cffi-bindings==21.2.0,astroid==2.5.6,asttokens==2.0.8,astunparse==1.6.3,asv==0.5.1,asvdb==0.4.2,async-timeout==4.0.2,attrs==22.1.0,autopage==0.5.1,awscli==1.27.32,Babel==2.10.3,backcall==0.2.0,beautifulsoup4==4.11.1,betterproto==1.2.5,black==22.6.0,bleach==5.0.1,boto3==1.24.75,botocore==1.29.32,Brotli==1.0.9,cachetools==5.2.0,certifi==2019.11.28,cffi==1.15.1,chardet==3.0.4,charset-normalizer==2.1.1,clang==5.0,click==8.1.3,cliff==4.1.0,cloudpickle==2.2.0,cmaes==0.9.0,cmake==3.24.1.1,cmd2==2.4.2,colorama==0.4.4,colorlog==6.7.0,contourpy==1.0.5,coverage==7.0.0,cpplint==1.6.1,cryptography==38.0.4,cuda-python==11.7.1,cupy-cuda117==10.6.0,cycler==0.11.0,Cython==0.29.32,dask==2022.1.1,dbus-python==1.2.16,debugpy==1.6.3,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.6,distributed==2022.5.1,distro==1.7.0,dm-tree==0.1.6,docker-pycreds==0.4.0,docutils==0.16,emoji==1.7.0,entrypoints==0.4,execnet==1.9.0,executing==1.0.0,faiss==1.7.2,faiss-gpu==1.7.2,fastai==2.7.9,fastapi==0.85.0,fastavro==1.6.1,fastcore==1.5.27,fastdownload==0.0.7,fastjsonschema==2.16.1,fastprogress==1.0.3,fastrlock==0.8,feast==0.19.4,fiddle==0.2.2,filelock==3.8.0,flatbuffers==1.12,fonttools==4.37.3,frozenlist==1.3.1,fsspec==2022.5.0,gast==0.4.0,gevent==21.12.0,geventhttpclient==2.0.2,gitdb==4.0.9,GitPython==3.1.27,google==3.0.0,google-api-core==2.10.1,google-auth==2.11.1,google-auth-oauthlib==0.4.6,google-pasta==0.2.0,googleapis-common-protos==1.52.0,graphviz==0.20.1,greenlet==1.1.3,grpcio==1.41.0,grpcio-channelz==1.49.0,grpcio-reflection==1.48.1,grpclib==0.4.3,h11==0.13.0,h2==4.1.0,h5py==3.7.0,HeapDict==1.0.1,horovod==0.26.1,hpack==4.0.0,httptools==0.5.0,hugectr2onnx==0.0.0,huggingface-hub==0.9.1,hyperframe==6.0.1,idna==2.8,imagesize==1.4.1,implicit==0.6.1,importlib-metadata==4.12.0,importlib-resources==5.9.0,iniconfig==1.1.1,ipykernel==6.15.3,ipython==8.5.0,ipython-genutils==0.2.0,ipywidgets==7.7.0,jedi==0.18.1,Jinja2==3.1.2,jmespath==1.0.1,joblib==1.2.0,json5==0.9.10,jsonschema==4.16.0,jupyter-cache==0.4.3,jupyter-core==4.11.1,jupyter-server==1.18.1,jupyter-server-mathjax==0.2.5,jupyter-sphinx==0.3.2,jupyter_client==7.3.5,jupyterlab==3.4.7,jupyterlab-pygments==0.2.2,jupyterlab-widgets==1.1.0,jupyterlab_server==2.15.1,keras==2.9.0,Keras-Preprocessing==1.1.2,kiwisolver==1.4.4,lazy-object-proxy==1.8.0,libclang==14.0.6,libcst==0.4.7,lightfm==1.16,lightgbm==3.3.2,linkify-it-py==1.0.3,llvmlite==0.39.1,locket==1.0.0,lxml==4.9.1,Mako==1.2.4,Markdown==3.4.1,markdown-it-py==1.1.0,MarkupSafe==2.1.1,matplotlib==3.6.0,matplotlib-inline==0.1.6,mdit-py-plugins==0.2.8,merlin-core==0.6.0+1.g5926fcf,merlin-dataloader==0.0.2+33.g745d7c5,merlin-models==0.7.0+11.g280956aa4,merlin-systems==0.5.0+4.g15074ad,mistune==2.0.4,mmh3==3.0.0,moto==4.0.12,mpi4py==3.1.3,msgpack==1.0.4,multidict==6.0.2,mypy-extensions==0.4.3,myst-nb==0.13.2,myst-parser==0.15.2,natsort==8.1.0,nbclassic==0.4.3,nbclient==0.6.8,nbconvert==7.0.0,nbdime==3.1.1,nbformat==5.5.0,nbsphinx==0.8.10,nest-asyncio==1.5.5,ninja==1.10.2.3,notebook==6.4.12,notebook-shim==0.1.0,npy-append-array==0.9.13,numba==0.56.2,numpy==1.22.4,nvidia-pyindex==1.0.9,# Editable install with no version control (nvtabular==1.4.0+8.g95e12d347),-e /usr/local/lib/python3.8/dist-packages,nvtx==0.2.5,oauthlib==3.2.1,oldest-supported-numpy==2022.8.16,onnx==1.12.0,onnxruntime==1.11.1,opt-einsum==3.3.0,optuna==3.0.5,packaging==21.3,pandas==1.3.5,pandavro==1.5.2,pandocfilters==1.5.0,parso==0.8.3,partd==1.3.0,pathtools==0.1.2,pbr==5.11.0,pexpect==4.8.0,pickleshare==0.7.5,Pillow==9.2.0,pkgutil_resolve_name==1.3.10,platformdirs==2.5.2,plotly==5.11.0,pluggy==1.0.0,prettytable==3.5.0,prometheus-client==0.14.1,promise==2.3,prompt-toolkit==3.0.31,proto-plus==1.19.6,protobuf==3.19.5,psutil==5.9.2,ptyprocess==0.7.0,pure-eval==0.2.2,py==1.11.0,pyarrow==7.0.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pybind11==2.10.0,pycparser==2.21,pydantic==1.10.2,pydot==1.4.2,Pygments==2.13.0,PyGObject==3.36.0,pynvml==11.4.1,pyparsing==3.0.9,pyperclip==1.8.2,pyrsistent==0.18.1,pytest==7.1.3,pytest-cov==4.0.0,pytest-xdist==3.1.0,python-apt==2.0.0+ubuntu0.20.4.8,python-dateutil==2.8.2,python-dotenv==0.21.0,python-rapidjson==1.8,pytz==2022.2.1,PyYAML==5.4.1,pyzmq==24.0.0,regex==2022.9.13,requests==2.22.0,requests-oauthlib==1.3.1,requests-unixsocket==0.2.0,responses==0.22.0,rsa==4.7.2,s3fs==2022.2.0,s3transfer==0.6.0,sacremoses==0.0.53,scikit-build==0.15.0,scikit-learn==1.1.2,scipy==1.8.1,seedir==0.3.0,Send2Trash==1.8.0,sentry-sdk==1.9.8,setproctitle==1.3.2,setuptools-scm==7.0.5,shortuuid==1.0.9,six==1.15.0,sklearn==0.0,smmap==5.0.0,sniffio==1.3.0,snowballstemmer==2.2.0,sortedcontainers==2.4.0,soupsieve==2.3.2.post1,Sphinx==5.3.0,sphinx-markdown-tables==0.0.15,sphinx-multiversion==0.2.4,sphinx-rtd-theme==1.1.1,sphinx-togglebutton==0.3.1,sphinx_external_toc==0.3.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-copydirs @ git+https://github.com/mikemckiernan/sphinxcontrib-copydirs.git@8d23fdd32ee0b2f2d2ee091ac8eb8c1e88271dd4,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,SQLAlchemy==1.4.45,stack-data==0.5.0,starlette==0.20.4,stevedore==4.1.1,stringcase==1.2.0,supervisor==4.1.0,tabulate==0.8.10,tblib==1.7.0,tdqm==0.0.1,tenacity==8.0.1,tensorboard==2.9.1,tensorboard-data-server==0.6.1,tensorboard-plugin-wit==1.8.1,tensorflow==2.9.2,tensorflow-estimator==2.9.0,tensorflow-gpu==2.9.2,tensorflow-io-gcs-filesystem==0.27.0,tensorflow-metadata==1.10.0,termcolor==2.0.1,terminado==0.15.0,testbook==0.4.2,threadpoolctl==3.1.0,tinycss2==1.1.1,tokenizers==0.10.3,toml==0.10.2,tomli==2.0.1,toolz==0.12.0,torch==1.12.1+cu113,torchmetrics==0.3.2,tornado==6.2,tox==3.26.0,tqdm==4.64.1,traitlets==5.4.0,transformers==4.12.0,transformers4rec==0.1.12+2.gbcc939255,treelite==2.3.0,treelite-runtime==2.3.0,tritonclient==2.25.0,types-toml==0.10.8.1,typing-inspect==0.8.0,typing_extensions==4.3.0,uc-micro-py==1.0.1,urllib3==1.26.12,uvicorn==0.18.3,uvloop==0.17.0,versioneer==0.20,virtualenv==20.16.5,wandb==0.13.3,watchfiles==0.17.0,wcwidth==0.2.5,webencodings==0.5.1,websocket-client==1.4.1,websockets==10.3,Werkzeug==2.2.2,widgetsnbextension==3.6.0,wrapt==1.12.1,xgboost==1.6.2,xmltodict==0.13.0,yarl==1.8.1,zict==2.2.0,zipp==3.8.1,zope.event==4.5.0,zope.interface==5.4.0
test-gpu run-test-pre: PYTHONHASHSEED='3456671281'
test-gpu run-test: commands[0] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/core.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/core.git
  Cloning https://github.com/NVIDIA-Merlin/core.git to /tmp/pip-req-build-69x9rql6
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/core.git /tmp/pip-req-build-69x9rql6
  Resolved https://github.com/NVIDIA-Merlin/core.git to commit 73c2afc277967015e2f334b8c57a9e8789fa19bd
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.10.0)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.5.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (4.64.1)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.2.5)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (3.19.5)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (7.0.0)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (1.3.5)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (0.55.1)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (21.3)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.12.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.4.1)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.2.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.4)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (6.2)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.7.0)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (8.1.3)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.4.0)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.8.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (3.0.3)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (65.6.3)
Requirement already satisfied: numpy<1.22,>=1.18 in /var/jenkins_home/.local/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (1.20.3)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (0.38.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core==0.9.0+19.g73c2afc) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2022.2.1)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.52.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.0.0)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.1)
Building wheels for collected packages: merlin-core
  Building wheel for merlin-core (pyproject.toml): started
  Building wheel for merlin-core (pyproject.toml): finished with status 'done'
  Created wheel for merlin-core: filename=merlin_core-0.9.0+19.g73c2afc-py3-none-any.whl size=119766 sha256=40daaf9de9600510aca47428c4474396903b8f78a781cacaa0ca826974f9cd7e
  Stored in directory: /tmp/pip-ephem-wheel-cache-48dmtokj/wheels/c8/38/16/a6968787eafcec5fa772148af8408b089562f71af0752e8e84
Successfully built merlin-core
Installing collected packages: merlin-core
  Attempting uninstall: merlin-core
    Found existing installation: merlin-core 0.9.0
    Uninstalling merlin-core-0.9.0:
      Successfully uninstalled merlin-core-0.9.0
Successfully installed merlin-core-0.9.0+19.g73c2afc
test-gpu run-test: commands[1] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/nvtabular.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/nvtabular.git
  Cloning https://github.com/NVIDIA-Merlin/nvtabular.git to /tmp/pip-req-build-qbwb4ias
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/nvtabular.git /tmp/pip-req-build-qbwb4ias
  Resolved https://github.com/NVIDIA-Merlin/nvtabular.git to commit 985510ef0f529aa54a8ac29414d3ed71542c4c62
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from nvtabular==1.6.0+22.g985510ef) (1.8.1)
Requirement already satisfied: merlin-dataloader>=0.0.2 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.0.2+33.g745d7c5)
Requirement already satisfied: merlin-core>=0.2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.9.0+19.g73c2afc)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.10.0)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.5.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.64.1)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.5)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.19.5)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (7.0.0)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.3.5)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.55.1)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (21.3)
Requirement already satisfied: numpy<1.25.0,>=1.17.3 in /var/jenkins_home/.local/lib/python3.8/site-packages (from scipy->nvtabular==1.6.0+22.g985510ef) (1.20.3)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.4.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.12.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.4.1)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.2.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.4)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.2)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.7.0)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (8.1.3)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.4.0)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.8.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.3)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (65.6.3)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.38.1)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.2.1)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.52.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.1)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.1.0)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.0.0)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.1)
Building wheels for collected packages: nvtabular
  Building wheel for nvtabular (pyproject.toml): started
  Building wheel for nvtabular (pyproject.toml): finished with status 'done'
  Created wheel for nvtabular: filename=nvtabular-1.6.0+22.g985510ef-cp38-cp38-linux_x86_64.whl size=257120 sha256=0d6a8444ba1e4d22c7c9e60f97f19efd9ead4a8e3da1ab1794d567604e679714
  Stored in directory: /tmp/pip-ephem-wheel-cache-y98pf_0c/wheels/8f/d9/f9/30f2cdc5bf8787fae6fdfe55afd6e1b493e619ec32c32ec40b
Successfully built nvtabular
Installing collected packages: nvtabular
  Attempting uninstall: nvtabular
    Found existing installation: nvtabular 1.1.1
    Not uninstalling nvtabular at /var/jenkins_home/.local/lib/python3.8/site-packages, outside environment /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
    Can't uninstall 'nvtabular'. No files were found to uninstall.
Successfully installed nvtabular-1.6.0+22.g985510ef
test-gpu run-test: commands[2] | python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
cachedir: .tox/test-gpu/.pytest_cache
rootdir: /var/jenkins_home/workspace/merlin_dataloader/dataloader, configfile: pyproject.toml
plugins: anyio-3.5.0, cov-4.0.0, xdist-3.1.0
collected 100 items / 1 skipped

tests/unit/dataloader/test_dataloader_backend.py ....                    [  4%]
tests/unit/dataloader/test_tf_dataloader.py ............................ [ 32%]
............s....                                                        [ 49%]
tests/unit/dataloader/test_tf_embeddings.py ............                 [ 61%]
tests/unit/dataloader/test_torch_dataloader.py ......................... [ 86%]
                                                                         [ 86%]
tests/unit/dataloader/test_torch_embeddings.py ............              [ 98%]
tests/examples/test_getting_started_pytorch.py .                         [ 99%]
tests/examples/test_getting_started_tensorflow.py .                      [100%]

=============================== warnings summary ===============================
../../../../../usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33
  /usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    DASK_VERSION = LooseVersion(dask.__version__)

.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: 34 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

tests/unit/dataloader/test_jax_dataloader.py:24
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_jax_dataloader.py:24: PytestUnknownMarkWarning: Unknown pytest.mark.jax - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.jax

tests/unit/dataloader/test_tf_dataloader.py:32
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_dataloader.py:32: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_tf_embeddings.py:25
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_embeddings.py:25: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_torch_dataloader.py:30
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_dataloader.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/unit/dataloader/test_torch_embeddings.py:34
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_embeddings.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/examples/test_getting_started_pytorch.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_pytorch.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/examples/test_getting_started_tensorflow.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_tensorflow.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_seeding[128]
  /var/jenkins_home/.local/lib/python3.8/site-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: 
  A value is trying to be set on a copy of a slice from a DataFrame
  
  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    self._setitem_single_block(indexer, value, name)

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_empty_error[128]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/loader_base.py:85: UserWarning: no schema associated with the input dataset. Calling dataset.infer_schema to automatically generate
    warnings.warn(

tests/unit/dataloader/test_tf_dataloader.py: 7 warnings
tests/unit/dataloader/test_torch_dataloader.py: 11 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/merlin/io/dataset.py:253: UserWarning: Initializing an NVTabular Dataset in CPU mode.This is an experimental feature with extremely limited support!
    warnings.warn(

tests/unit/dataloader/test_torch_embeddings.py::test_embedding_torch_dl_with_lookup[None]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/ops/embeddings/torch_embedding_op.py:52: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at  ../torch/csrc/utils/tensor_new.cpp:201.)
    return torch.Tensor(values).to(torch.int32)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.10-final-0 -----------
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
merlin/dataloader/__init__.py                                2      0   100%
merlin/dataloader/_version.py                              354    205    42%
merlin/dataloader/jax.py                                    51     51     0%
merlin/dataloader/loader_base.py                           470     41    91%
merlin/dataloader/ops/__init__.py                            0      0   100%
merlin/dataloader/ops/embeddings/__init__.py                 0      0   100%
merlin/dataloader/ops/embeddings/embedding_op.py            63      6    90%
merlin/dataloader/ops/embeddings/tf_embedding_op.py         19      0   100%
merlin/dataloader/ops/embeddings/torch_embedding_op.py      20      0   100%
merlin/dataloader/tensorflow.py                            114     20    82%
merlin/dataloader/tf_utils.py                               57     27    53%
merlin/dataloader/torch.py                                  66      8    88%
merlin/loader/__init__.py                                    4      0   100%
merlin/loader/jax.py                                         1      1     0%
merlin/loader/tensorflow.py                                  1      0   100%
merlin/loader/torch.py                                       1      0   100%
----------------------------------------------------------------------------
TOTAL                                                     1223    359    71%

=========================== short test summary info ============================
SKIPPED [1] tests/unit/dataloader/test_jax_dataloader.py:26: could not import 'jax': No module named 'jax'
SKIPPED [1] tests/unit/dataloader/test_tf_dataloader.py:535: not working correctly in ci environment
============ 99 passed, 2 skipped, 63 warnings in 158.72s (0:02:38) ============
___________________________________ summary ____________________________________
  test-gpu: commands succeeded
  congratulations :)
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script  : #!/bin/bash
cd /var/jenkins_home/
CUDA_VISIBLE_DEVICES=1 python test_res_push.py "https://api.GitHub.com/repos/NVIDIA-Merlin/dataloader/issues/$ghprbPullId/comments" "/var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log" 
[workspace] $ /bin/bash /tmp/jenkins16407692294967864211.sh
</pre></details>
<details><summary>Click to view CI Results</summary><pre>GitHub pull request #86 of commit c453ca76e08453ef43f2e2697cd83f5d70df2abb, no merge conflicts.
Running as SYSTEM
Setting status of c453ca76e08453ef43f2e2697cd83f5d70df2abb to PENDING with url http://merlin-infra1.nvidia.com:8080/job/merlin_dataloader/164/ and message: 'Pending'
Using context: Jenkins
Building on the built-in node in workspace /var/jenkins_home/jobs/merlin_dataloader/workspace
using credential systems-login
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/NVIDIA-Merlin/dataloader # timeout=10
Fetching upstream changes from https://github.com/NVIDIA-Merlin/dataloader
 > git --version # timeout=10
using GIT_ASKPASS to set credentials login for merlin-systems
 > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/dataloader +refs/pull/86/*:refs/remotes/origin/pr/86/* # timeout=10
 > git rev-parse c453ca76e08453ef43f2e2697cd83f5d70df2abb^{commit} # timeout=10
Checking out Revision c453ca76e08453ef43f2e2697cd83f5d70df2abb (detached)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f c453ca76e08453ef43f2e2697cd83f5d70df2abb # timeout=10
Commit message: "Add warning about schema property if called"
 > git rev-list --no-walk 745d7c53d7f63ee39bdc250f30175fbc4b5924df # timeout=10
[workspace] $ /bin/bash /tmp/jenkins6497456372524136591.sh
GLOB sdist-make: /var/jenkins_home/workspace/merlin_dataloader/dataloader/setup.py
test-gpu recreate: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
test-gpu installdeps: -rrequirements/dev.txt, pytest, pytest-cov
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu inst: /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/.tmp/package/1/merlin-dataloader-0.0.2+34.gc453ca7.zip
WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
test-gpu installed: absl-py==1.2.0,aiohttp==3.8.1,aiosignal==1.2.0,alabaster==0.7.12,alembic==1.9.0,anyio==3.6.1,argon2-cffi==21.3.0,argon2-cffi-bindings==21.2.0,astroid==2.5.6,asttokens==2.0.8,astunparse==1.6.3,asv==0.5.1,asvdb==0.4.2,async-timeout==4.0.2,attrs==22.1.0,autopage==0.5.1,awscli==1.27.33,Babel==2.10.3,backcall==0.2.0,beautifulsoup4==4.11.1,betterproto==1.2.5,black==22.6.0,bleach==5.0.1,boto3==1.24.75,botocore==1.29.33,Brotli==1.0.9,cachetools==5.2.0,certifi==2019.11.28,cffi==1.15.1,chardet==3.0.4,charset-normalizer==2.1.1,clang==5.0,click==8.1.3,cliff==4.1.0,cloudpickle==2.2.0,cmaes==0.9.0,cmake==3.24.1.1,cmd2==2.4.2,colorama==0.4.4,colorlog==6.7.0,contourpy==1.0.5,coverage==7.0.0,cpplint==1.6.1,cryptography==38.0.4,cuda-python==11.7.1,cupy-cuda117==10.6.0,cycler==0.11.0,Cython==0.29.32,dask==2022.1.1,dbus-python==1.2.16,debugpy==1.6.3,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.6,distributed==2022.5.1,distro==1.7.0,dm-tree==0.1.6,docker-pycreds==0.4.0,docutils==0.16,emoji==1.7.0,entrypoints==0.4,execnet==1.9.0,executing==1.0.0,faiss==1.7.2,faiss-gpu==1.7.2,fastai==2.7.9,fastapi==0.85.0,fastavro==1.6.1,fastcore==1.5.27,fastdownload==0.0.7,fastjsonschema==2.16.1,fastprogress==1.0.3,fastrlock==0.8,feast==0.19.4,fiddle==0.2.2,filelock==3.8.0,flatbuffers==1.12,fonttools==4.37.3,frozenlist==1.3.1,fsspec==2022.5.0,gast==0.4.0,gevent==21.12.0,geventhttpclient==2.0.2,gitdb==4.0.9,GitPython==3.1.27,google==3.0.0,google-api-core==2.10.1,google-auth==2.11.1,google-auth-oauthlib==0.4.6,google-pasta==0.2.0,googleapis-common-protos==1.52.0,graphviz==0.20.1,greenlet==1.1.3,grpcio==1.41.0,grpcio-channelz==1.49.0,grpcio-reflection==1.48.1,grpclib==0.4.3,h11==0.13.0,h2==4.1.0,h5py==3.7.0,HeapDict==1.0.1,horovod==0.26.1,hpack==4.0.0,httptools==0.5.0,hugectr2onnx==0.0.0,huggingface-hub==0.9.1,hyperframe==6.0.1,idna==2.8,imagesize==1.4.1,implicit==0.6.1,importlib-metadata==4.12.0,importlib-resources==5.9.0,iniconfig==1.1.1,ipykernel==6.15.3,ipython==8.5.0,ipython-genutils==0.2.0,ipywidgets==7.7.0,jedi==0.18.1,Jinja2==3.1.2,jmespath==1.0.1,joblib==1.2.0,json5==0.9.10,jsonschema==4.16.0,jupyter-cache==0.4.3,jupyter-core==4.11.1,jupyter-server==1.18.1,jupyter-server-mathjax==0.2.5,jupyter-sphinx==0.3.2,jupyter_client==7.3.5,jupyterlab==3.4.7,jupyterlab-pygments==0.2.2,jupyterlab-widgets==1.1.0,jupyterlab_server==2.15.1,keras==2.9.0,Keras-Preprocessing==1.1.2,kiwisolver==1.4.4,lazy-object-proxy==1.8.0,libclang==14.0.6,libcst==0.4.7,lightfm==1.16,lightgbm==3.3.2,linkify-it-py==1.0.3,llvmlite==0.39.1,locket==1.0.0,lxml==4.9.1,Mako==1.2.4,Markdown==3.4.1,markdown-it-py==1.1.0,MarkupSafe==2.1.1,matplotlib==3.6.0,matplotlib-inline==0.1.6,mdit-py-plugins==0.2.8,merlin-core==0.6.0+1.g5926fcf,merlin-dataloader==0.0.2+34.gc453ca7,merlin-models==0.7.0+11.g280956aa4,merlin-systems==0.5.0+4.g15074ad,mistune==2.0.4,mmh3==3.0.0,moto==4.0.12,mpi4py==3.1.3,msgpack==1.0.4,multidict==6.0.2,mypy-extensions==0.4.3,myst-nb==0.13.2,myst-parser==0.15.2,natsort==8.1.0,nbclassic==0.4.3,nbclient==0.6.8,nbconvert==7.0.0,nbdime==3.1.1,nbformat==5.5.0,nbsphinx==0.8.10,nest-asyncio==1.5.5,ninja==1.10.2.3,notebook==6.4.12,notebook-shim==0.1.0,npy-append-array==0.9.13,numba==0.56.2,numpy==1.22.4,nvidia-pyindex==1.0.9,# Editable install with no version control (nvtabular==1.4.0+8.g95e12d347),-e /usr/local/lib/python3.8/dist-packages,nvtx==0.2.5,oauthlib==3.2.1,oldest-supported-numpy==2022.8.16,onnx==1.12.0,onnxruntime==1.11.1,opt-einsum==3.3.0,optuna==3.0.5,packaging==21.3,pandas==1.3.5,pandavro==1.5.2,pandocfilters==1.5.0,parso==0.8.3,partd==1.3.0,pathtools==0.1.2,pbr==5.11.0,pexpect==4.8.0,pickleshare==0.7.5,Pillow==9.2.0,pkgutil_resolve_name==1.3.10,platformdirs==2.5.2,plotly==5.11.0,pluggy==1.0.0,prettytable==3.5.0,prometheus-client==0.14.1,promise==2.3,prompt-toolkit==3.0.31,proto-plus==1.19.6,protobuf==3.19.5,psutil==5.9.2,ptyprocess==0.7.0,pure-eval==0.2.2,py==1.11.0,pyarrow==7.0.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pybind11==2.10.0,pycparser==2.21,pydantic==1.10.2,pydot==1.4.2,Pygments==2.13.0,PyGObject==3.36.0,pynvml==11.4.1,pyparsing==3.0.9,pyperclip==1.8.2,pyrsistent==0.18.1,pytest==7.1.3,pytest-cov==4.0.0,pytest-xdist==3.1.0,python-apt==2.0.0+ubuntu0.20.4.8,python-dateutil==2.8.2,python-dotenv==0.21.0,python-rapidjson==1.8,pytz==2022.2.1,PyYAML==5.4.1,pyzmq==24.0.0,regex==2022.9.13,requests==2.22.0,requests-oauthlib==1.3.1,requests-unixsocket==0.2.0,responses==0.22.0,rsa==4.7.2,s3fs==2022.2.0,s3transfer==0.6.0,sacremoses==0.0.53,scikit-build==0.15.0,scikit-learn==1.1.2,scipy==1.8.1,seedir==0.3.0,Send2Trash==1.8.0,sentry-sdk==1.9.8,setproctitle==1.3.2,setuptools-scm==7.0.5,shortuuid==1.0.9,six==1.15.0,sklearn==0.0,smmap==5.0.0,sniffio==1.3.0,snowballstemmer==2.2.0,sortedcontainers==2.4.0,soupsieve==2.3.2.post1,Sphinx==5.3.0,sphinx-markdown-tables==0.0.15,sphinx-multiversion==0.2.4,sphinx-rtd-theme==1.1.1,sphinx-togglebutton==0.3.1,sphinx_external_toc==0.3.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-copydirs @ git+https://github.com/mikemckiernan/sphinxcontrib-copydirs.git@8d23fdd32ee0b2f2d2ee091ac8eb8c1e88271dd4,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,SQLAlchemy==1.4.45,stack-data==0.5.0,starlette==0.20.4,stevedore==4.1.1,stringcase==1.2.0,supervisor==4.1.0,tabulate==0.8.10,tblib==1.7.0,tdqm==0.0.1,tenacity==8.0.1,tensorboard==2.9.1,tensorboard-data-server==0.6.1,tensorboard-plugin-wit==1.8.1,tensorflow==2.9.2,tensorflow-estimator==2.9.0,tensorflow-gpu==2.9.2,tensorflow-io-gcs-filesystem==0.27.0,tensorflow-metadata==1.10.0,termcolor==2.0.1,terminado==0.15.0,testbook==0.4.2,threadpoolctl==3.1.0,tinycss2==1.1.1,tokenizers==0.10.3,toml==0.10.2,tomli==2.0.1,toolz==0.12.0,torch==1.12.1+cu113,torchmetrics==0.3.2,tornado==6.2,tox==3.26.0,tqdm==4.64.1,traitlets==5.4.0,transformers==4.12.0,transformers4rec==0.1.12+2.gbcc939255,treelite==2.3.0,treelite-runtime==2.3.0,tritonclient==2.25.0,types-toml==0.10.8.1,typing-inspect==0.8.0,typing_extensions==4.3.0,uc-micro-py==1.0.1,urllib3==1.26.12,uvicorn==0.18.3,uvloop==0.17.0,versioneer==0.20,virtualenv==20.16.5,wandb==0.13.3,watchfiles==0.17.0,wcwidth==0.2.5,webencodings==0.5.1,websocket-client==1.4.1,websockets==10.3,Werkzeug==2.2.2,widgetsnbextension==3.6.0,wrapt==1.12.1,xgboost==1.6.2,xmltodict==0.13.0,yarl==1.8.1,zict==2.2.0,zipp==3.8.1,zope.event==4.5.0,zope.interface==5.4.0
test-gpu run-test-pre: PYTHONHASHSEED='268856305'
test-gpu run-test: commands[0] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/core.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/core.git
  Cloning https://github.com/NVIDIA-Merlin/core.git to /tmp/pip-req-build-klaxzkk0
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/core.git /tmp/pip-req-build-klaxzkk0
  Resolved https://github.com/NVIDIA-Merlin/core.git to commit 73c2afc277967015e2f334b8c57a9e8789fa19bd
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (0.55.1)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (7.0.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (4.64.1)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (1.3.5)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (21.3)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (3.19.5)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.3.0)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core==0.9.0+19.g73c2afc) (1.2.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core==0.9.0+19.g73c2afc) (2022.5.0)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (0.4.3)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.4.1)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.12.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.4)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (5.8.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (3.0.3)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (8.1.3)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.4.0)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.7.0)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (6.2)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (0.38.1)
Requirement already satisfied: numpy<1.22,>=1.18 in /var/jenkins_home/.local/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (1.20.3)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core==0.9.0+19.g73c2afc) (65.6.3)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core==0.9.0+19.g73c2afc) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (2022.2.1)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.2.0)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.52.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core==0.9.0+19.g73c2afc) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (1.0.1)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.2)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.1.0)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core==0.9.0+19.g73c2afc) (2.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (4.0.0)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core==0.9.0+19.g73c2afc) (6.0.1)
Building wheels for collected packages: merlin-core
  Building wheel for merlin-core (pyproject.toml): started
  Building wheel for merlin-core (pyproject.toml): finished with status 'done'
  Created wheel for merlin-core: filename=merlin_core-0.9.0+19.g73c2afc-py3-none-any.whl size=119766 sha256=4bd32f3c527d6741dcab4f5fe747d5c9cd0a2bab1f29c76bf4933a13c6eb6813
  Stored in directory: /tmp/pip-ephem-wheel-cache-46pf_1sh/wheels/c8/38/16/a6968787eafcec5fa772148af8408b089562f71af0752e8e84
Successfully built merlin-core
Installing collected packages: merlin-core
  Attempting uninstall: merlin-core
    Found existing installation: merlin-core 0.9.0
    Uninstalling merlin-core-0.9.0:
      Successfully uninstalled merlin-core-0.9.0
Successfully installed merlin-core-0.9.0+19.g73c2afc
test-gpu run-test: commands[1] | python -m pip install --upgrade git+https://github.com/NVIDIA-Merlin/nvtabular.git
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting git+https://github.com/NVIDIA-Merlin/nvtabular.git
  Cloning https://github.com/NVIDIA-Merlin/nvtabular.git to /tmp/pip-req-build-4rasul6y
  Running command git clone --filter=blob:none --quiet https://github.com/NVIDIA-Merlin/nvtabular.git /tmp/pip-req-build-4rasul6y
  Resolved https://github.com/NVIDIA-Merlin/nvtabular.git to commit 985510ef0f529aa54a8ac29414d3ed71542c4c62
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from nvtabular==1.6.0+22.g985510ef) (1.8.1)
Requirement already satisfied: merlin-core>=0.2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.9.0+19.g73c2afc)
Requirement already satisfied: merlin-dataloader>=0.0.2 in ./.tox/test-gpu/lib/python3.8/site-packages (from nvtabular==1.6.0+22.g985510ef) (0.0.2+34.gc453ca7)
Requirement already satisfied: numba>=0.54 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.55.1)
Requirement already satisfied: pyarrow>=5.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (7.0.0)
Requirement already satisfied: tqdm>=4.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.64.1)
Requirement already satisfied: pandas<1.4.0dev0,>=1.2.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.3.5)
Requirement already satisfied: tensorflow-metadata>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (21.3)
Requirement already satisfied: protobuf>=3.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.19.5)
Requirement already satisfied: dask>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: distributed>=2022.3.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.3.0)
Requirement already satisfied: betterproto<2.0.0 in /usr/local/lib/python3.8/dist-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.5)
Requirement already satisfied: fsspec==2022.5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages (from merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.5.0)
Requirement already satisfied: numpy<1.25.0,>=1.17.3 in /var/jenkins_home/.local/lib/python3.8/site-packages (from scipy->nvtabular==1.6.0+22.g985510ef) (1.20.3)
Requirement already satisfied: stringcase in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: grpclib in /usr/local/lib/python3.8/dist-packages (from betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.4.3)
Requirement already satisfied: cloudpickle>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.2.0)
Requirement already satisfied: pyyaml>=5.3.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/PyYAML-5.4.1-py3.8-linux-x86_64.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.4.1)
Requirement already satisfied: partd>=0.3.10 in /var/jenkins_home/.local/lib/python3.8/site-packages/partd-1.2.0-py3.8.egg (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: toolz>=0.8.2 in /usr/local/lib/python3.8/dist-packages (from dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.12.0)
Requirement already satisfied: msgpack>=0.6.0 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.4)
Requirement already satisfied: zict>=0.1.3 in /var/jenkins_home/.local/lib/python3.8/site-packages/zict-2.0.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.0)
Requirement already satisfied: psutil>=5.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/psutil-5.8.0-py3.8-linux-x86_64.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (5.8.0)
Requirement already satisfied: jinja2 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.3)
Requirement already satisfied: click>=6.6 in /usr/local/lib/python3.8/dist-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (8.1.3)
Requirement already satisfied: sortedcontainers!=2.0.0,!=2.0.1 in /var/jenkins_home/.local/lib/python3.8/site-packages/sortedcontainers-2.4.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.4.0)
Requirement already satisfied: tblib>=1.6.0 in /var/jenkins_home/.local/lib/python3.8/site-packages/tblib-1.7.0-py3.8.egg (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.7.0)
Requirement already satisfied: tornado>=6.0.3 in ./.tox/test-gpu/lib/python3.8/site-packages (from distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.2)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.38.1)
Requirement already satisfied: setuptools in ./.tox/test-gpu/lib/python3.8/site-packages (from numba>=0.54->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (65.6.3)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.8/dist-packages (from packaging->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2022.2.1)
Requirement already satisfied: absl-py<2.0.0,>=0.9 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.2.0)
Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.8/dist-packages (from tensorflow-metadata>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.52.0)
Requirement already satisfied: locket in /var/jenkins_home/.local/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg (from partd>=0.3.10->dask>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (0.2.1)
Requirement already satisfied: six>=1.5 in /var/jenkins_home/.local/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas<1.4.0dev0,>=1.2.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.15.0)
Requirement already satisfied: heapdict in /var/jenkins_home/.local/lib/python3.8/site-packages/HeapDict-1.0.1-py3.8.egg (from zict>=0.1.3->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (1.0.1)
Requirement already satisfied: multidict in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.2)
Requirement already satisfied: h2<5,>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.1.0)
Requirement already satisfied: MarkupSafe>=2.0 in ./.tox/test-gpu/lib/python3.8/site-packages (from jinja2->distributed>=2022.3.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (2.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (4.0.0)
Requirement already satisfied: hyperframe<7,>=6.0 in /usr/local/lib/python3.8/dist-packages (from h2<5,>=3.1.0->grpclib->betterproto<2.0.0->merlin-core>=0.2.0->nvtabular==1.6.0+22.g985510ef) (6.0.1)
Building wheels for collected packages: nvtabular
  Building wheel for nvtabular (pyproject.toml): started
  Building wheel for nvtabular (pyproject.toml): finished with status 'done'
  Created wheel for nvtabular: filename=nvtabular-1.6.0+22.g985510ef-cp38-cp38-linux_x86_64.whl size=257120 sha256=afac05854aee741086fe4536529d1567b5d13e4ef58c86f3e218c77136ff1a2c
  Stored in directory: /tmp/pip-ephem-wheel-cache-5fay_286/wheels/8f/d9/f9/30f2cdc5bf8787fae6fdfe55afd6e1b493e619ec32c32ec40b
Successfully built nvtabular
Installing collected packages: nvtabular
  Attempting uninstall: nvtabular
    Found existing installation: nvtabular 1.1.1
    Not uninstalling nvtabular at /var/jenkins_home/.local/lib/python3.8/site-packages, outside environment /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu
    Can't uninstall 'nvtabular'. No files were found to uninstall.
Successfully installed nvtabular-1.6.0+22.g985510ef
test-gpu run-test: commands[2] | python -m pytest --cov-report term --cov merlin -rxs tests/unit tests/examples
============================= test session starts ==============================
platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
cachedir: .tox/test-gpu/.pytest_cache
rootdir: /var/jenkins_home/workspace/merlin_dataloader/dataloader, configfile: pyproject.toml
plugins: anyio-3.5.0, cov-4.0.0, xdist-3.1.0
collected 100 items / 1 skipped

tests/unit/dataloader/test_dataloader_backend.py ....                    [  4%]
tests/unit/dataloader/test_tf_dataloader.py ............................ [ 32%]
............s....                                                        [ 49%]
tests/unit/dataloader/test_tf_embeddings.py ............                 [ 61%]
tests/unit/dataloader/test_torch_dataloader.py ......................... [ 86%]
                                                                         [ 86%]
tests/unit/dataloader/test_torch_embeddings.py ............              [ 98%]
tests/examples/test_getting_started_pytorch.py .                         [ 99%]
tests/examples/test_getting_started_tensorflow.py .                      [100%]

=============================== warnings summary ===============================
../../../../../usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33
  /usr/local/lib/python3.8/dist-packages/dask_cudf/core.py:33: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    DASK_VERSION = LooseVersion(dask.__version__)

.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: 34 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

tests/unit/dataloader/test_jax_dataloader.py:24
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_jax_dataloader.py:24: PytestUnknownMarkWarning: Unknown pytest.mark.jax - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.jax

tests/unit/dataloader/test_tf_dataloader.py:32
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_dataloader.py:32: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_tf_embeddings.py:25
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_tf_embeddings.py:25: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_torch_dataloader.py:30
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_dataloader.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/unit/dataloader/test_torch_embeddings.py:34
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/unit/dataloader/test_torch_embeddings.py:34: PytestUnknownMarkWarning: Unknown pytest.mark.torch - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.torch

tests/examples/test_getting_started_pytorch.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_pytorch.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/examples/test_getting_started_tensorflow.py:6
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/tests/examples/test_getting_started_tensorflow.py:6: PytestUnknownMarkWarning: Unknown pytest.mark.tensorflow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    pytestmark = pytest.mark.tensorflow

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_seeding[128]
  /var/jenkins_home/.local/lib/python3.8/site-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: 
  A value is trying to be set on a copy of a slice from a DataFrame
  
  See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    self._setitem_single_block(indexer, value, name)

tests/unit/dataloader/test_dataloader_backend.py::test_dataloader_empty_error[128]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/loader_base.py:85: UserWarning: no schema associated with the input dataset. Calling dataset.infer_schema to automatically generate
    warnings.warn(

tests/unit/dataloader/test_tf_dataloader.py: 7 warnings
tests/unit/dataloader/test_torch_dataloader.py: 11 warnings
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/.tox/test-gpu/lib/python3.8/site-packages/merlin/io/dataset.py:253: UserWarning: Initializing an NVTabular Dataset in CPU mode.This is an experimental feature with extremely limited support!
    warnings.warn(

tests/unit/dataloader/test_torch_embeddings.py::test_embedding_torch_dl_with_lookup[None]
  /var/jenkins_home/workspace/merlin_dataloader/dataloader/merlin/dataloader/ops/embeddings/torch_embedding_op.py:52: UserWarning: Creating a tensor from a list of numpy.ndarrays is extremely slow. Please consider converting the list to a single numpy.ndarray with numpy.array() before converting to a tensor. (Triggered internally at  ../torch/csrc/utils/tensor_new.cpp:201.)
    return torch.Tensor(values).to(torch.int32)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.8.10-final-0 -----------
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
merlin/dataloader/__init__.py                                2      0   100%
merlin/dataloader/_version.py                              354    205    42%
merlin/dataloader/jax.py                                    51     51     0%
merlin/dataloader/loader_base.py                           471     42    91%
merlin/dataloader/ops/__init__.py                            0      0   100%
merlin/dataloader/ops/embeddings/__init__.py                 0      0   100%
merlin/dataloader/ops/embeddings/embedding_op.py            63      6    90%
merlin/dataloader/ops/embeddings/tf_embedding_op.py         19      0   100%
merlin/dataloader/ops/embeddings/torch_embedding_op.py      20      0   100%
merlin/dataloader/tensorflow.py                            114     20    82%
merlin/dataloader/tf_utils.py                               57     27    53%
merlin/dataloader/torch.py                                  66      8    88%
merlin/loader/__init__.py                                    4      0   100%
merlin/loader/jax.py                                         1      1     0%
merlin/loader/tensorflow.py                                  1      0   100%
merlin/loader/torch.py                                       1      0   100%
----------------------------------------------------------------------------
TOTAL                                                     1224    360    71%

=========================== short test summary info ============================
SKIPPED [1] tests/unit/dataloader/test_jax_dataloader.py:26: could not import 'jax': No module named 'jax'
SKIPPED [1] tests/unit/dataloader/test_tf_dataloader.py:535: not working correctly in ci environment
============ 99 passed, 2 skipped, 63 warnings in 159.03s (0:02:39) ============
___________________________________ summary ____________________________________
  test-gpu: commands succeeded
  congratulations :)
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script  : #!/bin/bash
cd /var/jenkins_home/
CUDA_VISIBLE_DEVICES=1 python test_res_push.py "https://api.GitHub.com/repos/NVIDIA-Merlin/dataloader/issues/$ghprbPullId/comments" "/var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/log" 
[workspace] $ /bin/bash /tmp/jenkins11608885890848686643.sh
</pre></details>

Fix patch:
diff --git a/merlin/dataloader/loader_base.py b/merlin/dataloader/loader_base.py
index 7a45647b..556bce4b 100644
--- a/merlin/dataloader/loader_base.py
+++ b/merlin/dataloader/loader_base.py
@@ -363,7 +363,7 @@ def make_tensors(self, gdf, use_nnz=False):
         # if len(chunks) == 4:
         lists_list = [
             col_name
-            for col_name, col_schema in self.dataset.schema.column_schemas.items()
+            for col_name, col_schema in self.input_schema.column_schemas.items()
             if col_schema.is_list
         ]
         if len(lists_list) > 0:


Test patch:
diff --git a/tests/unit/dataloader/test_tf_dataloader.py b/tests/unit/dataloader/test_tf_dataloader.py
index b3e2d4fb..776d309a 100644
--- a/tests/unit/dataloader/test_tf_dataloader.py
+++ b/tests/unit/dataloader/test_tf_dataloader.py
@@ -55,7 +55,7 @@ def test_peek():
 
 
 def test_set_input_schema():
-    df = make_df({"a": [1, 2, 3], "b": [4, 5, 6]})
+    df = make_df({"a": [1, 2, 3], "b": [[4], [5, 6], [7]]})
     dataset = Dataset(df)
     loader = tf_dataloader.Loader(dataset, batch_size=1)
     loader.input_schema = dataset.schema.excluding_by_name(["b"])