| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import sys
- from pathlib import Path
- from typing import List, Dict, Optional
- from pydantic import InstanceOf, Field
- from django.apps import AppConfig
- from pydantic_pkgr import BinProvider, PipProvider, BinName, PATHStr
- from plugantic.base_plugin import BasePlugin, BaseConfigSet, BaseBinary, BaseBinProvider
- from plugantic.base_configset import ConfigSectionName
- from pkg.settings import env, apt, brew
- ###################### Config ##########################
- class PipDependencyConfigs(BaseConfigSet):
- section: ConfigSectionName = 'DEPENDENCY_CONFIG'
- USE_PIP: bool = True
- PIP_BINARY: str = Field(default='pip')
- PIP_ARGS: Optional[List[str]] = Field(default=None)
- PIP_EXTRA_ARGS: List[str] = []
- PIP_DEFAULT_ARGS: List[str] = []
- DEFAULT_GLOBAL_CONFIG = {
- }
- PIP_CONFIG = PipDependencyConfigs(**DEFAULT_GLOBAL_CONFIG)
- class PipProvider(PipProvider, BaseBinProvider):
- PATH: PATHStr = str(Path(sys.executable).parent)
- pip = PipProvider(PATH=str(Path(sys.executable).parent))
- class PipBinary(BaseBinary):
- name: BinName = 'pip'
- binproviders_supported: List[InstanceOf[BinProvider]] = [env, pip, apt, brew]
- PIP_BINARY = PipBinary()
- class PipPlugin(BasePlugin):
- name: str = 'builtin_plugins.pip'
- app_label: str = 'pip'
- verbose_name: str = 'PIP'
- configs: List[InstanceOf[BaseConfigSet]] = [PIP_CONFIG]
- binproviders: List[InstanceOf[BaseBinProvider]] = [pip]
- binaries: List[InstanceOf[BaseBinary]] = [PIP_BINARY]
- PLUGIN = PipPlugin()
- DJANGO_APP = PLUGIN.AppConfig
- # CONFIGS = PLUGIN.configs
- # BINARIES = PLUGIN.binaries
- # EXTRACTORS = PLUGIN.extractors
- # REPLAYERS = PLUGIN.replayers
- # CHECKS = PLUGIN.checks
|