| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import sys
- import inspect
- from typing import List, Dict, Any, Optional
- from pathlib import Path
- import django
- from django.apps import AppConfig
- from django.core.checks import Tags, Warning, register
- from django.db.backends.sqlite3.base import Database as sqlite3
- from pydantic import (
- Field,
- SerializeAsAny,
- )
- from pydantic_pkgr import BinProvider, BinProviderName, ProviderLookupDict, BinName, Binary, EnvProvider, NpmProvider
- from plugantic.extractors import Extractor, ExtractorName
- from plugantic.plugins import Plugin
- from plugantic.configs import ConfigSet, ConfigSectionName
- from plugantic.replayers import Replayer
- class PythonBinary(Binary):
- name: BinName = 'python'
- providers_supported: List[BinProvider] = [EnvProvider()]
- provider_overrides: Dict[str, Any] = {
- 'env': {
- 'subdeps': \
- lambda: 'python3 python3-minimal python3-pip python3-virtualenv',
- 'abspath': \
- lambda: sys.executable,
- 'version': \
- lambda: '{}.{}.{}'.format(*sys.version_info[:3]),
- },
- }
- class SqliteBinary(Binary):
- name: BinName = 'sqlite'
- providers_supported: List[BinProvider] = [EnvProvider()]
- provider_overrides: Dict[BinProviderName, ProviderLookupDict] = {
- 'env': {
- 'abspath': \
- lambda: inspect.getfile(sqlite3),
- 'version': \
- lambda: sqlite3.version,
- },
- }
- class DjangoBinary(Binary):
- name: BinName = 'django'
- providers_supported: List[BinProvider] = [EnvProvider()]
- provider_overrides: Dict[BinProviderName, ProviderLookupDict] = {
- 'env': {
- 'abspath': \
- lambda: inspect.getfile(django),
- 'version': \
- lambda: django.VERSION[:3],
- },
- }
- class BasicReplayer(Replayer):
- name: str = 'basic'
- class BasePlugin(Plugin):
- name: str = 'base'
- configs: List[SerializeAsAny[ConfigSet]] = []
- binaries: List[SerializeAsAny[Binary]] = [PythonBinary(), SqliteBinary(), DjangoBinary()]
- extractors: List[SerializeAsAny[Extractor]] = []
- replayers: List[SerializeAsAny[Replayer]] = [BasicReplayer()]
- PLUGINS = [BasePlugin()]
- class BaseConfig(AppConfig):
- default_auto_field = 'django.db.models.BigAutoField'
- name = 'builtin_plugins.base'
|