Giter Club home page Giter Club logo

Comments (11)

ipcoder avatar ipcoder commented on May 29, 2024 1

@jaimergp I believe its an empty python 3.9 environment which I populate with the commands above.

It was awhile ago, and I could forget, but I usually work in separate environment, not in the base.

from conda-libmamba-solver.

jaimergp avatar jaimergp commented on May 29, 2024 1

@daico007 - I took your environment (no dev) from this PR (mosdef-hub/gmso#689), reverted the pydantic dependency to < 1.9.0, and ran it on a clean Docker image:

daico007.yaml.txt

$ CONDA_SUBDIR=linux-64 conda env create -f daico007.yaml --solver=libmamba --dry-run
conda-forge/noarch                                          Using cache
conda-forge/linux-64                                29.6MB @   2.3MB/s 21.0s
Collect all metadata (repodata.json): done
Solving environment: done
name: daico007
channels:
  - conda-forge
dependencies:
  - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge
  - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0
  - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0
  - conda-forge/linux-64::libgfortran5==12.2.0=h337968e_19
  - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19
  - conda-forge/linux-64::python_abi==3.11=3_cp311
  - conda-forge/noarch::tzdata==2022g=h191b570_0
  - conda-forge/linux-64::libgfortran-ng==12.2.0=h69a702a_19
  - conda-forge/linux-64::libgomp==12.2.0=h65d4601_19
  - conda-forge/linux-64::_openmp_mutex==4.5=2_gnu
  - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19
  - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4
  - conda-forge/linux-64::cudatoolkit==11.8.0=h37601d7_11
  - conda-forge/linux-64::gmp==6.2.1=h58526e2_0
  - conda-forge/linux-64::icu==70.1=h27087fc_0
  - conda-forge/linux-64::libffi==3.4.2=h7f98852_5
  - conda-forge/linux-64::libiconv==1.17=h166bdaf_0
  - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0
  - conda-forge/linux-64::libopenblas==0.3.21=pthreads_h78a6416_3
  - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000
  - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4
  - conda-forge/linux-64::ncurses==6.3=h27087fc_1
  - conda-forge/linux-64::ocl-icd==2.3.1=h7f98852_0
  - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0
  - conda-forge/linux-64::xz==5.2.6=h166bdaf_0
  - conda-forge/linux-64::libblas==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::libprotobuf==3.21.12=h3eb15da_0
  - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0
  - conda-forge/linux-64::libxml2==2.10.3=h7463322_0
  - conda-forge/linux-64::mpfr==4.1.0=h9202a9a_1
  - conda-forge/linux-64::ocl-icd-system==1.0.0=1
  - conda-forge/linux-64::readline==8.1.2=h0f457ee_0
  - conda-forge/linux-64::tk==8.6.12=h27826a3_0
  - conda-forge/linux-64::libcblas==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::liblapack==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::libxslt==1.1.37=h873f0b0_0
  - conda-forge/linux-64::mpc==1.3.1=hfe3b2da_0
  - conda-forge/linux-64::python==3.11.0=he550d4f_1_cpython
  - conda-forge/noarch::boltons==21.0.0=pyhd8ed1ab_0
  - conda-forge/noarch::certifi==2022.12.7=pyhd8ed1ab_0
  - conda-forge/noarch::charset-normalizer==2.1.1=pyhd8ed1ab_0
  - conda-forge/noarch::dataclasses==0.8=pyhc8e2a94_3
  - conda-forge/noarch::ele==0.2.0=pyhd8ed1ab_0
  - conda-forge/linux-64::gmpy2==2.1.2=py311h6a5fa03_1
  - conda-forge/noarch::idna==3.4=pyhd8ed1ab_0
  - conda-forge/noarch::lark-parser==0.12.0=pyhd8ed1ab_0
  - conda-forge/linux-64::lxml==4.9.2=py311h14a6109_0
  - conda-forge/noarch::mpmath==1.2.1=pyhd8ed1ab_0
  - conda-forge/noarch::networkx==3.0=pyhd8ed1ab_0
  - conda-forge/linux-64::numpy==1.24.2=py311h8e6699e_0
  - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0
  - conda-forge/noarch::pysocks==1.7.1=pyha2e5f31_6
  - conda-forge/noarch::pytz==2022.7.1=pyhd8ed1ab_0
  - conda-forge/noarch::setuptools==67.1.0=pyhd8ed1ab_0
  - conda-forge/noarch::six==1.16.0=pyh6c4a22f_0
  - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0
  - conda-forge/linux-64::cffi==1.15.1=py311h409f033_3
  - conda-forge/linux-64::openmm==8.0.0=py311h59c6c42_0
  - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0
  - conda-forge/linux-64::protobuf==4.21.12=py311hcafe171_0
  - conda-forge/noarch::pydantic==0.18.2=py_0
  - conda-forge/noarch::python-dateutil==2.8.2=pyhd8ed1ab_0
  - conda-forge/linux-64::sympy==1.11.1=py311h38be061_2
  - conda-forge/linux-64::brotlipy==0.7.0=py311hd4cff14_1005
  - conda-forge/linux-64::cryptography==39.0.1=py311h9b4c7bb_0
  - conda-forge/linux-64::pandas==1.5.3=py311h2872171_0
  - conda-forge/noarch::unyt==2.8.0=py_0
  - conda-forge/noarch::gmso==0.9.0=pyhd8ed1ab_0
  - conda-forge/linux-64::parmed==4.0.0=py311hcafe171_0
  - conda-forge/noarch::pyopenssl==23.0.0=pyhd8ed1ab_0
  - conda-forge/noarch::urllib3==1.26.14=pyhd8ed1ab_0
  - conda-forge/noarch::requests==2.28.2=pyhd8ed1ab_0
  - conda-forge/noarch::foyer==0.11.3=pyhd8ed1ab_0
  - conda-forge/noarch::forcefield-utilities==0.2.1=pyhd8ed1ab_0

conda-forge/noarch::pydantic==0.18.2=py_0 is being chosen, which reproduces what you saw. classic does get 1.8.2. (note: updated this sentence to fix an oversight)

classic
$ CONDA_SUBDIR=linux-64 conda env create -f daico007.yaml --solver=classic --dry-run
Collecting package metadata (repodata.json): done
Solving environment: done
name: daico007
channels:
  - conda-forge
dependencies:
  - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge
  - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0
  - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0
  - conda-forge/linux-64::libgfortran5==12.2.0=h337968e_19
  - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19
  - conda-forge/linux-64::python_abi==3.10=3_cp310
  - conda-forge/noarch::tzdata==2022g=h191b570_0
  - conda-forge/linux-64::libgfortran-ng==12.2.0=h69a702a_19
  - conda-forge/linux-64::libgomp==12.2.0=h65d4601_19
  - conda-forge/linux-64::_openmp_mutex==4.5=2_gnu
  - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19
  - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4
  - conda-forge/linux-64::cudatoolkit==11.8.0=h37601d7_11
  - conda-forge/linux-64::gmp==6.2.1=h58526e2_0
  - conda-forge/linux-64::icu==70.1=h27087fc_0
  - conda-forge/linux-64::libffi==3.4.2=h7f98852_5
  - conda-forge/linux-64::libiconv==1.17=h166bdaf_0
  - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0
  - conda-forge/linux-64::libopenblas==0.3.21=pthreads_h78a6416_3
  - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000
  - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4
  - conda-forge/linux-64::ncurses==6.3=h27087fc_1
  - conda-forge/linux-64::ocl-icd==2.3.1=h7f98852_0
  - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0
  - conda-forge/linux-64::xz==5.2.6=h166bdaf_0
  - conda-forge/linux-64::libblas==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::libprotobuf==3.21.12=h3eb15da_0
  - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0
  - conda-forge/linux-64::libxml2==2.10.3=h7463322_0
  - conda-forge/linux-64::mpfr==4.1.0=h9202a9a_1
  - conda-forge/linux-64::ocl-icd-system==1.0.0=1
  - conda-forge/linux-64::readline==8.1.2=h0f457ee_0
  - conda-forge/linux-64::tk==8.6.12=h27826a3_0
  - conda-forge/linux-64::libcblas==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::liblapack==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::libxslt==1.1.37=h873f0b0_0
  - conda-forge/linux-64::mpc==1.3.1=hfe3b2da_0
  - conda-forge/linux-64::python==3.10.9=he550d4f_0_cpython
  - conda-forge/noarch::boltons==21.0.0=pyhd8ed1ab_0
  - conda-forge/noarch::certifi==2022.12.7=pyhd8ed1ab_0
  - conda-forge/noarch::charset-normalizer==2.1.1=pyhd8ed1ab_0
  - conda-forge/noarch::ele==0.2.0=pyhd8ed1ab_0
  - conda-forge/linux-64::gmpy2==2.1.2=py310h3ec546c_1
  - conda-forge/noarch::idna==3.4=pyhd8ed1ab_0
  - conda-forge/noarch::lark-parser==0.12.0=pyhd8ed1ab_0
  - conda-forge/linux-64::lxml==4.9.2=py310hbdc0903_0
  - conda-forge/noarch::mpmath==1.2.1=pyhd8ed1ab_0
  - conda-forge/noarch::networkx==3.0=pyhd8ed1ab_0
  - conda-forge/linux-64::numpy==1.24.2=py310h8deb116_0
  - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0
  - conda-forge/noarch::pysocks==1.7.1=pyha2e5f31_6
  - conda-forge/noarch::pytz==2022.7.1=pyhd8ed1ab_0
  - conda-forge/noarch::setuptools==67.1.0=pyhd8ed1ab_0
  - conda-forge/noarch::six==1.16.0=pyh6c4a22f_0
  - conda-forge/noarch::typing_extensions==4.4.0=pyha770c72_0
  - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0
  - conda-forge/linux-64::cffi==1.15.1=py310h255011f_3
  - conda-forge/linux-64::openmm==8.0.0=py310h5728c26_0
  - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0
  - conda-forge/linux-64::protobuf==4.21.12=py310heca2aa9_0
  - conda-forge/noarch::python-dateutil==2.8.2=pyhd8ed1ab_0
  - conda-forge/linux-64::sympy==1.11.1=py310hff52083_2
  - conda-forge/noarch::typing-extensions==4.4.0=hd8ed1ab_0
  - conda-forge/linux-64::brotlipy==0.7.0=py310h5764c6d_1005
  - conda-forge/linux-64::cryptography==39.0.1=py310h34c0648_0
  - conda-forge/linux-64::pandas==1.5.3=py310h9b08913_0
  - conda-forge/linux-64::pydantic==1.8.2=py310h6acc77f_2
  - conda-forge/noarch::unyt==2.8.0=py_0
  - conda-forge/linux-64::parmed==4.0.0=py310heca2aa9_0
  - conda-forge/noarch::pyopenssl==23.0.0=pyhd8ed1ab_0
  - conda-forge/noarch::urllib3==1.26.14=pyhd8ed1ab_0
  - conda-forge/noarch::requests==2.28.2=pyhd8ed1ab_0
  - conda-forge/noarch::foyer==0.11.3=pyhd8ed1ab_0
  - conda-forge/noarch::forcefield-utilities==0.2.1=pyhd8ed1ab_0
  - conda-forge/noarch::gmso==0.9.1=pyhd8ed1ab_0

from conda-libmamba-solver.

daico007 avatar daico007 commented on May 29, 2024 1

Hi @jaimergp, when I am constraining the pydantic<1.9, I am expecting conda to grab the latest version of pydantic that satisfy the requirement (which would be v1.8.2, which I would get using mamba, not v0.18.2), but please correct me if that's not the designed behavior. This discrepancy (between conda and mamba) also happened if I just install pydantic alone, so I can't really blame it's on the inter-dependency in the environment.yml.

from conda-libmamba-solver.

jaimergp avatar jaimergp commented on May 29, 2024 1

Hi jaimergp, when I am constraining the pydantic<1.9, I am expecting conda to grab the latest version of pydantic that satisfy the requirement (which would be v1.8.2, which I would get using mamba, not v0.18.2), but please correct me if that's not the designed behavior. This discrepancy (between conda and mamba) also happened if I just install pydantic alone, so I can't really blame it's on the inter-dependency in the environment.yml.

Wow you are right @daico007. I saw 1-8-2 in both and then omitted the 0. I updated my above comment, sorry! We'll look into it.

from conda-libmamba-solver.

kenodegard avatar kenodegard commented on May 29, 2024

@daico007 I can replicate this, very weird, thanks for reporting, will investigate further

from conda-libmamba-solver.

jaimergp avatar jaimergp commented on May 29, 2024

Might have to do with the stuck openssl=3 migration.

from conda-libmamba-solver.

ipcoder avatar ipcoder commented on May 29, 2024

Here is another example, in this case mamba solves differently than conda with libmamba:
(especially notice wrong cpu instead of cuda version is selected for pytorch and torchvision)

mamba

❯ mamba install pytorch==1.10.2 torchvision==0.11.3  cudatoolkit=11.3
  Package             Version  Build                Channel                    Size
─────────────────────────────────────────────────────────────────────────────────────
  Install:
─────────────────────────────────────────────────────────────────────────────────────

  + cudatoolkit        11.3.1  h9edb442_10          conda-forge/linux-64      856MB
  + ffmpeg              4.3.2  h37c90e5_3           conda-forge/linux-64       10MB
  + future             0.18.2  py39hf3d152e_5       conda-forge/linux-64     Cached
  + gmp                 6.2.1  h58526e2_0           conda-forge/linux-64      826kB
  + gnutls             3.6.13  h85f3911_1           conda-forge/linux-64        2MB
  + lame                3.100  h7f98852_1001        conda-forge/linux-64      508kB
  + libprotobuf        3.19.4  h780b84a_0           conda-forge/linux-64        3MB
  + llvm-openmp        14.0.4  he0ac6c6_0           conda-forge/linux-64        6MB
  + mkl              2022.1.0  h84fe81f_915         conda-forge/linux-64      209MB
  + nettle                3.6  he412f7d_0           conda-forge/linux-64        7MB
  + ninja              1.11.0  h924138e_0           conda-forge/linux-64        3MB
  + openh264            2.1.1  h780b84a_0           conda-forge/linux-64        2MB
  + pytorch            1.10.2  cpu_py39h5e9ed0b_1   conda-forge/linux-64       57MB
  + sleef               3.5.1  h9b69904_2           conda-forge/linux-64        2MB
  + tbb              2021.5.0  h924138e_2           conda-forge/linux-64        2MB
  + torchvision        0.11.3  cpu_py39hfc47f1b_2   conda-forge/linux-64        7MB
  + x264           1!161.3030  h7f98852_1           conda-forge/linux-64        3MB
  + zlib               1.2.12  h166bdaf_3           conda-forge/linux-64       94kB

  Change:
─────────────────────────────────────────────────────────────────────────────────────

  - _openmp_mutex         4.5  2_gnu                conda-forge                    
  + _openmp_mutex         4.5  2_kmp_llvm           conda-forge/linux-64        6kB
  - libblas             3.9.0  16_linux64_openblas  conda-forge                    
  + libblas             3.9.0  16_linux64_mkl       conda-forge/linux-64       13kB
  - libcblas            3.9.0  16_linux64_openblas  conda-forge                    
  + libcblas            3.9.0  16_linux64_mkl       conda-forge/linux-64       13kB
  - liblapack           3.9.0  16_linux64_openblas  conda-forge                    
  + liblapack           3.9.0  16_linux64_mkl       conda-forge/linux-64       13kB

  Downgrade:
─────────────────────────────────────────────────────────────────────────────────────

  - setuptools         65.3.0  pyhd8ed1ab_1         conda-forge                    
  + setuptools         59.5.0  py39hf3d152e_0       conda-forge/linux-64        1MB

conda

❯ conda install pytorch==1.10.2 torchvision==0.11.3  cudatoolkit=11.3 --experimental-solver=libmamba
The following NEW packages will be INSTALLED:

  cudatoolkit        conda-forge/linux-64::cudatoolkit-11.3.1-h9edb442_10
  cudnn              conda-forge/linux-64::cudnn-8.4.1.50-hed8a83a_0
  ffmpeg             conda-forge/linux-64::ffmpeg-4.3.2-h37c90e5_3
  future             conda-forge/linux-64::future-0.18.2-py39hf3d152e_5
  gmp                conda-forge/linux-64::gmp-6.2.1-h58526e2_0
  gnutls             conda-forge/linux-64::gnutls-3.6.13-h85f3911_1
  lame               conda-forge/linux-64::lame-3.100-h7f98852_1001
  libprotobuf        conda-forge/linux-64::libprotobuf-3.19.4-h780b84a_0
  llvm-openmp        conda-forge/linux-64::llvm-openmp-14.0.4-he0ac6c6_0
  magma              conda-forge/linux-64::magma-2.5.4-h6103c52_2
  mkl                conda-forge/linux-64::mkl-2022.1.0-h84fe81f_915
  nccl               conda-forge/linux-64::nccl-2.14.3.1-h0800d71_0
  nettle             conda-forge/linux-64::nettle-3.6-he412f7d_0
  ninja              conda-forge/linux-64::ninja-1.11.0-h924138e_0
  openh264           conda-forge/linux-64::openh264-2.1.1-h780b84a_0
  pytorch            conda-forge/linux-64::pytorch-1.10.2-cuda112py39h4de5995_1
  sleef              conda-forge/linux-64::sleef-3.5.1-h9b69904_2
  tbb                conda-forge/linux-64::tbb-2021.5.0-h924138e_2
  torchvision        conda-forge/linux-64::torchvision-0.11.3-cuda112py39ha475c55_2
  x264               conda-forge/linux-64::x264-1!161.3030-h7f98852_1
  zlib               conda-forge/linux-64::zlib-1.2.12-h166bdaf_3

The following packages will be SUPERSEDED by a higher-priority channel:

  setuptools         conda-forge/noarch::setuptools-65.3.0~ --> conda-forge/linux-64::setuptools-59.5.0-py39hf3d152e_0

The following packages will be DOWNGRADED:

  _openmp_mutex                                   4.5-2_gnu --> 4.5-2_kmp_llvm
  libblas                         3.9.0-16_linux64_openblas --> 3.9.0-16_linux64_mkl
  libcblas                        3.9.0-16_linux64_openblas --> 3.9.0-16_linux64_mkl
  liblapack                       3.9.0-16_linux64_openblas --> 3.9.0-16_linux64_mkl

Details

conda info

❯ conda info

     active environment : base
    active env location : /home/ilyap/miniconda3
            shell level : 1
       user config file : /home/ilyap/.condarc
 populated config files : /home/ilyap/.condarc
          conda version : 4.14.0
    conda-build version : not installed
         python version : 3.9.13.final.0
       virtual packages : __cuda=11.4=0
                          __linux=5.15.0=0
                          __glibc=2.35=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /home/ilyap/miniconda3  (writable)
      conda av data dir : /home/ilyap/miniconda3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/ilyap/miniconda3/pkgs
                          /home/ilyap/.conda/pkgs
       envs directories : /home/ilyap/miniconda3/envs
                          /home/ilyap/.conda/envs
               platform : linux-64
             user-agent : conda/4.14.0 requests/2.28.1 CPython/3.9.13 Linux/5.15.0-48-generic ubuntu/22.04.1 glibc/2.35
                UID:GID : 1001:1001
             netrc file : None
           offline mode : False   

conarc

❯ /bin/cat ~/.condarc
channels:
  - conda-forge
  - defaults
channel_priority: strict

conda list

❯ conda list
# packages in environment at ~/miniconda3:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
anyio                     3.6.1              pyhd8ed1ab_1    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py39hb9d737c_2    conda-forge
asttokens                 2.0.8              pyhd8ed1ab_0    conda-forge
attrs                     22.1.0             pyh71513ae_1    conda-forge
babel                     2.10.3             pyhd8ed1ab_0    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.11.1             pyha770c72_0    conda-forge
bleach                    5.0.1              pyhd8ed1ab_0    conda-forge
brotli                    1.0.9                h166bdaf_7    conda-forge
brotli-bin                1.0.9                h166bdaf_7    conda-forge
brotlipy                  0.7.0           py39hb9d737c_1004    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.18.1               h7f98852_0    conda-forge
ca-certificates           2022.6.15.1          ha878542_0    conda-forge
certifi                   2022.6.15.1        pyhd8ed1ab_0    conda-forge
cffi                      1.15.1           py39he91dace_0    conda-forge
charset-normalizer        2.1.1              pyhd8ed1ab_0    conda-forge
colorama                  0.4.5              pyhd8ed1ab_0    conda-forge
conda                     4.14.0           py39hf3d152e_0    conda-forge
conda-libmamba-solver     22.8.1             pyhd8ed1ab_0    conda-forge
conda-package-handling    1.8.1            py39hb9d737c_1    conda-forge
cryptography              37.0.4           py39hd97740a_0    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
debugpy                   1.6.3            py39h5a03fae_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
executing                 1.0.0              pyhd8ed1ab_0    conda-forge
flit-core                 3.7.1              pyhd8ed1ab_0    conda-forge
fonttools                 4.37.1           py39hb9d737c_0    conda-forge
freetype                  2.12.1               hca18f0e_0    conda-forge
icu                       70.1                 h27087fc_0    conda-forge
idna                      3.3                pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.4           py39hf3d152e_0    conda-forge
importlib_metadata        4.11.4               hd8ed1ab_0    conda-forge
importlib_resources       5.9.0              pyhd8ed1ab_0    conda-forge
ipykernel                 6.15.2             pyh210e3f2_0    conda-forge
ipympl                    0.9.2              pyhd8ed1ab_0    conda-forge
ipython                   8.5.0              pyh41d4057_1    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                8.0.2              pyhd8ed1ab_1    conda-forge
jedi                      0.18.1             pyhd8ed1ab_2    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
jpeg                      9e                   h166bdaf_2    conda-forge
json5                     0.9.5              pyh9f0ad1d_0    conda-forge
jsonschema                4.16.0             pyhd8ed1ab_0    conda-forge
jupyter-lsp               1.5.1              pyhd8ed1ab_0    conda-forge
jupyter_client            7.3.5              pyhd8ed1ab_0    conda-forge
jupyter_core              4.11.1           py39hf3d152e_0    conda-forge
jupyter_server            1.18.1             pyhd8ed1ab_0    conda-forge
jupyterlab                3.4.7              pyhd8ed1ab_0    conda-forge
jupyterlab-lsp            3.10.2             pyhd8ed1ab_0    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_server         2.15.1             pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        3.0.3              pyhd8ed1ab_0    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
kiwisolver                1.4.4            py39hf939315_0    conda-forge
krb5                      1.19.3               h3790be6_0    conda-forge
lcms2                     2.12                 hddcbb42_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
lerc                      4.0.0                h27087fc_0    conda-forge
libarchive                3.5.2                hb890918_3    conda-forge
libblas                   3.9.0           16_linux64_openblas    conda-forge
libbrotlicommon           1.0.9                h166bdaf_7    conda-forge
libbrotlidec              1.0.9                h166bdaf_7    conda-forge
libbrotlienc              1.0.9                h166bdaf_7    conda-forge
libcblas                  3.9.0           16_linux64_openblas    conda-forge
libcurl                   7.83.1               h7bff187_0    conda-forge
libdeflate                1.14                 h166bdaf_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 12.1.0              h8d9b700_16    conda-forge
libgfortran-ng            12.1.0              h69a702a_16    conda-forge
libgfortran5              12.1.0              hdcd56e2_16    conda-forge
libgomp                   12.1.0              h8d9b700_16    conda-forge
libiconv                  1.16                 h516909a_0    conda-forge
liblapack                 3.9.0           16_linux64_openblas    conda-forge
libmamba                  0.25.0               hd8a31e3_2    conda-forge
libmambapy                0.25.0           py39hd55135b_2    conda-forge
libnghttp2                1.47.0               hdcd2b5c_1    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libopenblas               0.3.21          pthreads_h78a6416_3    conda-forge
libpng                    1.6.37               h753d276_4    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libsolv                   0.7.22               h6239696_0    conda-forge
libsqlite                 3.39.3               h753d276_0    conda-forge
libssh2                   1.10.0               haa6b8db_3    conda-forge
libstdcxx-ng              12.1.0              ha89aaad_16    conda-forge
libtiff                   4.4.0                h55922b4_4    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libwebp-base              1.2.4                h166bdaf_0    conda-forge
libxcb                    1.13              h7f98852_1004    conda-forge
libxml2                   2.9.14               h22db469_4    conda-forge
libxslt                   1.1.35               h8affb1d_0    conda-forge
libzlib                   1.2.12               h166bdaf_3    conda-forge
lxml                      4.9.1            py39hb9d737c_0    conda-forge
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
lzo                       2.10              h516909a_1000    conda-forge
mamba                     0.25.0           py39hfa8f2c8_2    conda-forge
markupsafe                2.1.1            py39hb9d737c_1    conda-forge
matplotlib-base           3.5.3            py39h19d6b11_2    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mistune                   2.0.4              pyhd8ed1ab_0    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
nbclassic                 0.4.3              pyhd8ed1ab_0    conda-forge
nbclient                  0.6.8              pyhd8ed1ab_0    conda-forge
nbconvert                 7.0.0              pyhd8ed1ab_0    conda-forge
nbconvert-core            7.0.0              pyhd8ed1ab_0    conda-forge
nbconvert-pandoc          7.0.0              pyhd8ed1ab_0    conda-forge
nbformat                  5.5.0              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
nest-asyncio              1.5.5              pyhd8ed1ab_0    conda-forge
notebook                  6.4.12             pyha770c72_0    conda-forge
notebook-shim             0.1.0              pyhd8ed1ab_0    conda-forge
numpy                     1.23.3           py39hba7629e_0    conda-forge
openjpeg                  2.5.0                h7d73246_1    conda-forge
openssl                   1.1.1q               h166bdaf_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandoc                    2.19.2               ha770c72_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    9.2.0            py39hd5dbb17_2    conda-forge
pip                       22.2.2             pyhd8ed1ab_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
prometheus_client         0.14.1             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.31             pyha770c72_0    conda-forge
psutil                    5.9.2            py39hb9d737c_0    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
pybind11-abi              4                    hd8ed1ab_3    conda-forge
pycosat                   0.6.3           py39hb9d737c_1010    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pygments                  2.13.0             pyhd8ed1ab_0    conda-forge
pyopenssl                 22.0.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyrsistent                0.18.1           py39hb9d737c_1    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
python                    3.9.13          h9a8a25e_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-fastjsonschema     2.16.1             pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytz                      2022.2.1           pyhd8ed1ab_0    conda-forge
pyzmq                     23.2.1           py39headdf64_0    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
reproc                    14.2.3               h7f98852_0    conda-forge
reproc-cpp                14.2.3               h9c3ff4c_0    conda-forge
requests                  2.28.1             pyhd8ed1ab_1    conda-forge
ruamel_yaml               0.15.80         py39hb9d737c_1007    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                65.3.0             pyhd8ed1ab_1    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sniffio                   1.3.0              pyhd8ed1ab_0    conda-forge
soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
sqlite                    3.39.3               h4ff8645_0    conda-forge
stack_data                0.5.0              pyhd8ed1ab_0    conda-forge
terminado                 0.15.0           py39hf3d152e_0    conda-forge
tinycss2                  1.1.1              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
toolz                     0.12.0             pyhd8ed1ab_0    conda-forge
tornado                   6.2              py39hb9d737c_0    conda-forge
tqdm                      4.64.1             pyhd8ed1ab_0    conda-forge
traitlets                 5.4.0              pyhd8ed1ab_0    conda-forge
typing_extensions         4.3.0              pyha770c72_0    conda-forge
tzdata                    2022c                h191b570_0    conda-forge
unicodedata2              14.0.0           py39hb9d737c_1    conda-forge
urllib3                   1.26.11            pyhd8ed1ab_0    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          1.4.1              pyhd8ed1ab_0    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
widgetsnbextension        4.0.3              pyhd8ed1ab_0    conda-forge
xorg-libxau               1.0.9                h7f98852_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
yaml-cpp                  0.7.0                h27087fc_1    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zipp                      3.8.1              pyhd8ed1ab_0    conda-forge
zstd                      1.5.2                h6239696_4    conda-forge

from conda-libmamba-solver.

agitter avatar agitter commented on May 29, 2024

I experienced an issue that is somewhat related but not identical. If it is sufficiently different, I'll open a new issue.

In my case, I was installing the same PyTorch environment with classic and libmamba solvers:

$ conda env create -f pyg-minimal.yml --experimental-solver classic
$ conda env create -f pyg-minimal.yml --experimental-solver libmamba

The classic solver correctly installed the CPU versions but the libmamba solver incorrectly installed cudatoolkit and the CUDA versions.

pyg-minimal.yml:

name: pyg
channels:
  - conda-forge
  - pyg
  - pytorch
dependencies:
  - cpuonly
  - pyg=2.1.0
  - python=3.9
  - pytorch::pytorch=1.12

from conda-libmamba-solver.

jaimergp avatar jaimergp commented on May 29, 2024

@ipcoder - in which environment are you trying to install those packages? I am trying to reproduce but taking your base gives unsolvable, so I am assuming it has to do with a different environment.

ipcoder-base.yaml.txt

from conda-libmamba-solver.

jaimergp avatar jaimergp commented on May 29, 2024

@ipcoder - my results for the following input:

name: ipcoder
channels:
- conda-forge
- defaults
dependencies:
- python=3.9
- pytorch==1.10.2
- torchvision==0.11.3
- cudatoolkit=11.3

There are some differences in the MKL/openblas stack, but pytorch itself is indeed CPU in both.

libmamba
$ CONDA_SUBDIR=linux-64 conda env create -f ipcoder.yaml --dry-run --solver=libmamba
warning  libmamba Could not parse mod/etag header
warning  libmamba Could not parse mod/etag header
warning  libmamba Could not parse mod/etag header
pkgs/main/noarch                                              No change
pkgs/r/linux-64                                               No change
pkgs/r/noarch                                                 No change
pkgs/main/linux-64                                   5.2MB @   2.5MB/s  2.7s
conda-forge/noarch                                  11.2MB @   3.5MB/s  4.3s
conda-forge/linux-64                                29.6MB @   3.3MB/s 12.4s
Collect all metadata (repodata.json): done
Solving environment: done
name: ipcoder
channels:
  - conda-forge
  - defaults
dependencies:
  - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge
  - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0
  - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0
  - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19
  - conda-forge/linux-64::python_abi==3.9=3_cp39
  - conda-forge/noarch::tzdata==2022g=h191b570_0
  - conda-forge/linux-64::libgomp==12.2.0=h65d4601_19
  - conda-forge/linux-64::_openmp_mutex==4.5=2_gnu
  - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19
  - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4
  - conda-forge/linux-64::cudatoolkit==11.3.1=h9edb442_11
  - conda-forge/linux-64::gmp==6.2.1=h58526e2_0
  - conda-forge/linux-64::jpeg==9e=h166bdaf_2
  - conda-forge/linux-64::lame==3.100=h166bdaf_1003
  - conda-forge/linux-64::lerc==4.0.0=h27087fc_0
  - conda-forge/linux-64::libdeflate==1.17=h0b41bf4_0
  - conda-forge/linux-64::libffi==3.4.2=h7f98852_5
  - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0
  - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000
  - conda-forge/linux-64::libwebp-base==1.2.4=h166bdaf_0
  - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4
  - conda-forge/linux-64::ncurses==6.3=h27087fc_1
  - conda-forge/linux-64::nettle==3.6=he412f7d_0
  - conda-forge/linux-64::ninja==1.11.0=h924138e_0
  - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0
  - conda-forge/linux-64::pthread-stubs==0.4=h36c2ea0_1001
  - conda-forge/linux-64::sleef==3.5.1=h9b69904_2
  - conda-forge/linux-64::x264==1!161.3030=h7f98852_1
  - conda-forge/linux-64::xorg-libxau==1.0.9=h7f98852_0
  - conda-forge/linux-64::xorg-libxdmcp==1.1.3=h7f98852_0
  - conda-forge/linux-64::xz==5.2.6=h166bdaf_0
  - conda-forge/linux-64::gnutls==3.6.13=h85f3911_1
  - conda-forge/linux-64::libpng==1.6.39=h753d276_0
  - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0
  - conda-forge/linux-64::libxcb==1.13=h7f98852_1004
  - conda-forge/linux-64::readline==8.1.2=h0f457ee_0
  - conda-forge/linux-64::tk==8.6.12=h27826a3_0
  - conda-forge/linux-64::zlib==1.2.13=h166bdaf_4
  - conda-forge/linux-64::zstd==1.5.2=h3eb15da_6
  - conda-forge/linux-64::freetype==2.12.1=hca18f0e_1
  - defaults/linux-64::intel-openmp==2022.1.0=h9e868ea_3769
  - conda-forge/linux-64::libprotobuf==3.19.4=h780b84a_0
  - conda-forge/linux-64::libtiff==4.5.0=h6adf6a1_2
  - conda-forge/linux-64::openh264==2.1.1=h780b84a_0
  - conda-forge/linux-64::python==3.9.16=h2782a2a_0_cpython
  - conda-forge/linux-64::ffmpeg==4.3.2=h37c90e5_3
  - conda-forge/noarch::future==0.18.3=pyhd8ed1ab_0
  - conda-forge/linux-64::lcms2==2.14=hfd0df8a_1
  - defaults/linux-64::mkl==2022.1.0=hc2b9512_224
  - conda-forge/linux-64::openjpeg==2.5.0=hfec8fc6_2
  - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0
  - conda-forge/linux-64::setuptools==59.5.0=py39hf3d152e_0
  - conda-forge/noarch::typing_extensions==4.4.0=pyha770c72_0
  - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0
  - conda-forge/linux-64::cffi==1.15.1=py39he91dace_3
  - conda-forge/linux-64::libblas==3.9.0=16_linux64_mkl
  - conda-forge/linux-64::pillow==9.4.0=py39h2320bf1_1
  - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0
  - conda-forge/linux-64::libcblas==3.9.0=16_linux64_mkl
  - conda-forge/linux-64::liblapack==3.9.0=16_linux64_mkl
  - conda-forge/linux-64::numpy==1.24.2=py39h7360e5f_0
  - conda-forge/linux-64::pytorch==1.10.2=cpu_py39h5e9ed0b_1
  - conda-forge/linux-64::torchvision==0.11.3=cpu_py39hfc47f1b_2
classic
$ CONDA_SUBDIR=linux-64 conda env create -f ipcoder.yaml --dry-run
Collecting package metadata (repodata.json): done
Solving environment: done
name: ipcoder
channels:
  - conda-forge
  - defaults
dependencies:
  - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge
  - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0
  - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0
  - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19
  - conda-forge/linux-64::python_abi==3.9=3_cp39
  - conda-forge/noarch::tzdata==2022g=h191b570_0
  - conda-forge/linux-64::_openmp_mutex==4.5=2_kmp_llvm
  - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19
  - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4
  - conda-forge/linux-64::cudatoolkit==11.3.1=h9edb442_11
  - conda-forge/linux-64::gmp==6.2.1=h58526e2_0
  - conda-forge/linux-64::icu==70.1=h27087fc_0
  - conda-forge/linux-64::jpeg==9e=h166bdaf_2
  - conda-forge/linux-64::lame==3.100=h166bdaf_1003
  - conda-forge/linux-64::lerc==4.0.0=h27087fc_0
  - conda-forge/linux-64::libdeflate==1.17=h0b41bf4_0
  - conda-forge/linux-64::libffi==3.4.2=h7f98852_5
  - conda-forge/linux-64::libiconv==1.17=h166bdaf_0
  - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0
  - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000
  - conda-forge/linux-64::libwebp-base==1.2.4=h166bdaf_0
  - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4
  - conda-forge/linux-64::ncurses==6.3=h27087fc_1
  - conda-forge/linux-64::nettle==3.6=he412f7d_0
  - conda-forge/linux-64::ninja==1.11.0=h924138e_0
  - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0
  - conda-forge/linux-64::pthread-stubs==0.4=h36c2ea0_1001
  - conda-forge/linux-64::sleef==3.5.1=h9b69904_2
  - conda-forge/linux-64::x264==1!161.3030=h7f98852_1
  - conda-forge/linux-64::xorg-libxau==1.0.9=h7f98852_0
  - conda-forge/linux-64::xorg-libxdmcp==1.1.3=h7f98852_0
  - conda-forge/linux-64::xz==5.2.6=h166bdaf_0
  - conda-forge/linux-64::gnutls==3.6.13=h85f3911_1
  - conda-forge/linux-64::libpng==1.6.39=h753d276_0
  - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0
  - conda-forge/linux-64::libxcb==1.13=h7f98852_1004
  - conda-forge/linux-64::libxml2==2.10.3=h7463322_0
  - conda-forge/linux-64::llvm-openmp==15.0.7=h0cdce71_0
  - conda-forge/linux-64::readline==8.1.2=h0f457ee_0
  - conda-forge/linux-64::tk==8.6.12=h27826a3_0
  - conda-forge/linux-64::zlib==1.2.13=h166bdaf_4
  - conda-forge/linux-64::zstd==1.5.2=h3eb15da_6
  - conda-forge/linux-64::freetype==2.12.1=hca18f0e_1
  - conda-forge/linux-64::libhwloc==2.8.0=h32351e8_1
  - conda-forge/linux-64::libprotobuf==3.19.4=h780b84a_0
  - conda-forge/linux-64::libtiff==4.5.0=h6adf6a1_2
  - conda-forge/linux-64::openh264==2.1.1=h780b84a_0
  - conda-forge/linux-64::python==3.9.16=h2782a2a_0_cpython
  - conda-forge/linux-64::ffmpeg==4.3.2=h37c90e5_3
  - conda-forge/noarch::future==0.18.3=pyhd8ed1ab_0
  - conda-forge/linux-64::lcms2==2.14=hfd0df8a_1
  - conda-forge/linux-64::openjpeg==2.5.0=hfec8fc6_2
  - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0
  - conda-forge/linux-64::setuptools==59.5.0=py39hf3d152e_0
  - conda-forge/linux-64::tbb==2021.7.0=h924138e_1
  - conda-forge/noarch::typing_extensions==4.4.0=pyha770c72_0
  - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0
  - conda-forge/linux-64::cffi==1.15.1=py39he91dace_3
  - conda-forge/linux-64::mkl==2022.2.1=h84fe81f_16997
  - conda-forge/linux-64::pillow==9.4.0=py39h2320bf1_1
  - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0
  - conda-forge/linux-64::libblas==3.9.0=16_linux64_mkl
  - conda-forge/linux-64::libcblas==3.9.0=16_linux64_mkl
  - conda-forge/linux-64::liblapack==3.9.0=16_linux64_mkl
  - conda-forge/linux-64::numpy==1.24.2=py39h7360e5f_0
  - conda-forge/linux-64::pytorch==1.10.2=cpu_py39h5e9ed0b_1
  - conda-forge/linux-64::torchvision==0.11.3=cpu_py39h955d6d4_2

from conda-libmamba-solver.

jaimergp avatar jaimergp commented on May 29, 2024

Hi @daico007, I have looked a bit further into your reproducer. I just realized you are not specifying any particular python version, so libsolv has to try all of them. In that backtracking process, it will try to select pydantic 1.8.2 for Python 3.11, which doesn't exist, and this will trigger a cascade of alternative searches that concludes that the pydantic 0.8.2 does work with Python 3.11 (because it's noarch and its repodata has an open-ended upper bound), before trying Python 3.10 and Pydantic 1.8.2.

IOW, libsolv cannot anticipate that you'd prefer a more recent pydantic over a more recent python, so it prioritizes getting python 3.11 over getting pydantic 1.8.2.

If you specify any Python version, you do get 1.8.2. This works even with python <3.11.

More details:

from conda-libmamba-solver.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.