mirror of https://github.com/mamba-org/mamba.git
Modularize libmambapy (#2960)
* Modularize libmambapy * Add test-libmambapy to Taskfile * Fix libmamba installation * Fix standalone libmambapy configuration * Change libmambapy layout * Add scikit-build * Fix libmambapy extension name * Add submodules shims * Fix libmambaoy tests * Fix stubgen * Adapt libmambapy tests to scikit-build * Read version from Python * Replace confusing names
This commit is contained in:
parent
ed27c7112c
commit
0d42e81667
|
@ -39,7 +39,8 @@ jobs:
|
|||
cmake -B build/ -G Ninja \
|
||||
--preset mamba-unix-shared-${{ inputs.build_type }} \
|
||||
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache \
|
||||
-D CMAKE_C_COMPILER_LAUNCHER=sccache
|
||||
-D CMAKE_C_COMPILER_LAUNCHER=sccache \
|
||||
-D BUILD_LIBMAMBAPY=OFF
|
||||
cmake --build build/ --parallel
|
||||
- name: Show build cache statistics
|
||||
run: sccache --show-stats
|
||||
|
@ -97,9 +98,9 @@ jobs:
|
|||
environment-name: build_env
|
||||
- name: Install libmambapy
|
||||
run: |
|
||||
ln build/libmambapy/bindings* libmambapy/libmambapy/
|
||||
cmake --install build/ --prefix "${CONDA_PREFIX}"
|
||||
python -m pip install ./libmambapy/
|
||||
# TODO add some ccache and parallelism to builds
|
||||
python -m pip install --no-deps --no-build-isolation ./libmambapy
|
||||
- name: Run libmamba Python bindings tests
|
||||
run: |
|
||||
python -m pytest libmambapy/tests/
|
||||
|
|
|
@ -41,7 +41,8 @@ jobs:
|
|||
--preset mamba-win-shared-${{ inputs.build_type }} ^
|
||||
-D CMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" ^
|
||||
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache ^
|
||||
-D CMAKE_C_COMPILER_LAUNCHER=sccache
|
||||
-D CMAKE_C_COMPILER_LAUNCHER=sccache ^
|
||||
-D BUILD_LIBMAMBAPY=OFF
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
cmake --build build/ --parallel
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
|
@ -84,13 +85,6 @@ jobs:
|
|||
unset CONDARC # Interferes with tests
|
||||
cd ./build/libmamba && ./tests/test_libmamba
|
||||
|
||||
# - name: Run libmamba tests
|
||||
# run: |
|
||||
# @REM Interferes with tests
|
||||
# set CONDARC=
|
||||
# @REM Move to directory of libmamba DLL for Windows to find it
|
||||
# cd "build\libmamba" && .\tests\test_libmamba
|
||||
|
||||
libmambapy_tests_win:
|
||||
name: Test libmamba Python bindings
|
||||
needs: ["build_shared_win"]
|
||||
|
@ -111,11 +105,10 @@ jobs:
|
|||
environment-name: build_env
|
||||
init-shell: bash cmd.exe
|
||||
- name: Install libmambapy
|
||||
shell: bash -elo pipefail {0}
|
||||
run: |
|
||||
ln build/libmambapy/bindings*.pyd libmambapy/libmambapy/
|
||||
cmake --install build/ --prefix "${CONDA_PREFIX}"
|
||||
python -m pip install ./libmambapy/
|
||||
cmake --install build/ --prefix %CONDA_PREFIX%
|
||||
# TODO add some ccache and parallelism to builds
|
||||
python -m pip install --no-deps --no-build-isolation ./libmambapy
|
||||
- name: Run libmamba Python bindings tests
|
||||
run: |
|
||||
python -m pytest libmambapy/tests/
|
||||
|
|
|
@ -41,6 +41,7 @@ repos:
|
|||
- flake8-builtins==2.1.0
|
||||
- flake8-bugbear==23.9.16
|
||||
- flake8-isort==6.1.0
|
||||
exclude: libmambapy/src
|
||||
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||
rev: v16.0.6
|
||||
hooks:
|
||||
|
|
|
@ -155,14 +155,23 @@ tasks:
|
|||
cmds:
|
||||
- >-
|
||||
{{.TEST_RUN}} python -m pip install
|
||||
--no-deps --no-build-isolation --ignore-installed --editable libmambapy/
|
||||
--no-deps --no-build-isolation --ignore-installed ./libmambapy/
|
||||
|
||||
_test-libmambapy:
|
||||
internal: true
|
||||
deps: [install-py]
|
||||
cmds:
|
||||
- >-
|
||||
{{.TEST_RUN}} python -m pytest libmambapy/tests/ {{.args}}
|
||||
test-libmambapy:
|
||||
cmds: [{task: _test-libmambapy, vars: {args: '{{.CLI_ARGS}}'}}]
|
||||
|
||||
stubgen:
|
||||
deps: [install-py]
|
||||
cmds:
|
||||
- '{{.TEST_RUN}} python -m pybind11_stubgen -o "{{.BUILD_DIR}}/stubs" libmambapy.bindings'
|
||||
- cp "{{.BUILD_DIR}}/stubs/libmambapy/bindings-stubs/__init__.pyi" libmambapy/libmambapy/
|
||||
- '{{.DEV_RUN}} pre-commit run --files libmambapy/libmambapy/__init__.pyi'
|
||||
- '{{.TEST_RUN}} python -m pybind11_stubgen -o "{{.BUILD_DIR}}/stubs" libmambapy.core.bindings'
|
||||
- cp "{{.BUILD_DIR}}/stubs/libmambapy/core/bindings-stubs/__init__.pyi" libmambapy/src/libmambapy/__init__.pyi
|
||||
- '{{.DEV_RUN}} pre-commit run --files libmambapy/src/libmambapy/__init__.pyi'
|
||||
|
||||
clean: 'rm -rf {{.BUILD_DIR}}'
|
||||
|
||||
|
|
|
@ -38,6 +38,8 @@ dependencies:
|
|||
- pip:
|
||||
- securesystemslib
|
||||
# libmambapy build dependencies
|
||||
- scikit-build
|
||||
- build
|
||||
- pybind11-stubgen <1.0
|
||||
# libmambapy dependencies
|
||||
- python
|
||||
|
|
|
@ -660,7 +660,7 @@ set(
|
|||
|
||||
install(
|
||||
TARGETS ${libmamba_targets}
|
||||
EXPORT ${PROJECT_NAME}-targets
|
||||
EXPORT ${PROJECT_NAME}Targets
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
|
@ -674,13 +674,6 @@ install(
|
|||
PATTERN "*.h"
|
||||
)
|
||||
|
||||
# Makes the project importable from the build directory
|
||||
export(
|
||||
EXPORT ${PROJECT_NAME}-targets
|
||||
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
|
||||
NAMESPACE mamba::
|
||||
)
|
||||
|
||||
# Configure 'mambaConfig.cmake' for a build tree
|
||||
set(MAMBA_CONFIG_CODE "####### Expanded from \@MAMBA_CONFIG_CODE\@ #######\n")
|
||||
set(
|
||||
|
@ -711,8 +704,12 @@ install(
|
|||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
|
||||
DESTINATION ${LIBMAMBA_CMAKECONFIG_INSTALL_DIR}
|
||||
)
|
||||
# Need to install the FindLibsolv for the installed target to work
|
||||
install(FILES "../cmake/modules/FindLibsolv.cmake" DESTINATION ${LIBMAMBA_CMAKECONFIG_INSTALL_DIR})
|
||||
|
||||
install(
|
||||
EXPORT ${PROJECT_NAME}-targets
|
||||
FILE ${PROJECT_NAME}Targets.cmake
|
||||
EXPORT ${PROJECT_NAME}Targets
|
||||
NAMESPACE mamba::
|
||||
DESTINATION ${LIBMAMBA_CMAKECONFIG_INSTALL_DIR}
|
||||
COMPONENT Mamba_Development
|
||||
)
|
||||
|
|
|
@ -22,25 +22,31 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR};${CMAKE_MODULE_PATH}")
|
|||
@LIBMAMBA_CONFIG_CODE@
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
find_dependency(fmt)
|
||||
find_dependency(nlohmann_json)
|
||||
find_dependency(spdlog)
|
||||
find_dependency(Threads)
|
||||
find_dependency(tl-expected)
|
||||
find_dependency(CURL)
|
||||
find_dependency(LibArchive)
|
||||
find_dependency(zstd)
|
||||
find_dependency(BZip2)
|
||||
find_dependency(OpenSSL)
|
||||
find_dependency(fmt)
|
||||
find_dependency(spdlog)
|
||||
find_dependency(tl-expected)
|
||||
find_dependency(nlohmann_json)
|
||||
find_dependency(simdjson)
|
||||
find_dependency(yaml-cpp)
|
||||
find_dependency(reproc)
|
||||
find_dependency(reproc++)
|
||||
find_dependency(Libsolv MODULE)
|
||||
|
||||
if(NOT (TARGET libmamba OR TARGET libmamba-static))
|
||||
if(NOT (TARGET libmamba-dyn OR TARGET libmamba-static))
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
|
||||
if (TARGET mamba::libmamba-dyn)
|
||||
get_target_property(@PROJECT_NAME@_INCLUDE_DIR libmamba INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(@PROJECT_NAME@_LIBRARY libmamba LOCATION)
|
||||
get_target_property(@PROJECT_NAME@_INCLUDE_DIR mamba::libmamba-dyn INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(@PROJECT_NAME@_LIBRARY mamba::libmamba-dyn LOCATION)
|
||||
endif()
|
||||
|
||||
if (TARGET mamba::libmamba-static)
|
||||
get_target_property(@PROJECT_NAME@_INCLUDE_DIR libmamba-static INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(@PROJECT_NAME@_STATIC_LIBRARY libmamba-static LOCATION)
|
||||
get_target_property(@PROJECT_NAME@_INCLUDE_DIR mamba::libmamba-static INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(@PROJECT_NAME@_STATIC_LIBRARY mamba::libmamba-static LOCATION)
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
# The full license is in the file LICENSE, distributed with this software.
|
||||
cmake_minimum_required(VERSION 3.18.2)
|
||||
|
||||
include("../cmake/CompilerWarnings.cmake")
|
||||
|
||||
cmake_policy(SET CMP0025 NEW)
|
||||
cmake_policy(SET CMP0077 NEW)
|
||||
cmake_policy(SET CMP0057 NEW)
|
||||
|
@ -13,16 +15,45 @@ project(libmambapy)
|
|||
|
||||
if(NOT TARGET mamba::libmamba)
|
||||
find_package(libmamba REQUIRED)
|
||||
set(libmamba_target mamba::libmamba-dyn)
|
||||
else()
|
||||
set(libmamba_target mamba::libmamba)
|
||||
endif()
|
||||
|
||||
find_package(Python COMPONENTS Interpreter Development)
|
||||
find_package(pybind11 REQUIRED)
|
||||
|
||||
pybind11_add_module(bindings src/main.cpp longpath.manifest)
|
||||
pybind11_add_module(
|
||||
bindings
|
||||
src/libmambapy/bindings/longpath.manifest
|
||||
src/libmambapy/bindings/bindings.cpp
|
||||
src/libmambapy/bindings/legacy.cpp
|
||||
)
|
||||
|
||||
target_include_directories(bindings PRIVATE src/libmambapy/bindings)
|
||||
|
||||
mamba_target_add_compile_warnings(bindings WARNING_AS_ERROR ${MAMBA_WARNING_AS_ERROR})
|
||||
|
||||
target_link_libraries(bindings PRIVATE pybind11::pybind11 mamba::libmamba)
|
||||
set_property(TARGET bindings PROPERTY CXX_STANDARD 17)
|
||||
target_link_libraries(bindings PRIVATE pybind11::pybind11 ${libmamba_target})
|
||||
target_compile_features(bindings PRIVATE cxx_std_17)
|
||||
|
||||
install(TARGETS bindings LIBRARY DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/libmambapy/)
|
||||
# Installation
|
||||
|
||||
if(SKBUILD)
|
||||
install(TARGETS bindings DESTINATION ${MAMBA_INSTALL_PYTHON_EXT_LIBDIR})
|
||||
else()
|
||||
# WARNING: this default should probably not be used as it is but set extranlly by a proper
|
||||
# Python packager tool
|
||||
set(
|
||||
MAMBA_INSTALL_PYTHON_EXT_LIBDIR
|
||||
"lib"
|
||||
CACHE PATH "Installation directory for Python extension"
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS bindings
|
||||
EXCLUDE_FROM_ALL
|
||||
COMPONENT Mamba_Python_Extension
|
||||
DESTINATION ${MAMBA_INSTALL_PYTHON_EXT_LIBDIR}
|
||||
)
|
||||
endif()
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
import os
|
||||
|
||||
try:
|
||||
from libmambapy.bindings import * # noqa: F401,F403
|
||||
except ImportError as e:
|
||||
if not os.environ.get("CONDA_BUILD_CROSS_COMPILATION"):
|
||||
raise e
|
||||
else:
|
||||
print("libmambapy import error ignored due to cross compilation")
|
|
@ -0,0 +1,34 @@
|
|||
[build-system]
|
||||
requires = [
|
||||
"setuptools>=42",
|
||||
"wheel",
|
||||
"scikit-build>=0.13",
|
||||
"cmake>=3.18",
|
||||
"ninja",
|
||||
]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "libmambapy"
|
||||
authors = [
|
||||
{name = "Wolf Vollprecht"},
|
||||
{name = "Adrien Delsalle"},
|
||||
{name = "Jonas Haag"},
|
||||
{name = "QuantStack", email = "info@quantstack.net"},
|
||||
{name = "Other contributors"},
|
||||
]
|
||||
maintainers = [
|
||||
{name = "QuantStack", email = "info@quantstack.net"},
|
||||
]
|
||||
description = "A fast library to interact with the Conda package ecosystem"
|
||||
requires-python = ">=3.7"
|
||||
keywords = ["mamba", "conda", "packaging"]
|
||||
license = {text = "BSD-3-Clause"}
|
||||
dependencies = []
|
||||
dynamic = ["version"]
|
||||
[projet.url]
|
||||
Documentation = "https://mamba.readthedocs.io"
|
||||
Repository = "https://github.com/mamba-org/mamba/"
|
||||
|
||||
[tool.setuptools]
|
||||
platforms = ["Windows", "Linux", "Mac OS X"]
|
|
@ -1,17 +0,0 @@
|
|||
[metadata]
|
||||
name = libmambapy
|
||||
version = attr: libmambapy._version.__version__
|
||||
description = Python bindings of libmamba
|
||||
long_description = Python bindings of libmamba, C++ reimplementation of conda
|
||||
long_description_content_type = text/markdown
|
||||
license_file = LICENSE
|
||||
author = QuantStack
|
||||
author_email = info@quantstack.net
|
||||
url = https://github.com/mamba-org/mamba
|
||||
platforms = Windows, Linux, Mac OS X
|
||||
keywords = mamba, libmamba, conda
|
||||
|
||||
[options]
|
||||
include_package_data = True
|
||||
packages = find:
|
||||
python_requires = >=3.7
|
|
@ -1,3 +1,37 @@
|
|||
import setuptools
|
||||
import importlib.util
|
||||
import os
|
||||
import pathlib
|
||||
|
||||
setuptools.setup()
|
||||
import skbuild
|
||||
import skbuild.constants
|
||||
|
||||
__dir__ = pathlib.Path(__file__).parent.absolute()
|
||||
|
||||
|
||||
def CMAKE_INSTALL_DIR():
|
||||
"""Where scikit-build configures CMAKE_INSTALL_PREFIX."""
|
||||
return os.path.abspath(skbuild.constants.CMAKE_INSTALL_DIR())
|
||||
|
||||
|
||||
def libmambapy_version():
|
||||
"""Get the version of libmambapy from its version module."""
|
||||
spec = importlib.util.spec_from_file_location(
|
||||
"libmambapy_version", __dir__ / "src/libmambapy/version.py"
|
||||
)
|
||||
ver = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(ver)
|
||||
return ver.__version__
|
||||
|
||||
|
||||
skbuild.setup(
|
||||
version=libmambapy_version(),
|
||||
packages=["libmambapy", "libmambapy.bindings"],
|
||||
package_dir={"": "src"},
|
||||
package_data={"libmambapy": ["py.typed", "__init__.pyi"]},
|
||||
cmake_languages=["CXX"],
|
||||
cmake_minimum_required_version="3.17",
|
||||
cmake_install_dir="src/libmambapy", # Must match package_dir layout
|
||||
cmake_args=[
|
||||
f"-DMAMBA_INSTALL_PYTHON_EXT_LIBDIR={CMAKE_INSTALL_DIR()}/src/libmambapy",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
import libmambapy.version
|
||||
from libmambapy.bindings.legacy import * # Legacy which used to combine everything
|
||||
|
||||
# Define top-level attributes
|
||||
__version__ = libmambapy.version.__version__
|
|
@ -1,5 +1,5 @@
|
|||
from __future__ import annotations
|
||||
import libmambapy.bindings
|
||||
import libmambapy.core.bindings
|
||||
import typing
|
||||
|
||||
__all__ = [
|
||||
|
@ -113,6 +113,7 @@ __all__ = [
|
|||
"SubdirIndexEntry",
|
||||
"TimeRef",
|
||||
"Transaction",
|
||||
"Version",
|
||||
"cache_fn_url",
|
||||
"cancel_json_output",
|
||||
"clean",
|
||||
|
@ -187,9 +188,9 @@ class ChannelPriority:
|
|||
"""
|
||||
:type: int
|
||||
"""
|
||||
Disabled: libmambapy.bindings.ChannelPriority # value = <ChannelPriority.Disabled: 0>
|
||||
Flexible: libmambapy.bindings.ChannelPriority # value = <ChannelPriority.Flexible: 1>
|
||||
Strict: libmambapy.bindings.ChannelPriority # value = <ChannelPriority.Strict: 2>
|
||||
Disabled: libmambapy.core.bindings.ChannelPriority # value = <ChannelPriority.Disabled: 0>
|
||||
Flexible: libmambapy.core.bindings.ChannelPriority # value = <ChannelPriority.Flexible: 1>
|
||||
Strict: libmambapy.core.bindings.ChannelPriority # value = <ChannelPriority.Strict: 2>
|
||||
__members__: dict # value = {'Flexible': <ChannelPriority.Flexible: 1>, 'Strict': <ChannelPriority.Strict: 2>, 'Disabled': <ChannelPriority.Disabled: 0>}
|
||||
pass
|
||||
|
||||
|
@ -423,7 +424,7 @@ class Context:
|
|||
@property
|
||||
def connect_timeout_secs(self) -> float:
|
||||
"""
|
||||
:type: int
|
||||
:type: float
|
||||
"""
|
||||
@connect_timeout_secs.setter
|
||||
def connect_timeout_secs(self, arg0: float) -> None:
|
||||
|
@ -551,7 +552,7 @@ class Context:
|
|||
@property
|
||||
def connect_timeout_secs(self) -> float:
|
||||
"""
|
||||
:type: int
|
||||
:type: float
|
||||
"""
|
||||
@connect_timeout_secs.setter
|
||||
def connect_timeout_secs(self, arg1: float) -> None:
|
||||
|
@ -941,13 +942,13 @@ class LogLevel:
|
|||
"""
|
||||
:type: int
|
||||
"""
|
||||
CRITICAL: libmambapy.bindings.LogLevel # value = <LogLevel.CRITICAL: 5>
|
||||
DEBUG: libmambapy.bindings.LogLevel # value = <LogLevel.DEBUG: 1>
|
||||
ERROR: libmambapy.bindings.LogLevel # value = <LogLevel.ERROR: 4>
|
||||
INFO: libmambapy.bindings.LogLevel # value = <LogLevel.INFO: 2>
|
||||
OFF: libmambapy.bindings.LogLevel # value = <LogLevel.OFF: 6>
|
||||
TRACE: libmambapy.bindings.LogLevel # value = <LogLevel.TRACE: 0>
|
||||
WARNING: libmambapy.bindings.LogLevel # value = <LogLevel.WARNING: 3>
|
||||
CRITICAL: libmambapy.core.bindings.LogLevel # value = <LogLevel.CRITICAL: 5>
|
||||
DEBUG: libmambapy.core.bindings.LogLevel # value = <LogLevel.DEBUG: 1>
|
||||
ERROR: libmambapy.core.bindings.LogLevel # value = <LogLevel.ERROR: 4>
|
||||
INFO: libmambapy.core.bindings.LogLevel # value = <LogLevel.INFO: 2>
|
||||
OFF: libmambapy.core.bindings.LogLevel # value = <LogLevel.OFF: 6>
|
||||
TRACE: libmambapy.core.bindings.LogLevel # value = <LogLevel.TRACE: 0>
|
||||
WARNING: libmambapy.core.bindings.LogLevel # value = <LogLevel.WARNING: 3>
|
||||
__members__: dict # value = {'TRACE': <LogLevel.TRACE: 0>, 'DEBUG': <LogLevel.DEBUG: 1>, 'INFO': <LogLevel.INFO: 2>, 'WARNING': <LogLevel.WARNING: 3>, 'ERROR': <LogLevel.ERROR: 4>, 'CRITICAL': <LogLevel.CRITICAL: 5>, 'OFF': <LogLevel.OFF: 6>}
|
||||
pass
|
||||
|
||||
|
@ -1248,11 +1249,11 @@ class QueryFormat:
|
|||
"""
|
||||
:type: int
|
||||
"""
|
||||
JSON: libmambapy.bindings.QueryFormat # value = <QueryFormat.JSON: 0>
|
||||
PRETTY: libmambapy.bindings.QueryFormat # value = <QueryFormat.PRETTY: 3>
|
||||
RECURSIVETABLE: libmambapy.bindings.QueryFormat # value = <QueryFormat.RECURSIVETABLE: 4>
|
||||
TABLE: libmambapy.bindings.QueryFormat # value = <QueryFormat.TABLE: 2>
|
||||
TREE: libmambapy.bindings.QueryFormat # value = <QueryFormat.TREE: 1>
|
||||
JSON: libmambapy.core.bindings.QueryFormat # value = <QueryFormat.JSON: 0>
|
||||
PRETTY: libmambapy.core.bindings.QueryFormat # value = <QueryFormat.PRETTY: 3>
|
||||
RECURSIVETABLE: libmambapy.core.bindings.QueryFormat # value = <QueryFormat.RECURSIVETABLE: 4>
|
||||
TABLE: libmambapy.core.bindings.QueryFormat # value = <QueryFormat.TABLE: 2>
|
||||
TREE: libmambapy.core.bindings.QueryFormat # value = <QueryFormat.TREE: 1>
|
||||
__members__: dict # value = {'JSON': <QueryFormat.JSON: 0>, 'TREE': <QueryFormat.TREE: 1>, 'TABLE': <QueryFormat.TABLE: 2>, 'PRETTY': <QueryFormat.PRETTY: 3>, 'RECURSIVETABLE': <QueryFormat.RECURSIVETABLE: 4>}
|
||||
pass
|
||||
|
||||
|
@ -1482,35 +1483,35 @@ class SolverRuleinfo:
|
|||
"""
|
||||
:type: int
|
||||
"""
|
||||
SOLVER_RULE_BEST: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_BEST: 2304>
|
||||
SOLVER_RULE_BLACK: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_BLACK: 3072>
|
||||
SOLVER_RULE_CHOICE: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_CHOICE: 1792>
|
||||
SOLVER_RULE_DISTUPGRADE: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_DISTUPGRADE: 1280>
|
||||
SOLVER_RULE_FEATURE: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_FEATURE: 768>
|
||||
SOLVER_RULE_INFARCH: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_INFARCH: 1536>
|
||||
SOLVER_RULE_JOB: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB: 1024>
|
||||
SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP: 1025>
|
||||
SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM: 1026>
|
||||
SOLVER_RULE_JOB_UNKNOWN_PACKAGE: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_UNKNOWN_PACKAGE: 1027>
|
||||
SOLVER_RULE_JOB_UNSUPPORTED: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_UNSUPPORTED: 1028>
|
||||
SOLVER_RULE_LEARNT: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_LEARNT: 2048>
|
||||
SOLVER_RULE_PKG: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG: 256>
|
||||
SOLVER_RULE_PKG_CONFLICTS: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_CONFLICTS: 261>
|
||||
SOLVER_RULE_PKG_CONSTRAINS: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_CONSTRAINS: 267>
|
||||
SOLVER_RULE_PKG_IMPLICIT_OBSOLETES: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_IMPLICIT_OBSOLETES: 264>
|
||||
SOLVER_RULE_PKG_INSTALLED_OBSOLETES: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_INSTALLED_OBSOLETES: 265>
|
||||
SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP: 258>
|
||||
SOLVER_RULE_PKG_NOT_INSTALLABLE: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_NOT_INSTALLABLE: 257>
|
||||
SOLVER_RULE_PKG_OBSOLETES: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_OBSOLETES: 263>
|
||||
SOLVER_RULE_PKG_RECOMMENDS: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_RECOMMENDS: 266>
|
||||
SOLVER_RULE_PKG_REQUIRES: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_REQUIRES: 259>
|
||||
SOLVER_RULE_PKG_SAME_NAME: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_SAME_NAME: 262>
|
||||
SOLVER_RULE_PKG_SELF_CONFLICT: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_SELF_CONFLICT: 260>
|
||||
SOLVER_RULE_RECOMMENDS: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_RECOMMENDS: 2816>
|
||||
SOLVER_RULE_STRICT_REPO_PRIORITY: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_STRICT_REPO_PRIORITY: 3328>
|
||||
SOLVER_RULE_UNKNOWN: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_UNKNOWN: 0>
|
||||
SOLVER_RULE_UPDATE: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_UPDATE: 512>
|
||||
SOLVER_RULE_YUMOBS: libmambapy.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_YUMOBS: 2560>
|
||||
SOLVER_RULE_BEST: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_BEST: 2304>
|
||||
SOLVER_RULE_BLACK: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_BLACK: 3072>
|
||||
SOLVER_RULE_CHOICE: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_CHOICE: 1792>
|
||||
SOLVER_RULE_DISTUPGRADE: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_DISTUPGRADE: 1280>
|
||||
SOLVER_RULE_FEATURE: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_FEATURE: 768>
|
||||
SOLVER_RULE_INFARCH: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_INFARCH: 1536>
|
||||
SOLVER_RULE_JOB: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB: 1024>
|
||||
SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP: 1025>
|
||||
SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM: 1026>
|
||||
SOLVER_RULE_JOB_UNKNOWN_PACKAGE: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_UNKNOWN_PACKAGE: 1027>
|
||||
SOLVER_RULE_JOB_UNSUPPORTED: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_JOB_UNSUPPORTED: 1028>
|
||||
SOLVER_RULE_LEARNT: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_LEARNT: 2048>
|
||||
SOLVER_RULE_PKG: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG: 256>
|
||||
SOLVER_RULE_PKG_CONFLICTS: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_CONFLICTS: 261>
|
||||
SOLVER_RULE_PKG_CONSTRAINS: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_CONSTRAINS: 267>
|
||||
SOLVER_RULE_PKG_IMPLICIT_OBSOLETES: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_IMPLICIT_OBSOLETES: 264>
|
||||
SOLVER_RULE_PKG_INSTALLED_OBSOLETES: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_INSTALLED_OBSOLETES: 265>
|
||||
SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP: 258>
|
||||
SOLVER_RULE_PKG_NOT_INSTALLABLE: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_NOT_INSTALLABLE: 257>
|
||||
SOLVER_RULE_PKG_OBSOLETES: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_OBSOLETES: 263>
|
||||
SOLVER_RULE_PKG_RECOMMENDS: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_RECOMMENDS: 266>
|
||||
SOLVER_RULE_PKG_REQUIRES: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_REQUIRES: 259>
|
||||
SOLVER_RULE_PKG_SAME_NAME: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_SAME_NAME: 262>
|
||||
SOLVER_RULE_PKG_SELF_CONFLICT: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_PKG_SELF_CONFLICT: 260>
|
||||
SOLVER_RULE_RECOMMENDS: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_RECOMMENDS: 2816>
|
||||
SOLVER_RULE_STRICT_REPO_PRIORITY: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_STRICT_REPO_PRIORITY: 3328>
|
||||
SOLVER_RULE_UNKNOWN: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_UNKNOWN: 0>
|
||||
SOLVER_RULE_UPDATE: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_UPDATE: 512>
|
||||
SOLVER_RULE_YUMOBS: libmambapy.core.bindings.SolverRuleinfo # value = <SolverRuleinfo.SOLVER_RULE_YUMOBS: 2560>
|
||||
__members__: dict # value = {'SOLVER_RULE_UNKNOWN': <SolverRuleinfo.SOLVER_RULE_UNKNOWN: 0>, 'SOLVER_RULE_PKG': <SolverRuleinfo.SOLVER_RULE_PKG: 256>, 'SOLVER_RULE_PKG_NOT_INSTALLABLE': <SolverRuleinfo.SOLVER_RULE_PKG_NOT_INSTALLABLE: 257>, 'SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP': <SolverRuleinfo.SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP: 258>, 'SOLVER_RULE_PKG_REQUIRES': <SolverRuleinfo.SOLVER_RULE_PKG_REQUIRES: 259>, 'SOLVER_RULE_PKG_SELF_CONFLICT': <SolverRuleinfo.SOLVER_RULE_PKG_SELF_CONFLICT: 260>, 'SOLVER_RULE_PKG_CONFLICTS': <SolverRuleinfo.SOLVER_RULE_PKG_CONFLICTS: 261>, 'SOLVER_RULE_PKG_SAME_NAME': <SolverRuleinfo.SOLVER_RULE_PKG_SAME_NAME: 262>, 'SOLVER_RULE_PKG_OBSOLETES': <SolverRuleinfo.SOLVER_RULE_PKG_OBSOLETES: 263>, 'SOLVER_RULE_PKG_IMPLICIT_OBSOLETES': <SolverRuleinfo.SOLVER_RULE_PKG_IMPLICIT_OBSOLETES: 264>, 'SOLVER_RULE_PKG_INSTALLED_OBSOLETES': <SolverRuleinfo.SOLVER_RULE_PKG_INSTALLED_OBSOLETES: 265>, 'SOLVER_RULE_PKG_RECOMMENDS': <SolverRuleinfo.SOLVER_RULE_PKG_RECOMMENDS: 266>, 'SOLVER_RULE_PKG_CONSTRAINS': <SolverRuleinfo.SOLVER_RULE_PKG_CONSTRAINS: 267>, 'SOLVER_RULE_UPDATE': <SolverRuleinfo.SOLVER_RULE_UPDATE: 512>, 'SOLVER_RULE_FEATURE': <SolverRuleinfo.SOLVER_RULE_FEATURE: 768>, 'SOLVER_RULE_JOB': <SolverRuleinfo.SOLVER_RULE_JOB: 1024>, 'SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP': <SolverRuleinfo.SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP: 1025>, 'SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM': <SolverRuleinfo.SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM: 1026>, 'SOLVER_RULE_JOB_UNKNOWN_PACKAGE': <SolverRuleinfo.SOLVER_RULE_JOB_UNKNOWN_PACKAGE: 1027>, 'SOLVER_RULE_JOB_UNSUPPORTED': <SolverRuleinfo.SOLVER_RULE_JOB_UNSUPPORTED: 1028>, 'SOLVER_RULE_DISTUPGRADE': <SolverRuleinfo.SOLVER_RULE_DISTUPGRADE: 1280>, 'SOLVER_RULE_INFARCH': <SolverRuleinfo.SOLVER_RULE_INFARCH: 1536>, 'SOLVER_RULE_CHOICE': <SolverRuleinfo.SOLVER_RULE_CHOICE: 1792>, 'SOLVER_RULE_LEARNT': <SolverRuleinfo.SOLVER_RULE_LEARNT: 2048>, 'SOLVER_RULE_BEST': <SolverRuleinfo.SOLVER_RULE_BEST: 2304>, 'SOLVER_RULE_YUMOBS': <SolverRuleinfo.SOLVER_RULE_YUMOBS: 2560>, 'SOLVER_RULE_RECOMMENDS': <SolverRuleinfo.SOLVER_RULE_RECOMMENDS: 2816>, 'SOLVER_RULE_BLACK': <SolverRuleinfo.SOLVER_RULE_BLACK: 3072>, 'SOLVER_RULE_STRICT_REPO_PRIORITY': <SolverRuleinfo.SOLVER_RULE_STRICT_REPO_PRIORITY: 3328>}
|
||||
pass
|
||||
|
||||
|
@ -1598,6 +1599,12 @@ class Transaction:
|
|||
]: ...
|
||||
pass
|
||||
|
||||
class Version:
|
||||
def __str__(self) -> str: ...
|
||||
@staticmethod
|
||||
def parse(arg0: str) -> Version: ...
|
||||
pass
|
||||
|
||||
class ostream_redirect:
|
||||
def __enter__(self) -> None: ...
|
||||
def __exit__(self, *args) -> None: ...
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright (c) 2019, QuantStack and Mamba Contributors
|
||||
//
|
||||
// Distributed under the terms of the BSD 3-Clause License.
|
||||
//
|
||||
// The full license is in the file LICENSE, distributed with this software.
|
||||
|
||||
#include "bindings.hpp"
|
||||
|
||||
PYBIND11_MODULE(bindings, m)
|
||||
{
|
||||
mambapy::legacy::bind_submodule(m.def_submodule("legacy"));
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright (c) 2019, QuantStack and Mamba Contributors
|
||||
//
|
||||
// Distributed under the terms of the BSD 3-Clause License.
|
||||
//
|
||||
// The full license is in the file LICENSE, distributed with this software.
|
||||
|
||||
#ifndef LIBMAMBAPY_HPP
|
||||
#define LIBMAMBAPY_HPP
|
||||
|
||||
#include <pybind11/pybind11.h>
|
||||
|
||||
namespace mambapy
|
||||
{
|
||||
namespace legacy
|
||||
{
|
||||
void bind_submodule(pybind11::module_ m);
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -36,9 +36,9 @@
|
|||
#include "mamba/core/validate.hpp"
|
||||
#include "mamba/core/virtual_packages.hpp"
|
||||
#include "mamba/specs/version.hpp"
|
||||
#include "mamba/util/flat_set.hpp"
|
||||
#include "mamba/util/string.hpp"
|
||||
|
||||
#include "bindings.hpp"
|
||||
#include "flat_set_caster.hpp"
|
||||
|
||||
namespace py = pybind11;
|
||||
|
@ -258,7 +258,8 @@ namespace mambapy
|
|||
};
|
||||
}
|
||||
|
||||
PYBIND11_MODULE(bindings, m)
|
||||
void
|
||||
bind_submodule_impl(pybind11::module_ m)
|
||||
{
|
||||
using namespace mamba;
|
||||
|
||||
|
@ -1330,3 +1331,11 @@ PYBIND11_MODULE(bindings, m)
|
|||
m.attr("MAMBA_CLEAN_TARBALLS") = MAMBA_CLEAN_TARBALLS;
|
||||
m.attr("MAMBA_CLEAN_LOCKS") = MAMBA_CLEAN_LOCKS;
|
||||
}
|
||||
|
||||
namespace mambapy::legacy
|
||||
{
|
||||
void bind_submodule(pybind11::module_ m)
|
||||
{
|
||||
bind_submodule_impl(std::move(m));
|
||||
}
|
||||
}
|
|
@ -3,5 +3,5 @@ import libmambapy
|
|||
|
||||
def test_version():
|
||||
ver_str = "1.0"
|
||||
ver = libmambapy.bindings.Version.parse(ver_str)
|
||||
ver = libmambapy.Version.parse(ver_str)
|
||||
assert str(ver) == ver_str
|
||||
|
|
|
@ -1,10 +1,3 @@
|
|||
[build-system]
|
||||
build-backend = 'setuptools.build_meta'
|
||||
requires = [
|
||||
'setuptools >= 49.2.1',
|
||||
'pybind11 >= 2.2',
|
||||
]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
minversion = "6.0"
|
||||
tmp_path_retention_policy = "failed"
|
||||
|
|
|
@ -8,8 +8,7 @@ template = {"version": None, "changes": []}
|
|||
templates = {
|
||||
"libmamba": "libmamba/include/mamba/version.hpp.tmpl",
|
||||
"micromamba": "micromamba/src/version.hpp.tmpl",
|
||||
"libmambapy": "libmambapy/libmambapy/_version.py.tmpl",
|
||||
"mamba": "mamba/mamba/_version.py.tmpl",
|
||||
"libmambapy": "libmambapy/src/libmambapy/version.py.tmpl",
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue