Skip to content

Use khiops-core and khiops-driver-* pip packages containing binaries only#582

Open
tramora wants to merge 2 commits into
mainfrom
core-and-drivers-as-pip-packages
Open

Use khiops-core and khiops-driver-* pip packages containing binaries only#582
tramora wants to merge 2 commits into
mainfrom
core-and-drivers-as-pip-packages

Conversation

@tramora
Copy link
Copy Markdown
Collaborator

@tramora tramora commented May 26, 2026

Fixes #572 and #578


TODO Before Asking for a Review

  • Rebase your branch to the latest version of main (or main-v10)
  • Make sure all CI workflows are green
  • When adding a public feature/fix: Update the Unreleased section of CHANGELOG.md (no date)
  • Self-Review: Review "Files Changed" tab and fix any problems you find
  • API Docs (only if there are changes in docstrings, rst files or samples):
    • Check the docs build without warning: see the log of the API Docs workflow
    • Check that your changes render well in HTML: download the API Docs artifact and open index.html
    • If there are any problems it is faster to iterate by building locally the API Docs

@tramora tramora marked this pull request as draft May 26, 2026 16:23
@tramora tramora force-pushed the core-and-drivers-as-pip-packages branch 9 times, most recently from caa2f18 to fd7c550 Compare May 28, 2026 10:32
@tramora tramora marked this pull request as ready for review May 28, 2026 13:44
@tramora tramora requested a review from popescu-v May 28, 2026 13:44
@tramora tramora force-pushed the core-and-drivers-as-pip-packages branch 2 times, most recently from 394d474 to 5312426 Compare May 28, 2026 21:33
@tramora
Copy link
Copy Markdown
Collaborator Author

tramora commented May 28, 2026

False sentiment of success : we simulate multiple Python environments using conda (#573). This is very unfortunate as we are not able yet to detect automatically an issue with the new PyPI packages regarding the remote drivers khiops-core:1041. In my opinion this one is a blocking issue.

@tramora tramora force-pushed the core-and-drivers-as-pip-packages branch from 5312426 to b0223fa Compare May 29, 2026 00:37
@popescu-v
Copy link
Copy Markdown
Collaborator

False sentiment of success : we simulate multiple Python environments using conda (#573). This is very unfortunate as we are not able yet to detect automatically an issue with the new PyPI packages regarding the remote drivers khiops-core:1041. In my opinion this one is a blocking issue.

Hence, to properly test this, issue #573 must be addressed first. Right, @tramora ?

@tramora tramora force-pushed the core-and-drivers-as-pip-packages branch from 95a1d21 to cfd1802 Compare May 29, 2026 09:43
Comment thread .github/workflows/api-docs.yml Outdated
python -m pip install --user .
# khiops-core and khiops-drivers-* must always be installed from TestPyPI in order to avoid distorting usage statistics
# Use of both 'index-url' and '--extra-index-url' options allows indexes prioritization (PEP 766)
python -m pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple --user .
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I am not sure I see why just python -m pip install --extra-index-url https://test.pypi.org/simple does not suffice:

  • the latest version of khiops-core is taken from test.pypi.org;
  • all other dependencies are taken from pypi.org.

Why is this not enough (no need for drivers to build the API docs)?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

It was must first change but ... when the package will be on both PyPI and Test PyPI (under the same version or not), as PyPI is the index in the list, it will be used first. That was the rationale of the reordering

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I see. In this case, in order to make sure all other dependencies than khiops-*(core and drivers) are taken from pypi.org, IMHO we need to:

  1. First install all dependencies except khiops-*-ones from pypi.org
  2. Install only the khiops-* packages from test.pypi.org only (as the only --index-url, no --extra-index-url).

Copy link
Copy Markdown
Collaborator Author

@tramora tramora May 29, 2026

Choose a reason for hiding this comment

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

I will split into 2 distinct lines then.

There is a difficulty however in a few cases

  • when a pip install . is performed in the khiops-python folder. (in api-docs.yml)
  • when the khiops-python "tar.gz" artifact is installed (in pip.yml)
  • on Windows Powershell where the perl and grep tools are not available

It seems impossible to perform a on-the-fly filtering (unless doing complex tricks)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Refactored in splitting in two lines except for Windows (PowerShell) where I do not know yet the tools that would help me

Comment thread .github/workflows/dev-docker.yml Outdated
echo "KHIOPSDEV_OS_CODENAME=$(echo '${{ matrix.khiopsdev-os }}' | tr -d '0-9.')" >> "$GITHUB_ENV"
KHIOPSDEV_OS_CODENAME=$(echo '${{ matrix.khiopsdev-os }}' | tr -d '0-9.')
echo "KHIOPSDEV_OS_CODENAME=${KHIOPSDEV_OS_CODENAME}" >> "$GITHUB_ENV"
if [[ "${KHIOPSDEV_OS_CODENAME}" == "ubuntu" || "${KHIOPSDEV_OS_CODENAME}" == "debian" ]]; then
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I would use a Bash case here with an error message in the default case.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I changed the syntax, unless I'm wrong, there is no error message to show in the default case as then a specific Dockerfile is used ("Dockerfile.rocky")

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I changed the syntax, unless I'm wrong, there is no error message to show in the default case as then a specific Dockerfile is used ("Dockerfile.rocky")

I thought about explicitly supporting debian, ubuntu (one case), and rocky (second case), with an error for any other codename.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Changed but in my opinion it adds a burden to the maintainer (compared to the situation before this PR).
The matrix of all the supported OSes is defined in the same file and the Dockerfile extension was evaluated using each value of the matrix (after suppressing the digits or .). It seems unnecessary to verify that every value is in the same matrix

Comment thread .github/workflows/pip.yml Outdated
pip install $(ls khiops*.tar.gz)
# khiops-core and khiops-drivers-* must always be installed from TestPyPI in order to avoid distorting usage statistics
# Use of both 'index-url' and '--extra-index-url' options allows indexes prioritization (PEP 766)
pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple $(ls khiops*.tar.gz)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

See comment above about the --extra-index-url.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Refactored in splitting in two lines except for Windows (PowerShell) where I do not know yet the tools that would help me

Comment thread .github/workflows/quick-checks.yml Outdated

# khiops-core and khiops-drivers-* must always be installed from TestPyPI in order to avoid distorting usage statistics
# Use of both 'index-url' and '--extra-index-url' options allows indexes prioritization (PEP 766)
pip-compile --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple -o requirements.txt
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Idem as above.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Refactored in splitting in two lines except for Windows (PowerShell) where I do not know yet the tools that would help me

Comment thread .github/workflows/quick-checks.yml Outdated
# Install dev dependencies
pip install -r requirements.txt
# Same indexes prioritization as above
pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple -r requirements.txt
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Idem as above.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Refactored in splitting in two lines except for Windows (PowerShell) where I do not know yet the tools that would help me

# Use of both 'index-url' and '--extra-index-url' options allows indexes prioritization (PEP 766)
Get-Content .\requires.txt `
| ForEach-Object {python -m pip install $_.toString()}
| ForEach-Object {python -m pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple $_.toString()}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same as above regarding --extra-index-url.

Copy link
Copy Markdown
Collaborator Author

@tramora tramora May 29, 2026

Choose a reason for hiding this comment

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

for Windows (PowerShell), I do not know yet the tools that would help me split into 2 lines

# Same indexes prioritization as above
Get-Content .\requires.txt `
| ForEach-Object {khiops-windows-venv\Scripts\python -m pip install $_.toString()}
| ForEach-Object {khiops-windows-venv\Scripts\python -m pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple $_.toString()}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Cf. the --extra-index-url comments above.

Copy link
Copy Markdown
Collaborator Author

@tramora tramora May 29, 2026

Choose a reason for hiding this comment

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

for Windows (PowerShell), I do not know yet the tools that would help me split into 2 lines

Comment thread .github/workflows/tests.yml Outdated
pip install `cat requires.txt`
# khiops-core and khiops-drivers-* must always be installed from TestPyPI in order to avoid distorting usage statistics
# Use of both 'index-url' and '--extra-index-url' options allows indexes prioritization (PEP 766)
pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple `cat requires.txt`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same comment as above.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Refactored in splitting in two lines except for Windows (PowerShell) where I do not know yet the tools that would help me

Comment thread khiops/core/internals/filesystems.py Outdated
return uri_info._replace(path=_child_path(uri_info.path, child_name))


def _check_khiops_driver_library(khiops_drivers_path, remote_storage_type):
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Have khiops_drivers_path as a kwarg set to None by default.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread khiops/core/internals/filesystems.py Outdated
# We cannot guarantee where the dynamic library is located.
# It seems wiser to avoid raising a false error
return
extension = ".dll" if platform.system() == "Windows" else ".so"
Copy link
Copy Markdown
Collaborator

@popescu-v popescu-v May 29, 2026

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

You are right, even if I read in different pages that the ".so" was supported first to avoid differences between the "*BSD/Darwin" world and the Linux... then that ".so" was intented only for "Shared Modules" not "Shared Libraries" that shoud be ".dylib" or ".framework". Nevertheless it is implemented as a ".dylib" in our case.

Comment thread khiops/core/internals/filesystems.py Outdated
return uri_info._replace(path=_child_path(uri_info.path, child_name))


def _check_khiops_driver_library(khiops_drivers_path, remote_storage_type):
Copy link
Copy Markdown
Collaborator

@popescu-v popescu-v May 29, 2026

Choose a reason for hiding this comment

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

Add type and value checks for remote_storage_type (as asserts, because this is a "private" function by convention) - also see the comment below in this respect.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

@tramora
Copy link
Copy Markdown
Collaborator Author

tramora commented May 29, 2026

False sentiment of success : we simulate multiple Python environments using conda (#573). This is very unfortunate as we are not able yet to detect automatically an issue with the new PyPI packages regarding the remote drivers khiops-core:1041. In my opinion this one is a blocking issue.

Hence, to properly test this, issue #573 must be addressed first. Right, @tramora ?

I changed the $CONDA install -y -n env ... to $CONDA run -n env pip install ... in order to really use the PyPI packages.
But it is not perfect yet as the run will set the CONDA_PREFIX environment variable that is checked by khiops-python to determine if the installation is done in a 'conda' method or not. 'conda' method and 'pip' one are close but not totally identical

Comment thread khiops/core/internals/filesystems.py Outdated
if khiops_drivers_path is None or len(khiops_drivers_path) == 0:
# We cannot guarantee where the dynamic library is located.
# It seems wiser to avoid raising a false error
return
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I would ban None or the empty string (or bytes) as a khiops_drivers_path value: if this function is called, as it is "private" by convention, we can just assert that khiops_drivers_path is not None and it is of type str or bytes and non-empty at its very beginning: it is the programmer's responsibility to make sure khiops_drivers_path has proper type and value before calling the function IMHO.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread khiops/core/internals/filesystems.py Outdated
return
extension = ".dll" if platform.system() == "Windows" else ".so"
absolute_path = os.path.join(
khiops_drivers_path,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I would write os.path.abspath(khiops_drivers_path) instead, to make sure the path is absolute.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread khiops/core/internals/filesystems.py Outdated
extension = ".dll" if platform.system() == "Windows" else ".so"
absolute_path = os.path.join(
khiops_drivers_path,
"libkhiopsdriver_file_" f"{remote_storage_type}{extension}",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Put all this line inside a single f-string: f"libkhiopsdriver_file_{remote_storage_type}{extension}"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread khiops/core/internals/filesystems.py Outdated

def __init__(self, uri):

_check_khiops_driver_library(os.environ.get("KHIOPS_DRIVERS_PATH"), "gcs")
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Only call this function if KHIOPS_DRIVERS_PATH is properly set (see comments above regarding this function). Also, note that KHIOPS_DRIVERS_PATH is not supposed to be changed by the end-user. A wrong value of it is an upstream bug.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread khiops/core/internals/filesystems.py Outdated

def __init__(self, uri):

_check_khiops_driver_library(os.environ.get("KHIOPS_DRIVERS_PATH"), "s3")
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same comment as above.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread khiops/core/internals/filesystems.py Outdated
Azure Storage Resource initializer common to Files and Blobs
"""

_check_khiops_driver_library(os.environ.get("KHIOPS_DRIVERS_PATH"), "azure")
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same comment as above.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread khiops/core/internals/runner.py Outdated
# KHIOPS_HOME variable by default
if "KHIOPS_HOME" in os.environ:
if platform.system() == "Windows" and installation_method == "pip":
# On Windows native installations,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

On Windows, Pip should also install khiops-core. Hence, I am not sure I understand why all this comment is still relevant. Windows native installation should be out-of-scope now, shouldn't it?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

As I commented in the initial issue, on Linux at least, given the 3 levels "venv pip", "system-wide pip", "system-wide native", if the user removes the khiops-core package, the khiops in upper level is used instead (khiops_env is searched in the available PATH).

On Windows, the system-wide native is the equivalent of the "system-wide native" cited above. In my opinion forbidding its use (in ignoring the KHIOPS_HOME set by the native installer) will make a behavior difference between the 2 platforms

Copy link
Copy Markdown
Collaborator

@popescu-v popescu-v May 29, 2026

Choose a reason for hiding this comment

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

IMHO, we should not support fallback to native installation: if the user removes the khiops-core Pip package, then we should detect this and fail right away (I would say, directly in khiops/__init__.py): indeed, now the link between the Python library and the binaries is no longer (only) a matter of local runner, but a matter of packaging. Thus, in khiops/__init__.py, we could do something like this:

from importlib.metadata import distribution, PackageNotFoundError

try:
    distribution("khiops-core")
except PackageNotFoundError as exc:
    raise KhiopsEnvironmentError(f"The Khiops binaries are not installed properly: ${exc}") from exc

I think this should cover the case evoked here. In any case, IMHO the fallback to OS-native packages should not be authorized, because we would run into version compatibility checks etc, which would defeat the purpose of having a "full-pip" or "full-conda" Python experience with Khiops.

Copy link
Copy Markdown
Collaborator Author

@tramora tramora May 29, 2026

Choose a reason for hiding this comment

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

Agreed.

I then copied your snippet into khiops/__init.py but I had to comment it out immediately until we find a compatible fix.
Indeed in 'conda' and 'conda-based' installation methods where a Conda package is installed (not a PyPI package)
distribution("khiops-core") always raises a PackageNotFoundError

On Windows 'pip', I also modified the error message if khiops_env cannot be found : the user must check the installation of the 'Khiops Python library' not 'Khiops' any longer

Comment thread khiops/core/internals/runner.py Outdated
Comment on lines -973 to -966
# Miss : KHIOPS_HOME variable evaluation is the fallback
elif "KHIOPS_HOME" in os.environ:
khiops_env_path = os.path.join(
os.environ["KHIOPS_HOME"], "bin", "khiops_env.cmd"
)
# Raise error if KHIOPS_HOME is not set
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Why do we still need this? Either khiops_env.cmd can be found as expected according to the current Python environment (virtualenv, user-site or system-wide - discouraged), or it cannot. Why rely on KHIOPS_HOME?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

related to the comment #582 (comment)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

See comment #582 (comment).

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Changed

Comment thread khiops/core/internals/runner.py Outdated
raise KhiopsEnvironmentError(
"No environment variable named 'KHIOPS_HOME' found. "
"No 'khiops_env.cmd' found in current environment nor "
"in 'KHIOPS_HOME' location. "
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

We should drop KHIOPS_HOME fallback IMHO (see comments above).

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

related to the comment #582 (comment)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

See comment #582 (comment).

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Changed

Comment thread khiops/core/internals/runner.py Outdated
# must be appended to "PATH" otherwise Khiops wouldn't find it
# and fail immediately
elif var_name == "KHIOPS_MPI_DLL_PATH":
os.environ["PATH"] = os.environ.get("PATH") + os.pathsep + var_value
Copy link
Copy Markdown
Collaborator

@popescu-v popescu-v May 29, 2026

Choose a reason for hiding this comment

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

I would write either os.pathsep.join([var_value, os.environ.get("PATH")]), or f"{var_value}{os.pathsep}{os.environ.get('PATH')}" and prefer the former (more readable IMHO).

But anyway, I would prepend var_value to the path, to make sure the correct MPI path takes precedence over whatever (potentially system-wide) MPI installation might preexist.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Improved

Comment thread CHANGELOG.md Outdated
- (`sklearn`) `keep_selected_variables_only` parameter to the predictors (`KhiopsClassifier` and `KhiopsRegressor`)
- (General) Support for Azure storage
### Changed
- *Internals*:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I would place this change under (General) and rephrase it to something like:
"- (General) Full-Pip installation support: khiops now depends on the khiops-core and remote storage driver Pip packages"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Modified

Comment thread CHANGELOG.md Outdated
- (General) Support for Azure storage
### Changed
- *Internals*:
- Declaration of khiops-core and khiops drivers as dependencies (mandatory or optional)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I would also add an entry to the ### Removed section, along the lines of:
"- Support for OS-native Khiops Core and Pip Khiops Python library installations"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Line added even if I'm not 100% sure because of #582 (comment)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

See comment #582 (comment).

Copy link
Copy Markdown
Collaborator

@popescu-v popescu-v left a comment

Choose a reason for hiding this comment

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

See the comments.

@tramora tramora force-pushed the core-and-drivers-as-pip-packages branch 5 times, most recently from daeaf02 to 19e7ca7 Compare May 29, 2026 23:38
Thierry RAMORASOAVINA added 2 commits May 30, 2026 01:50
…ries only

- these packages become mandatory ("khiops-core") or optional ("khiops-driver-*") dependencies dragged during the installation process
- these packages must be installed in the Conda environments used to simulate multiple environs (the Conda packages MUST not be used)
- in order to avoid distorting usage statistics the test workflows will always use packages from TestPypi
@tramora tramora force-pushed the core-and-drivers-as-pip-packages branch from 19e7ca7 to e45f7dc Compare May 29, 2026 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Depend on the khiops-core Pip Package

2 participants