openforcefield/openff-toolkit

Openeye license check

insukjoung opened this issue · 6 comments

Describe the bug
We have omega (but not omega toolkit) and oequacpac license. In this condition, openeye license check is not done correctly.
To Reproduce

from openmm.app import PDBFile
from openff.toolkit.topology import Molecule, Topology
from openff.toolkit.typing.engines.smirnoff import ForceField as off_ForceField

ligand_sdf = 'ligand.sdf'
ligand_pdb = 'ligand.pdb'

force_field = off_ForceField("openff_unconstrained-2.0.0.offxml")

ligand = Molecule.from_file(ligand_sdf, allow_undefined_stereo=True)
ligand_pdb = PDBFile(ligand_pdb)
off_topology = Topology.from_openmm(openmm_topology=ligand_pdb.topology, unique_molecules=[ligand])
ligand_system = force_field.create_openmm_system(off_topology)

This does not raise any exception but causes license error:
ligand.sdf and ligand.pdb can be any small molecule in the two different format.

Output
LICENSE: No valid license found for omega
LICENSE: File(s) used: /path/to/oe_license.txt
LICENSE: Closest license failed because:
LICENSE: features

Computing environment (please complete the following information):

  • Operating system: Ubuntu 22.04.3 LTS
  • Output of running conda list
    Name Version Build Channel
    _libgcc_mutex 0.1 conda_forge conda-forge
    _openmp_mutex 4.5 2_kmp_llvm conda-forge
    _py-xgboost-mutex 2.0 gpu_0 conda-forge
    agate 1.9.1 py39hf3d152e_0 conda-forge
    agate-dbf 0.2.2 pyhd8ed1ab_0 conda-forge
    agate-excel 0.2.3 py_0 conda-forge
    agate-sql 0.5.8 pyhd8ed1ab_0 conda-forge
    aioeasywebdav 2.4.0 py39hf3d152e_1001 conda-forge
    aiohttp 3.9.3 py39hd1e30aa_1 conda-forge
    aiosignal 1.3.1 pyhd8ed1ab_0 conda-forge
    alabaster 0.7.16 pyhd8ed1ab_0 conda-forge
    ambertools 23.3 py39h7fa913e_6 conda-forge
    amberutils 21.0 pypi_0 pypi
    amply 0.1.6 pyhd8ed1ab_0 conda-forge
    annotated-types 0.6.0 pyhd8ed1ab_0 conda-forge
    anyio 3.7.1 pyhd8ed1ab_0 conda-forge
    aom 3.5.0 h27087fc_0 conda-forge
    appdirs 1.4.4 pyh9f0ad1d_0 conda-forge
    argon2-cffi 21.3.0 pyhd8ed1ab_0 conda-forge
    argon2-cffi-bindings 21.2.0 py39hb9d737c_3 conda-forge
    argtable2 2.13 h14c3975_1001 conda-forge
    arpack 3.8.0 nompi_h0baa96a_101 conda-forge
    ase 3.22.1 pyhd8ed1ab_1 conda-forge
    asttokens 2.2.1 pyhd8ed1ab_0 conda-forge
    astunparse 1.6.3 pyhd8ed1ab_0 conda-forge
    async-timeout 4.0.3 pyhd8ed1ab_0 conda-forge
    atk-1.0 2.38.0 hd4edc92_1 conda-forge
    attmap 0.13.2 pyhd8ed1ab_0 conda-forge
    attrs 23.1.0 pyh71513ae_1 conda-forge
    automl 0.0.1 pypi_0 pypi
    aws-c-auth 0.7.0 hf8751d9_2 conda-forge
    aws-c-cal 0.6.0 h93469e0_0 conda-forge
    aws-c-common 0.8.23 hd590300_0 conda-forge
    aws-c-compression 0.2.17 h862ab75_1 conda-forge
    aws-c-event-stream 0.3.1 h9599702_1 conda-forge
    aws-c-http 0.7.11 hbe98c3e_0 conda-forge
    aws-c-io 0.13.28 h3870b5a_0 conda-forge
    aws-c-mqtt 0.8.14 h2e270ba_2 conda-forge
    aws-c-s3 0.3.13 heb0bb06_2 conda-forge
    aws-c-sdkutils 0.1.11 h862ab75_1 conda-forge
    aws-checksums 0.1.16 h862ab75_1 conda-forge
    aws-crt-cpp 0.20.3 he9c0e7f_4 conda-forge
    aws-sdk-cpp 1.10.57 hbc2ea52_17 conda-forge
    babel 2.14.0 pyhd8ed1ab_0 conda-forge
    backcall 0.2.0 pyh9f0ad1d_0 conda-forge
    backports 1.0 pyhd8ed1ab_3 conda-forge
    backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge
    bcrypt 4.1.2 py39h9fdd4d6_0 conda-forge
    beautifulsoup4 4.12.2 pyha770c72_0 conda-forge
    binutils_impl_linux-64 2.40 hf600244_0 conda-forge
    binutils_linux-64 2.40 hbdbef99_2 conda-forge
    biopython 1.83 py39hd1e30aa_0 conda-forge
    bioservices 1.11.2 pyhd8ed1ab_1 conda-forge
    black 23.3.0 py39hf3d152e_1 conda-forge
    blas 2.116 openblas conda-forge
    blas-devel 3.9.0 16_linux64_openblas conda-forge
    bleach 6.0.0 pyhd8ed1ab_0 conda-forge
    blinker 1.7.0 pyhd8ed1ab_0 conda-forge
    blosc 1.21.4 h0f2a231_0 conda-forge
    boost 1.82.0 h8003fee_6 conda-forge
    boost-cpp 1.82.0 h44aadfe_6 conda-forge
    boto3 1.34.76 pyhd8ed1ab_0 conda-forge
    botocore 1.34.77 pyge38_1234567_0 conda-forge
    brotli 1.0.9 h166bdaf_8 conda-forge
    brotli-bin 1.0.9 h166bdaf_8 conda-forge
    brotli-python 1.0.9 py39h5a03fae_8 conda-forge
    brunsli 0.1 h9c3ff4c_0 conda-forge
    bson 0.5.9 py_0 conda-forge
    bzip2 1.0.8 h7f98852_4 conda-forge
    c-ares 1.19.1 hd590300_0 conda-forge
    c-blosc2 2.10.0 hb4ffafa_0 conda-forge
    ca-certificates 2024.6.2 hbcca054_0 conda-forge
    cached-property 1.5.2 hd8ed1ab_1 conda-forge
    cached_property 1.5.2 pyha770c72_1 conda-forge
    cachetools 5.3.0 pyhd8ed1ab_0 conda-forge
    cairo 1.18.0 h3faef2a_0 conda-forge
    captum 0.7.0 0 pytorch
    catboost 1.2.5 py39hf3d152e_0 conda-forge
    cdpkit 1.1.1 pypi_0 pypi
    cerberus 1.3.5 pyhd8ed1ab_0 conda-forge
    certifi 2024.2.2 pyhd8ed1ab_0 conda-forge
    cffi 1.15.1 py39he91dace_3 conda-forge
    cfitsio 4.2.0 hd9d235c_0 conda-forge
    cftime 1.6.2 py39h2ae25f5_1 conda-forge
    charls 2.4.2 h59595ed_0 conda-forge
    charset-normalizer 3.1.0 pyhd8ed1ab_0 conda-forge
    chemtools 0.1.0 dev_0
    cld2-cffi 0.1.4 py39h3d6467e_1005 conda-forge
    click 8.1.7 unix_pyh707e725_0 conda-forge
    cloudpickle 3.0.0 pyhd8ed1ab_0 conda-forge
    clustalo 1.2.4 hdbdd923_7 bioconda
    clusterutils 0.3.1 pyhd8ed1ab_1 conda-forge
    coin-or-cbc 2.10.10 h9002f0b_0 conda-forge
    coin-or-cgl 0.60.7 h516709c_0 conda-forge
    coin-or-clp 1.17.8 h1ee7a9c_0 conda-forge
    coin-or-osi 0.108.8 ha2443b9_0 conda-forge
    coin-or-utils 2.11.9 hee58242_0 conda-forge
    coincbc 2.10.10 0_metapackage conda-forge
    colorama 0.4.6 pyhd8ed1ab_0 conda-forge
    colorlog 6.8.2 py39hf3d152e_0 conda-forge
    comm 0.1.3 pyhd8ed1ab_0 conda-forge
    configargparse 1.7 pyhd8ed1ab_0 conda-forge
    connection_pool 0.0.3 pyhd3deb0d_0 conda-forge
    contourpy 1.0.7 py39h4b4f3f3_0 conda-forge
    cryptography 41.0.7 py39he6105cc_1 conda-forge
    csvkit 1.3.0 pyhd8ed1ab_0 conda-forge
    cuda-cudart 11.8.89 0 nvidia
    cuda-cupti 11.8.87 0 nvidia
    cuda-libraries 11.8.0 0 nvidia
    cuda-nvrtc 11.8.89 0 nvidia
    cuda-nvtx 11.8.86 0 nvidia
    cuda-runtime 11.8.0 0 nvidia
    cuda-version 11.8 h70ddcb2_2 conda-forge
    cudatoolkit 11.8.0 h4ba93d1_12 conda-forge
    cudnn 8.8.0.121 hcdd5f01_4 conda-forge
    curl 8.1.2 h409715c_0 conda-forge
    cycler 0.11.0 pyhd8ed1ab_0 conda-forge
    cython 0.29.35 py39h3d6467e_0 conda-forge
    datrie 0.8.2 py39hd1e30aa_7 conda-forge
    dav1d 1.2.1 hd590300_0 conda-forge
    dbfread 2.0.7 py_0 conda-forge
    debugpy 1.6.7 py39h227be39_0 conda-forge
    decorator 5.1.1 pyhd8ed1ab_0 conda-forge
    defusedxml 0.7.1 pyhd8ed1ab_0 conda-forge
    deprecation 2.1.0 pypi_0 pypi
    dgl 1.1.3 pypi_0 pypi
    dnspython 2.6.1 pyhd8ed1ab_0 conda-forge
    docker-pycreds 0.4.0 py_0 conda-forge
    docopt 0.6.2 py_1 conda-forge
    docutils 0.20.1 py39hf3d152e_3 conda-forge
    dpath 2.1.6 pyha770c72_0 conda-forge
    dropbox 11.36.2 pyhd8ed1ab_0 conda-forge
    easydev 0.12.0 pyh6c4a22f_0 conda-forge
    edgembar 0.2 pypi_0 pypi
    eido 0.2.2 pyhd8ed1ab_0 conda-forge
    entrypoints 0.4 pyhd8ed1ab_0 conda-forge
    espaloma-charge 0.0.8 pypi_0 pypi
    et_xmlfile 1.1.0 pyhd8ed1ab_0 conda-forge
    exceptiongroup 1.1.1 pyhd8ed1ab_0 conda-forge
    executing 1.2.0 pyhd8ed1ab_0 conda-forge
    expat 2.5.0 hcb278e6_1 conda-forge
    fastapi 0.110.1 pyhd8ed1ab_0 conda-forge
    ffmpeg 4.3 hf484d3e_0 pytorch
    fftw 3.3.10 nompi_hc118613_107 conda-forge
    filechunkio 1.8 py_2 conda-forge
    filelock 3.13.1 pyhd8ed1ab_0 conda-forge
    flask 3.0.2 pyhd8ed1ab_0 conda-forge
    flit-core 3.9.0 pyhd8ed1ab_0 conda-forge
    font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge
    font-ttf-inconsolata 3.000 h77eed37_0 conda-forge
    font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge
    font-ttf-ubuntu 0.83 hab24e00_0 conda-forge
    fontconfig 2.14.2 h14ed4e7_0 conda-forge
    fonts-conda-ecosystem 1 0 conda-forge
    fonts-conda-forge 1 0 conda-forge
    fonttools 4.39.4 py39hd1e30aa_0 conda-forge
    fpocket 4.1.4 h965ee13_0 conda-forge
    freetype 2.12.1 hca18f0e_1 conda-forge
    fribidi 1.0.10 h36c2ea0_0 conda-forge
    frozenlist 1.4.1 py39hd1e30aa_0 conda-forge
    fsspec 2023.12.2 pyhca7485f_0 conda-forge
    ftputil 5.1.0 pyhd8ed1ab_0 conda-forge
    future 0.18.3 pyhd8ed1ab_0 conda-forge
    gcc 13.2.0 h574f8da_2 conda-forge
    gcc_impl_linux-64 13.2.0 h338b0a0_4 conda-forge
    gcc_linux-64 13.2.0 h112eaf3_2 conda-forge
    gdk-pixbuf 2.42.10 h05c8ddd_0 conda-forge
    gettext 0.21.1 h27087fc_0 conda-forge
    gevent 23.9.0.post1 py39hdca961b_1 conda-forge
    giflib 5.2.1 h0b41bf4_3 conda-forge
    gitdb 4.0.11 pyhd8ed1ab_0 conda-forge
    gitpython 3.1.42 pyhd8ed1ab_0 conda-forge
    gmp 6.3.0 h59595ed_0 conda-forge
    gmpy2 2.1.2 py39h376b7d2_1 conda-forge
    gnutls 3.6.13 h85f3911_1 conda-forge
    google-api-core 2.18.0 pyhd8ed1ab_0 conda-forge
    google-api-python-client 2.125.0 pyhd8ed1ab_0 conda-forge
    google-auth 2.29.0 pyhca7485f_0 conda-forge
    google-auth-httplib2 0.2.0 pyhd8ed1ab_0 conda-forge
    google-cloud-core 2.4.1 pyhd8ed1ab_0 conda-forge
    google-cloud-storage 2.16.0 pyhca7485f_0 conda-forge
    google-crc32c 1.1.2 py39h328ec2c_5 conda-forge
    google-resumable-media 2.7.0 pyhd8ed1ab_0 conda-forge
    googleapis-common-protos 1.63.0 pyhd8ed1ab_0 conda-forge
    graphite2 1.3.13 h58526e2_1001 conda-forge
    graphviz 9.0.0 h78e8752_1 conda-forge
    greenlet 2.0.2 py39h3d6467e_1 conda-forge
    grequests 0.6.0 pyh9f0ad1d_0 conda-forge
    grpcio 1.46.3 py39h7fbbf82_0 conda-forge
    gtk2 2.24.33 h90689f9_2 conda-forge
    gts 0.7.6 h977cf35_4 conda-forge
    gxx 13.2.0 h574f8da_2 conda-forge
    gxx_impl_linux-64 13.2.0 h338b0a0_4 conda-forge
    gxx_linux-64 13.2.0 hc53e3bf_2 conda-forge
    h11 0.14.0 pyhd8ed1ab_0 conda-forge
    h2 4.1.0 pyhd8ed1ab_0 conda-forge
    h5py 3.9.0 nompi_py39h680ca82_101 conda-forge
    harfbuzz 7.3.0 h3d44ed6_1 conda-forge
    hdf4 4.2.15 h9772cbc_5 conda-forge
    hdf5 1.14.1 nompi_h4f84152_100 conda-forge
    hpack 4.0.0 pyh9f0ad1d_0 conda-forge
    httpcore 1.0.4 pyhd8ed1ab_0 conda-forge
    httplib2 0.22.0 pyhd8ed1ab_0 conda-forge
    humanfriendly 10.0 pyhd8ed1ab_6 conda-forge
    hyperframe 6.0.1 pyhd8ed1ab_0 conda-forge
    icu 73.2 h59595ed_0 conda-forge
    idna 3.4 pyhd8ed1ab_0 conda-forge
    imagecodecs 2023.1.23 py39hd061359_0 conda-forge
    imageio 2.34.0 pyh4b66e23_0 conda-forge
    imagesize 1.4.1 pyhd8ed1ab_0 conda-forge
    importlib-metadata 6.6.0 pyha770c72_0 conda-forge
    importlib-resources 5.12.0 pyhd8ed1ab_0 conda-forge
    importlib_metadata 6.6.0 hd8ed1ab_0 conda-forge
    importlib_resources 5.12.0 pyhd8ed1ab_0 conda-forge
    iniconfig 2.0.0 pyhd8ed1ab_0 conda-forge
    ipykernel 6.23.1 pyh210e3f2_0 conda-forge
    ipython 8.13.2 pyh41d4057_0 conda-forge
    ipython-style-gruvbox 1.0.0 pypi_0 pypi
    ipython_genutils 0.2.0 py_1 conda-forge
    ipywidgets 7.7.5 pyhd8ed1ab_0 conda-forge
    isodate 0.6.1 pyhd8ed1ab_0 conda-forge
    isort 5.13.2 pyhd8ed1ab_0 conda-forge
    itsdangerous 2.1.2 pyhd8ed1ab_0 conda-forge
    jax 0.4.26 pyhd8ed1ab_0 conda-forge
    jaxlib 0.4.23 py39h6a678d5_0
    jedi 0.18.2 pyhd8ed1ab_0 conda-forge
    jenn 1.0.3 pyhd8ed1ab_0 conda-forge
    jinja2 3.1.2 pyhd8ed1ab_1 conda-forge
    jmespath 1.0.1 pyhd8ed1ab_0 conda-forge
    joblib 1.2.0 pyhd8ed1ab_0 conda-forge
    jpeg 9e h166bdaf_2 conda-forge
    jsonpickle 3.0.2 pyhd8ed1ab_1 conda-forge
    jsonschema 4.17.3 pyhd8ed1ab_0 conda-forge
    jupyter 1.0.0 pyhd8ed1ab_10 conda-forge
    jupyter_client 8.2.0 pyhd8ed1ab_0 conda-forge
    jupyter_console 6.6.3 pyhd8ed1ab_0 conda-forge
    jupyter_core 5.3.0 py39hf3d152e_0 conda-forge
    jupyter_events 0.6.3 pyhd8ed1ab_0 conda-forge
    jupyter_server 2.6.0 pyhd8ed1ab_0 conda-forge
    jupyter_server_terminals 0.4.4 pyhd8ed1ab_1 conda-forge
    jupyterlab_pygments 0.2.2 pyhd8ed1ab_0 conda-forge
    jupyterlab_widgets 1.1.4 pyhd8ed1ab_0 conda-forge
    jxrlib 1.1 hd590300_3 conda-forge
    kernel-headers_linux-64 2.6.32 he073ed8_16 conda-forge
    keyutils 1.6.1 h166bdaf_0 conda-forge
    kiwisolver 1.4.4 py39hf939315_1 conda-forge
    krb5 1.20.1 h81ceb04_0 conda-forge
    lame 3.100 h166bdaf_1003 conda-forge
    lancedb 0.5.1 pypi_0 pypi
    lazy_loader 0.3 pyhd8ed1ab_0 conda-forge
    lcms2 2.15 hfd0df8a_0 conda-forge
    ld_impl_linux-64 2.40 h41732ed_0 conda-forge
    leather 0.3.4 pyhd8ed1ab_0 conda-forge
    lerc 4.0.0 h27087fc_0 conda-forge
    libabseil 20230802.1 cxx17_h59595ed_0 conda-forge
    libaec 1.0.6 hcb278e6_1 conda-forge
    libavif 0.11.1 h8182462_2 conda-forge
    libblas 3.9.0 16_linux64_openblas conda-forge
    libboost 1.82.0 h6fcfa73_6 conda-forge
    libboost-devel 1.82.0 h00ab1b0_6 conda-forge
    libboost-headers 1.82.0 ha770c72_6 conda-forge
    libboost-python 1.82.0 py39hda80f44_6 conda-forge
    libboost-python-devel 1.82.0 py39h8003fee_6 conda-forge
    libbrotlicommon 1.0.9 h166bdaf_8 conda-forge
    libbrotlidec 1.0.9 h166bdaf_8 conda-forge
    libbrotlienc 1.0.9 h166bdaf_8 conda-forge
    libcblas 3.9.0 16_linux64_openblas conda-forge
    libcrc32c 1.1.2 h9c3ff4c_0 conda-forge
    libcublas 11.11.3.6 0 nvidia
    libcufft 10.9.0.58 0 nvidia
    libcufile 1.8.1.2 0 nvidia
    libcurand 10.3.4.107 0 nvidia
    libcurl 8.1.2 h409715c_0 conda-forge
    libcusolver 11.4.1.48 0 nvidia
    libcusparse 11.7.5.86 0 nvidia
    libdeflate 1.17 h0b41bf4_0 conda-forge
    libedit 3.1.20191231 he28a2e2_2 conda-forge
    libev 4.33 h516909a_1 conda-forge
    libexpat 2.5.0 hcb278e6_1 conda-forge
    libffi 3.4.2 h7f98852_5 conda-forge
    libgcc-devel_linux-64 13.2.0 ha9c7c90_104 conda-forge
    libgcc-ng 13.2.0 h807b86a_4 conda-forge
    libgd 2.3.3 h695aa2c_1
    libgfortran-ng 13.1.0 h69a702a_0 conda-forge
    libgfortran5 13.1.0 h15d22d2_0 conda-forge
    libglib 2.78.1 hebfc3b9_0 conda-forge
    libgomp 13.2.0 h807b86a_4 conda-forge
    libhwloc 2.9.2 nocuda_h7313eea_1008 conda-forge
    libiconv 1.17 h166bdaf_0 conda-forge
    libjpeg-turbo 2.0.0 h9bf148f_0 pytorch
    liblapack 3.9.0 16_linux64_openblas conda-forge
    liblapacke 3.9.0 16_linux64_openblas conda-forge
    libllvm14 14.0.6 hcd5def8_4 conda-forge
    libmagma 2.7.2 h09b5827_2 conda-forge
    libmagma_sparse 2.7.2 h09b5827_2 conda-forge
    libnetcdf 4.9.2 nompi_h7e745eb_109 conda-forge
    libnghttp2 1.52.0 h61bc06f_0 conda-forge
    libnpp 11.8.0.86 0 nvidia
    libnsl 2.0.0 h7f98852_0 conda-forge
    libnvjpeg 11.9.0.86 0 nvidia
    libopenblas 0.3.21 pthreads_h78a6416_3 conda-forge
    libpng 1.6.39 h753d276_0 conda-forge
    libprotobuf 4.24.4 hf27288f_0 conda-forge
    librsvg 2.56.3 he3f83f7_1 conda-forge
    libsanitizer 13.2.0 h7e041cc_4 conda-forge
    libsodium 1.0.18 h36c2ea0_1 conda-forge
    libsqlite 3.42.0 h2797004_0 conda-forge
    libssh2 1.10.0 hf14f497_3 conda-forge
    libstdcxx-devel_linux-64 13.2.0 ha9c7c90_104 conda-forge
    libstdcxx-ng 13.2.0 h7e041cc_4 conda-forge
    libtiff 4.5.0 h6adf6a1_2 conda-forge
    libtool 2.4.7 h27087fc_0 conda-forge
    libtorch 2.1.0 cuda118_h7595d50_303 conda-forge
    libuuid 2.38.1 h0b41bf4_0 conda-forge
    libuv 1.46.0 hd590300_0 conda-forge
    libwebp 1.3.2 h11a3e52_0
    libwebp-base 1.3.2 hd590300_1 conda-forge
    libxcb 1.15 h0b41bf4_0 conda-forge
    libxgboost 2.0.3 cuda118_hd3b444d_1 conda-forge
    libxml2 2.12.6 h232c23b_0 conda-forge
    libxslt 1.1.39 h76b75d6_0 conda-forge
    libzip 1.9.2 hc929e4a_1 conda-forge
    libzlib 1.2.13 h166bdaf_4 conda-forge
    libzopfli 1.0.3 h9c3ff4c_0 conda-forge
    lightgbm 4.3.0 py39h3d6467e_0 conda-forge
    lightning-utilities 0.10.1 pyhd8ed1ab_0 conda-forge
    llvm-openmp 16.0.6 h4dfa4b3_0 conda-forge
    llvmlite 0.42.0 py39h174d805_1 conda-forge
    logmuse 0.2.6 pyh8c360ce_0 conda-forge
    loguru 0.7.2 pypi_0 pypi
    lxml 4.9.1 py39hb9d737c_0 conda-forge
    lz4-c 1.9.4 hcb278e6_0 conda-forge
    lzo 2.10 h516909a_1000 conda-forge
    magma 2.7.2 h4aca40b_2 conda-forge
    markdown-it-py 3.0.0 pyhd8ed1ab_0 conda-forge
    markupsafe 2.1.2 py39h72bdee0_0 conda-forge
    matplotlib-base 3.7.1 py39he190548_0 conda-forge
    matplotlib-inline 0.1.6 pyhd8ed1ab_0 conda-forge
    mdtraj 1.9.7 py39h62423bb_4 conda-forge
    mdurl 0.1.2 pyhd8ed1ab_0 conda-forge
    melloddy-tuner 3.0.3a0 dev_0
    mistune 2.0.5 pyhd8ed1ab_0 conda-forge
    mkl 2023.2.0 h84fe81f_50495 conda-forge
    ml-workflow 0.2.0 dev_0
    ml_dtypes 0.4.0 py39hddac248_0 conda-forge
    mmgbsa-tool 0.1.0 dev_0
    mmpbsa-py 16.0 pypi_0 pypi
    molgrid 0.5.2 cuda118py39h7277d68_3 conda-forge
    mordred 1.2.0 py_1 conda-forge
    motor 2.5.1 pyhd8ed1ab_1 conda-forge
    mpc 1.3.1 hfe3b2da_0 conda-forge
    mpfr 4.2.1 h9458935_0 conda-forge
    mpi 1.0 mpich conda-forge
    mpi4py 3.1.5 py39h6cbbaa3_0 conda-forge
    mpich 4.1.2 h846660c_102 conda-forge
    mpiplus v0.0.2 pyhd8ed1ab_0 conda-forge
    mpmath 1.3.0 pyhd8ed1ab_0 conda-forge
    multidict 6.0.5 py39hd1e30aa_0 conda-forge
    munkres 1.1.4 pyh9f0ad1d_0 conda-forge
    mypy_extensions 1.0.0 pyha770c72_0 conda-forge
    nbclassic 1.0.0 pyhb4ecaf3_1 conda-forge
    nbclient 0.8.0 pyhd8ed1ab_0 conda-forge
    nbconvert 7.4.0 pyhd8ed1ab_0 conda-forge
    nbconvert-core 7.4.0 pyhd8ed1ab_0 conda-forge
    nbconvert-pandoc 7.4.0 pyhd8ed1ab_0 conda-forge
    nbformat 5.9.0 pyhd8ed1ab_0 conda-forge
    nccl 2.19.4.1 h6103f9b_0 conda-forge
    ncurses 6.3 h27087fc_1 conda-forge
    nest-asyncio 1.5.6 pyhd8ed1ab_0 conda-forge
    netcdf-fortran 4.6.1 nompi_hec59055_101 conda-forge
    netcdf4 1.6.4 nompi_py39h4218a78_101 conda-forge
    nettle 3.6 he412f7d_0 conda-forge
    networkx 3.2.1 pyhd8ed1ab_0 conda-forge
    nomkl 3.0 0
    nose 1.3.7 py_1006 conda-forge
    notebook 6.5.4 pyha770c72_0 conda-forge
    notebook-shim 0.2.3 pyhd8ed1ab_0 conda-forge
    numba 0.59.0 py39h615d6bd_1 conda-forge
    numexpr 2.8.4 py39h5ef5dce_100 conda-forge
    numpy 1.24.3 py39h6183b62_0 conda-forge
    numpydoc 1.7.0 pyhd8ed1ab_0 conda-forge
    oauth2client 4.1.3 py_0 conda-forge
    ocl-icd 2.3.1 h7f98852_0 conda-forge
    ocl-icd-system 1.0.0 1 conda-forge
    openbabel 3.1.1 py39h2d01fe1_9 conda-forge
    openblas 0.3.21 pthreads_h320a7e8_3 conda-forge
    openeye-toolkits 2023.1.0 py39_0 openeye
    openff-amber-ff-ports 0.0.3 pyh6c4a22f_0 conda-forge
    openff-forcefields 2023.05.1 pyh1a96a4e_1 conda-forge
    openff-interchange 0.3.18 pyhd8ed1ab_0 conda-forge
    openff-interchange-base 0.3.18 pyhd8ed1ab_0 conda-forge
    openff-models 0.1.2 pyhca7485f_0 conda-forge
    openff-toolkit 0.14.4 pyhd8ed1ab_1 conda-forge
    openff-toolkit-base 0.14.4 pyhd8ed1ab_1 conda-forge
    openff-units 0.2.2 pyhca7485f_0 conda-forge
    openff-utilities 0.1.8 pyh1a96a4e_0 conda-forge
    openh264 2.1.1 h780b84a_0 conda-forge
    openjpeg 2.5.0 hfec8fc6_2 conda-forge
    openmm 8.0.0 py39h7d85326_1 conda-forge
    openmmforcefields 0.11.2 pyhd8ed1ab_1 conda-forge
    openmmtools 0.23.1 pyhd8ed1ab_0 conda-forge
    openmoltools 0.8.8 pyhd8ed1ab_1 conda-forge
    openpyxl 3.1.2 py39hd1e30aa_1 conda-forge
    openssl 3.3.1 h4ab18f5_0 conda-forge
    opt-einsum 3.3.0 hd8ed1ab_2 conda-forge
    opt_einsum 3.3.0 pyhc1e730c_2 conda-forge
    orjson 3.10.1 py39h9fdd4d6_0 conda-forge
    overrides 7.3.1 pyhd8ed1ab_0 conda-forge
    packaging 23.1 pyhd8ed1ab_0 conda-forge
    packmol 20.010 h86c2bf4_0 conda-forge
    packmol-memgen 2023.2.24 pypi_0 pypi
    pandas 2.1.4 py39hddac248_0 conda-forge
    pandoc 2.19.2 h32600fe_2 conda-forge
    pandocfilters 1.5.0 pyhd8ed1ab_0 conda-forge
    panedr 0.7.1 pyhd8ed1ab_0 conda-forge
    pango 1.50.14 heaa33ce_1 conda-forge
    paramiko 3.4.0 pyhd8ed1ab_0 conda-forge
    parmap 1.7.0 pyhd8ed1ab_0 conda-forge
    parmed 4.1.0 py39h227be39_0 conda-forge
    parsedatetime 2.4 py_1 conda-forge
    parso 0.8.3 pyhd8ed1ab_0 conda-forge
    pathspec 0.11.1 pyhd8ed1ab_0 conda-forge
    pathtools 0.1.2 py_1 conda-forge
    patsy 0.5.6 pyhd8ed1ab_0 conda-forge
    pbr 5.11.1 pyhd8ed1ab_0 conda-forge
    pcre2 10.40 hc3806b6_0 conda-forge
    pdb4amber 22.0 pypi_0 pypi
    pdbfixer 1.9 pyh1a96a4e_0 conda-forge
    peppy 0.40.1 pyhd8ed1ab_0 conda-forge
    perl 5.32.1 2_h7f98852_perl5 conda-forge
    pexpect 4.8.0 pyh1a96a4e_2 conda-forge
    pickleshare 0.7.5 py_1003 conda-forge
    pillow 10.3.0 py39h5eee18b_0
    pint 0.21 pyhd8ed1ab_0 conda-forge
    pip 23.1.2 pyhd8ed1ab_0 conda-forge
    pixman 0.43.2 h59595ed_0 conda-forge
    pkasolver 0.3+0.g3ce0304.dirty dev_0
    pkgutil-resolve-name 1.3.10 pyhd8ed1ab_0 conda-forge
    plac 1.4.3 pyhd8ed1ab_0 conda-forge
    platformdirs 3.5.1 pyhd8ed1ab_0 conda-forge
    plotly 5.21.0 pyhd8ed1ab_0 conda-forge
    pluggy 1.0.0 pyhd8ed1ab_5 conda-forge
    ply 3.11 py_1 conda-forge
    pooch 1.7.0 pyha770c72_3 conda-forge
    prettytable 3.10.0 pyhd8ed1ab_0 conda-forge
    prody 2.4.0 py39h227be39_0 conda-forge
    prometheus_client 0.17.0 pyhd8ed1ab_0 conda-forge
    prompt-toolkit 3.0.38 pyha770c72_0 conda-forge
    prompt_toolkit 3.0.38 hd8ed1ab_0 conda-forge
    proto-plus 1.23.0 pyhd8ed1ab_0 conda-forge
    protobuf 4.24.4 py39h60f6b12_0 conda-forge
    psutil 5.9.5 py39h72bdee0_0 conda-forge
    pthread-stubs 0.4 h36c2ea0_1001 conda-forge
    ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge
    pulp 2.7.0 py39hf3d152e_1 conda-forge
    pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge
    py 1.11.0 pypi_0 pypi
    py-cpuinfo 9.0.0 pyhd8ed1ab_0 conda-forge
    py-xgboost 2.0.3 cuda118_pyhedeaf28_1 conda-forge
    pyarrow 15.0.0 pypi_0 pypi
    pyasn1 0.5.1 pyhd8ed1ab_0 conda-forge
    pyasn1-modules 0.3.0 pyhd8ed1ab_0 conda-forge
    pycairo 1.23.0 py39h23c5bb2_0 conda-forge
    pycparser 2.21 pyhd8ed1ab_0 conda-forge
    pycsa 0.2.1 dev_0
    pydantic 2.6.4 pyhd8ed1ab_0 conda-forge
    pydantic-core 2.16.3 py39h9fdd4d6_0 conda-forge
    pydantic-settings 2.2.1 pyhd8ed1ab_0 conda-forge
    pydoe3 1.0.2 pyhd8ed1ab_0 conda-forge
    pyedr 0.7.1 pyhd8ed1ab_0 conda-forge
    pyg 2.4.0 py39_torch_2.1.0_cu118 pyg
    pygments 2.15.1 pyhd8ed1ab_0 conda-forge
    pygraphviz 1.11 py39h7ef11f9_2 conda-forge
    pyicu 2.12 py39h8c063f3_0 conda-forge
    pylance 0.9.7 pypi_0 pypi
    pymbar 4.0.3 hf3d152e_1 conda-forge
    pymbar-core 4.0.3 py39h44dd56e_1 conda-forge
    pymongo 3.13.0 py39h5a03fae_0 conda-forge
    pymsmt 22.0 pypi_0 pypi
    pynacl 1.5.0 py39hd1e30aa_3 conda-forge
    pynndescent 0.5.11 pyhca7485f_0 conda-forge
    pyopenssl 24.0.0 pyhd8ed1ab_0 conda-forge
    pyparsing 3.0.9 pyhd8ed1ab_0 conda-forge
    pypdb 2.3 pyhd8ed1ab_0 conda-forge
    pyquaternion 0.9.9 pyhd8ed1ab_1 conda-forge
    pyrosetta 2024.13+release.59f5585 py39_0 https://conda.rosettacommons.org
    pyrsistent 0.19.3 py39h72bdee0_0 conda-forge
    pysftp 0.2.9 py_1 conda-forge
    pysocks 1.7.1 pyha2e5f31_6 conda-forge
    pytables 3.8.0 py39hb8e3aad_2 conda-forge
    pytest 7.3.1 pyhd8ed1ab_0 conda-forge
    python 3.9.16 h2782a2a_0_cpython conda-forge
    python-constraint 1.4.0 py_0 conda-forge
    python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge
    python-dotenv 1.0.1 pyhd8ed1ab_0 conda-forge
    python-fastjsonschema 2.17.1 pyhd8ed1ab_0 conda-forge
    python-graphviz 0.20.3 pyh717bed2_0 conda-forge
    python-irodsclient 2.0.0 pyhd8ed1ab_0 conda-forge
    python-json-logger 2.0.7 pyhd8ed1ab_0 conda-forge
    python-slugify 8.0.2 pyhd8ed1ab_0 conda-forge
    python-tzdata 2023.3 pyhd8ed1ab_0 conda-forge
    python_abi 3.9 3_cp39 conda-forge
    pytimeparse 1.1.8 py_0 conda-forge
    pytorch 2.1.0 cuda118_py39hcb596ef_303 conda-forge
    pytorch-cuda 11.8 h7e8668a_5 pytorch
    pytorch-mutex 1.0 cuda pytorch
    pytorch_geometric 2.4.0 pyhd8ed1ab_0 conda-forge
    pytraj 2.0.6 pypi_0 pypi
    pytz 2023.3 pyhd8ed1ab_0 conda-forge
    pyu2f 0.1.5 pyhd8ed1ab_0 conda-forge
    pyvis 0.3.1 pyhd8ed1ab_0 conda-forge
    pywavelets 1.4.1 py39h44dd56e_1 conda-forge
    pyyaml 5.4.1 py39hb9d737c_4 conda-forge
    pyzmq 25.1.0 py39hb257651_0 conda-forge
    qtconsole-base 5.5.1 pyha770c72_0 conda-forge
    qtpy 2.4.1 pyhd8ed1ab_0 conda-forge
    ratelimiter 1.2.0.post0 pypi_0 pypi
    rdflib 7.0.0 pyhd8ed1ab_0 conda-forge
    rdkit 2023.9.5 pypi_0 pypi
    readline 8.2 h8228510_1 conda-forge
    reportlab 3.6.13 py39h12ba270_0 conda-forge
    requests 2.31.0 pyhd8ed1ab_0 conda-forge
    requests_cache 0.4.13 py_0 conda-forge
    reretry 0.11.8 pyhd8ed1ab_0 conda-forge
    retry 0.9.2 pypi_0 pypi
    rfc3339-validator 0.1.4 pyhd8ed1ab_0 conda-forge
    rfc3986-validator 0.1.1 pyh9f0ad1d_0 conda-forge
    rich 13.7.1 pyhd8ed1ab_0 conda-forge
    rocm-smi 5.6.1 h59595ed_0 conda-forge
    rsa 4.9 pyhd8ed1ab_0 conda-forge
    s2n 1.3.46 h06160fa_0 conda-forge
    s3transfer 0.10.1 pyhd8ed1ab_0 conda-forge
    sander 22.0 pypi_0 pypi
    scikit-image 0.22.0 py39hddac248_2 conda-forge
    scikit-learn 1.4.0 py39ha22ef79_0 conda-forge
    scipy 1.10.1 py39h6183b62_3 conda-forge
    scripttest 1.3 pypi_0 pypi
    seaborn 0.13.2 hd8ed1ab_0 conda-forge
    seaborn-base 0.13.2 pyhd8ed1ab_0 conda-forge
    semver 3.0.2 pypi_0 pypi
    send2trash 1.8.2 pyh41d4057_0 conda-forge
    sentry-sdk 1.42.0 pyhd8ed1ab_0 conda-forge
    setproctitle 1.3.3 py39hd1e30aa_0 conda-forge
    setuptools 67.7.2 pyhd8ed1ab_0 conda-forge
    six 1.16.0 pyh6c4a22f_0 conda-forge
    slacker 0.14.0 py_0 conda-forge
    sleef 3.5.1 h9b69904_2 conda-forge
    smart_open 7.0.4 pyhd8ed1ab_0 conda-forge
    smirnoff99frosst 1.1.0 pyh44b312d_0 conda-forge
    smmap 5.0.0 pyhd8ed1ab_0 conda-forge
    smt 2.5.1 py39hddac248_0 conda-forge
    snakemake 7.32.4 hdfd78af_1 bioconda
    snakemake-minimal 7.32.4 pyhdfd78af_1 bioconda
    snappy 1.1.10 h9fff704_0 conda-forge
    sniffio 1.3.0 pyhd8ed1ab_0 conda-forge
    snowballstemmer 2.2.0 pyhd8ed1ab_0 conda-forge
    soupsieve 2.3.2.post1 pyhd8ed1ab_0 conda-forge
    sphinx 7.2.6 pyhd8ed1ab_0 conda-forge
    sphinxcontrib-applehelp 1.0.8 pyhd8ed1ab_0 conda-forge
    sphinxcontrib-devhelp 1.0.6 pyhd8ed1ab_0 conda-forge
    sphinxcontrib-htmlhelp 2.0.5 pyhd8ed1ab_0 conda-forge
    sphinxcontrib-jsmath 1.0.1 pyhd8ed1ab_0 conda-forge
    sphinxcontrib-qthelp 1.0.7 pyhd8ed1ab_0 conda-forge
    sphinxcontrib-serializinghtml 1.1.10 pyhd8ed1ab_0 conda-forge
    spm 0.1 dev_0
    sqlalchemy 2.0.15 py39hd1e30aa_0 conda-forge
    stack_data 0.6.2 pyhd8ed1ab_0 conda-forge
    stamp 0.1 dev_0
    standigm-chemlib 1.1.24 dev_0
    starlette 0.37.2 pyhd8ed1ab_0 conda-forge
    statsmodels 0.14.1 py39h44dd56e_0 conda-forge
    stone 3.3.3 pyhd8ed1ab_0 conda-forge
    stopit 1.1.2 py_0 conda-forge
    submitit 1.5.1 pyhd8ed1ab_0 conda-forge
    suds-community 1.1.2 pyhd8ed1ab_0 conda-forge
    svgwrite 1.4.3 pypi_0 pypi
    sympy 1.12 pypyh9d50eac_103 conda-forge
    sysroot_linux-64 2.12 he073ed8_16 conda-forge
    tabulate 0.9.0 pyhd8ed1ab_1 conda-forge
    tbb 2021.10.0 h00ab1b0_0 conda-forge
    tenacity 8.2.3 pyhd8ed1ab_0 conda-forge
    terminado 0.17.1 pyh41d4057_0 conda-forge
    text-unidecode 1.3 pyhd8ed1ab_1 conda-forge
    threadpoolctl 3.2.0 pyha21a80b_0 conda-forge
    throttler 1.2.2 pyhd8ed1ab_0 conda-forge
    tifffile 2023.8.12 pyhd8ed1ab_0 conda-forge
    tinycss2 1.2.1 pyhd8ed1ab_0 conda-forge
    tinydb 4.7.1 pyhd8ed1ab_0 conda-forge
    tk 8.6.12 h27826a3_0 conda-forge
    toml 0.10.2 pypi_0 pypi
    tomli 2.0.1 pyhd8ed1ab_0 conda-forge
    toposort 1.10 pyhd8ed1ab_0 conda-forge
    torchaudio 2.1.0 py39_cu118 pytorch
    torchmetrics 1.2.1 pyhd8ed1ab_0 conda-forge
    torchvision 0.16.0 py39_cu118 pytorch
    tornado 6.3.2 py39hd1e30aa_0 conda-forge
    tqdm 4.65.0 pyhd8ed1ab_1 conda-forge
    traitlets 5.9.0 pyhd8ed1ab_0 conda-forge
    tree 0.2.4 pypi_0 pypi
    trimesh 4.1.3 pyhd8ed1ab_0 conda-forge
    typing-extensions 4.10.0 hd8ed1ab_0 conda-forge
    typing_extensions 4.10.0 pyha770c72_0 conda-forge
    typing_utils 0.1.0 pyhd8ed1ab_0 conda-forge
    tzdata 2023c h71feb2d_0 conda-forge
    ubiquerg 0.7.0 pyhd8ed1ab_0 conda-forge
    unicodedata2 15.0.0 py39hb9d737c_0 conda-forge
    uritemplate 4.1.1 pyhd8ed1ab_0 conda-forge
    urllib3 1.26.18 pyhd8ed1ab_0 conda-forge
    uvicorn 0.29.0 py39hf3d152e_0 conda-forge
    validators 0.20.0 pyhd8ed1ab_0 conda-forge
    veracitools 0.1.3 py_0 conda-forge
    wandb 0.16.3 pyhd8ed1ab_0 conda-forge
    wcwidth 0.2.6 pyhd8ed1ab_0 conda-forge
    webencodings 0.5.1 py_1 conda-forge
    websocket-client 1.5.2 pyhd8ed1ab_0 conda-forge
    werkzeug 3.0.1 pyhd8ed1ab_0 conda-forge
    wheel 0.40.0 pyhd8ed1ab_0 conda-forge
    widgetsnbextension 3.6.4 pyhd8ed1ab_0 conda-forge
    wrapt 1.16.0 py39hd1e30aa_0 conda-forge
    xgboost 2.0.3 cuda118_pyh5ebfdf7_1 conda-forge
    xlrd 2.0.1 pyhd8ed1ab_3 conda-forge
    xmltodict 0.13.0 pyhd8ed1ab_0 conda-forge
    xorg-kbproto 1.0.7 h7f98852_1002 conda-forge
    xorg-libice 1.1.1 hd590300_0 conda-forge
    xorg-libsm 1.2.4 h7391055_0 conda-forge
    xorg-libx11 1.8.7 h8ee46fc_0 conda-forge
    xorg-libxau 1.0.11 hd590300_0 conda-forge
    xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge
    xorg-libxext 1.3.4 h0b41bf4_2 conda-forge
    xorg-libxrender 0.9.11 hd590300_0 conda-forge
    xorg-libxt 1.3.0 hd590300_1 conda-forge
    xorg-renderproto 0.11.1 h7f98852_1002 conda-forge
    xorg-xextproto 7.3.0 h0b41bf4_1003 conda-forge
    xorg-xproto 7.0.31 h7f98852_1007 conda-forge
    xz 5.2.6 h166bdaf_0 conda-forge
    yaml 0.2.5 h7f98852_2 conda-forge
    yank 0.25.2 pyhd8ed1ab_2 conda-forge
    yarl 1.9.4 py39hd1e30aa_0 conda-forge
    yte 1.5.4 pyha770c72_0 conda-forge
    zeromq 4.3.4 h9c3ff4c_1 conda-forge
    zfp 1.0.1 h59595ed_0 conda-forge
    zipp 3.15.0 pyhd8ed1ab_0 conda-forge
    zlib 1.2.13 h166bdaf_4 conda-forge
    zlib-ng 2.0.7 h0b41bf4_0 conda-forge
    zope.event 5.0 pyhd8ed1ab_0 conda-forge
    zope.interface 6.3 py39hd1e30aa_0 conda-forge
    zstd 1.5.5 hfc55251_0 conda-forge

Thanks for the writeup. This is helping me understand the landscape of OE licenses better, since in our license file we just have a single key for Omega (that is, we don't have separate keys for, for example, omega-toolkit vs omega-c++) , but it looks like the single license key covers multiple sub-features, since it contains the line #FEATURES: gas-phase;toolkit;python;java;clr.

I'll double check this soon, but I expect the issue is something like "oechem is correctly licensed so the entire OpenEyeToolkitWrapper is active, but then a certain feature in Omega isn't licensed so this error comes up".

In the longer run we could try to implement more fine-grained license checks, but at the core of the issue is that your OE license doesn't cover the core use of omega/quacpac needed in OpenFF system creation. This isn't a big deal - The OpenFF Toolkit can use RDKit+AmberTools instead (and I see those are installed in your environment).

So, I think a straightforward workaround to get your use case working would be to replace:

ligand_system = force_field.create_openmm_system(off_topology)

with

from openff.toolkit.utils import toolkit_registry_manager, AmberToolsToolkitWrapper, RDKitToolkitWrapper, ToolkitRegistry
with toolkit_registry_manager(ToolkitRegistry([AmberToolsToolkitWrapper(), RDKitToolkitWrapper()])):
    ligand_system = force_field.create_openmm_system(off_topology)

Could you let me know if that works?

Oh, and maybe I missed this - Did your original script run successfully and just output the license error to the console, or did it crash before completing? Most of the time, when the OpenFF Toolkit calls to outside tools, it will attempt to use OpenEye first (if it's installed and might be licensed), and if anything goes wrong there it will try using RDKit+AmberTools instead. So I'm realizing that your script might have been completing successfully all along (by falling back to the RDKit+AmberTools backend), but just printing out a concerning license error in the process.

I'm pretty sure the problem is that OpenEyeToolkitWrapper only uses itself to generate conformers, implying that it can't fall back to RDKit for conformer generation as you'd expect Molecule.generate_conformers to try. I think Quacpac charges with RDKit conformers is a valid use case (and probably one users would expect if they have a Quacpac license).

I haven't reproduced this, but this should be testable via mocking oeomega.OEOmegaIsLicensed

Good point @mattwthompson, I thought that Quacpac ELF10 calls internally used omega (in a way that we couldn't intercept) but it looks like I was wrong. I don't love the pattern of having ToolkitWrappers call each other (it adds complexity and reduces reproducibility) but given the value-add of Quacpac in charge assignment, I could live with a try/except here.

from openff.toolkit.utils import toolkit_registry_manager, AmberToolsToolkitWrapper, RDKitToolkitWrapper, ToolkitRegistry
with toolkit_registry_manager(ToolkitRegistry([AmberToolsToolkitWrapper(), RDKitToolkitWrapper()])):
    ligand_system = force_field.create_openmm_system(off_topology)

Could you let me know if that works?

Yes, it works. But, it would be nicer if I can use OEquacpac instead because it is much faster.

I think Quacpac charges with RDKit conformers is a valid use case (and probably one users would expect if they have a Quacpac license).

If this works, it would be our second best solution.
The best solution for us would be using openeye's oeomega/flipper (binary) + OEquacpac.
That is, the ideal fallback path would be OEomega toolkit --> OEomega binary (not currently implemented) --> RDkit.

FYI, there is a function call for checking the validity of OEomega toolkit.(https://docs.eyesopen.com/toolkits/python/omegatk/OEConfGenFunctions/OEOmegaIsLicensed.html)

I dug into this a little more and found some holes in how we handle users with some (but neither all nor none) OpenEye licenses. OpenEyeToolkitWrapper check at initialization if any licenses are found but doesn't check later. So in a case like we have here, the crash isn't observed until omega.OEOmega() is called. This makes it hard to programmatically work with each of the methods that might take different licenses or combinations of licenses.

This test "passes," but shouldn't (see comments):

import pytest

from openff.toolkit import Molecule


def test_am1bccelf10_no_omega(monkeypatch):
    from openff.toolkit.utils import OpenEyeToolkitWrapper

    from openeye import oeomega

    monkeypatch.setattr(oeomega, "OEOmegaIsLicensed", lambda: False)

    assert oeomega.OEOmegaIsLicensed() == False

    wrapper = OpenEyeToolkitWrapper()
    wrapper._check_licenses()

    molecule = Molecule.from_smiles(10 * "C")

    # works, but should not since Omega isn't licensed
    molecule.generate_conformers(
        n_conformers=200,
        toolkit_registry=wrapper,
    )

    monkeypatch.setattr(oeomega, "OEOmega", lambda: print("Don't use Omega"))

    # now this doesn't work, but I had to mock OEOmega directly to trigger
    with pytest.raises(
        AttributeError,
        match="'NoneType' object has no attribute 'SetMaxConfs'",
    ):
        molecule.generate_conformers(
            n_conformers=200,
            toolkit_registry=wrapper,
        )