mirror of
https://github.com/joshuadavidthomas/django-language-server.git
synced 2025-07-16 00:45:00 +00:00
remove import check for django in setup (#27)
unneeded now since the agent imports and sets up Django as part of it's initial serving
This commit is contained in:
parent
9bbc2c2c3a
commit
b13d19a4bf
10 changed files with 21 additions and 104 deletions
|
@ -1,7 +1,7 @@
|
|||
use crate::gis::{check_gis_setup, GISError};
|
||||
use djls_ipc::v1::*;
|
||||
use djls_ipc::{ProcessError, PythonProcess, TransportError};
|
||||
use djls_python::{ImportCheck, Python};
|
||||
use djls_python::Python;
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -23,12 +23,6 @@ impl DjangoProject {
|
|||
pub fn setup(mut python: PythonProcess) -> Result<Self, ProjectError> {
|
||||
let py = Python::setup(&mut python)?;
|
||||
|
||||
let has_django = ImportCheck::check(&mut python, Some(vec!["django".to_string()]))?;
|
||||
|
||||
if !has_django {
|
||||
return Err(ProjectError::DjangoNotFound);
|
||||
}
|
||||
|
||||
if !check_gis_setup(&mut python)? {
|
||||
eprintln!("Warning: GeoDjango detected but GDAL is not available.");
|
||||
eprintln!("Django initialization will be skipped. Some features may be limited.");
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
mod packaging;
|
||||
mod python;
|
||||
|
||||
pub use crate::packaging::ImportCheck;
|
||||
pub use crate::packaging::PackagingError;
|
||||
pub use crate::python::Python;
|
||||
pub use crate::python::PythonError;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use djls_ipc::v1::*;
|
||||
use djls_ipc::{ProcessError, PythonProcess, TransportError};
|
||||
use djls_ipc::{ProcessError, TransportError};
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
use std::fmt;
|
||||
|
@ -69,40 +69,6 @@ impl fmt::Display for Packages {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct ImportCheck {
|
||||
can_import: bool,
|
||||
}
|
||||
|
||||
impl ImportCheck {
|
||||
pub fn can_import(&self) -> bool {
|
||||
self.can_import
|
||||
}
|
||||
|
||||
pub fn check(
|
||||
python: &mut PythonProcess,
|
||||
_modules: Option<Vec<String>>,
|
||||
) -> Result<bool, PackagingError> {
|
||||
let request = messages::Request {
|
||||
command: Some(messages::request::Command::CheckDjangoAvailable(
|
||||
check::DjangoAvailableRequest {},
|
||||
)),
|
||||
};
|
||||
|
||||
let response = python
|
||||
.send(request)
|
||||
.map_err(|e| PackagingError::Transport(e))?;
|
||||
|
||||
match response.result {
|
||||
Some(messages::response::Result::CheckDjangoAvailable(response)) => Ok(response.passed),
|
||||
Some(messages::response::Result::Error(e)) => {
|
||||
Err(PackagingError::Process(ProcessError::Health(e.message)))
|
||||
}
|
||||
_ => Err(PackagingError::Process(ProcessError::Response)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum PackagingError {
|
||||
#[error("IO error: {0}")]
|
||||
|
|
|
@ -8,12 +8,6 @@ message HealthResponse {
|
|||
optional string error = 2;
|
||||
}
|
||||
|
||||
message DjangoAvailableRequest {}
|
||||
message DjangoAvailableResponse {
|
||||
bool passed = 1;
|
||||
optional string error = 2;
|
||||
}
|
||||
|
||||
message AppInstalledRequest {
|
||||
string app_name = 1;
|
||||
}
|
||||
|
|
|
@ -9,8 +9,7 @@ import "v1/python.proto";
|
|||
message Request {
|
||||
oneof command {
|
||||
check.HealthRequest check__health = 1;
|
||||
check.DjangoAvailableRequest check__django_available = 2;
|
||||
check.AppInstalledRequest check__app_installed = 3;
|
||||
check.AppInstalledRequest check__app_installed = 2;
|
||||
python.GetEnvironmentRequest python__get_environment = 1000;
|
||||
django.GetProjectInfoRequest django__get_project_info = 2000;
|
||||
}
|
||||
|
@ -19,8 +18,7 @@ message Request {
|
|||
message Response {
|
||||
oneof result {
|
||||
check.HealthResponse check__health = 1;
|
||||
check.DjangoAvailableResponse check__django_available = 2;
|
||||
check.AppInstalledResponse check__app_installed = 3;
|
||||
check.AppInstalledResponse check__app_installed = 2;
|
||||
python.GetEnvironmentResponse python__get_environment = 1000;
|
||||
django.GetProjectInfoResponse django__get_project_info = 2000;
|
||||
Error error = 9000;
|
||||
|
|
|
@ -91,20 +91,6 @@ async def check__health(_request: check_pb2.HealthRequest) -> check_pb2.HealthRe
|
|||
return check_pb2.HealthResponse(passed=True)
|
||||
|
||||
|
||||
@proto_handler(
|
||||
check_pb2.DjangoAvailableRequest,
|
||||
error=messages_pb2.Error(
|
||||
code=messages_pb2.Error.DJANGO_ERROR, message="Django is not installed"
|
||||
),
|
||||
)
|
||||
async def check__django_available(
|
||||
_request: check_pb2.DjangoAvailableRequest,
|
||||
) -> check_pb2.DjangoAvailableResponse:
|
||||
import django # noqa: F401
|
||||
|
||||
return check_pb2.DjangoAvailableResponse(passed=True)
|
||||
|
||||
|
||||
@proto_handler(
|
||||
check_pb2.AppInstalledRequest,
|
||||
error=messages_pb2.Error(
|
||||
|
|
|
@ -28,7 +28,7 @@ _sym_db = _symbol_database.Default()
|
|||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0ev1/check.proto\x12\rdjls.v1.check\"\x0f\n\rHealthRequest\">\n\x0eHealthResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\x18\n\x16\x44jangoAvailableRequest\"G\n\x17\x44jangoAvailableResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\'\n\x13\x41ppInstalledRequest\x12\x10\n\x08\x61pp_name\x18\x01 \x01(\t\"D\n\x14\x41ppInstalledResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_errorb\x06proto3')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0ev1/check.proto\x12\rdjls.v1.check\"\x0f\n\rHealthRequest\">\n\x0eHealthResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\'\n\x13\x41ppInstalledRequest\x12\x10\n\x08\x61pp_name\x18\x01 \x01(\t\"D\n\x14\x41ppInstalledResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_errorb\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
|
@ -39,12 +39,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|||
_globals['_HEALTHREQUEST']._serialized_end=48
|
||||
_globals['_HEALTHRESPONSE']._serialized_start=50
|
||||
_globals['_HEALTHRESPONSE']._serialized_end=112
|
||||
_globals['_DJANGOAVAILABLEREQUEST']._serialized_start=114
|
||||
_globals['_DJANGOAVAILABLEREQUEST']._serialized_end=138
|
||||
_globals['_DJANGOAVAILABLERESPONSE']._serialized_start=140
|
||||
_globals['_DJANGOAVAILABLERESPONSE']._serialized_end=211
|
||||
_globals['_APPINSTALLEDREQUEST']._serialized_start=213
|
||||
_globals['_APPINSTALLEDREQUEST']._serialized_end=252
|
||||
_globals['_APPINSTALLEDRESPONSE']._serialized_start=254
|
||||
_globals['_APPINSTALLEDRESPONSE']._serialized_end=322
|
||||
_globals['_APPINSTALLEDREQUEST']._serialized_start=114
|
||||
_globals['_APPINSTALLEDREQUEST']._serialized_end=153
|
||||
_globals['_APPINSTALLEDRESPONSE']._serialized_start=155
|
||||
_globals['_APPINSTALLEDRESPONSE']._serialized_end=223
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
|
|
@ -20,18 +20,6 @@ class HealthResponse(_message.Message):
|
|||
error: str
|
||||
def __init__(self, passed: bool = ..., error: _Optional[str] = ...) -> None: ...
|
||||
|
||||
class DjangoAvailableRequest(_message.Message):
|
||||
__slots__ = ()
|
||||
def __init__(self) -> None: ...
|
||||
|
||||
class DjangoAvailableResponse(_message.Message):
|
||||
__slots__ = ("passed", "error")
|
||||
PASSED_FIELD_NUMBER: _ClassVar[int]
|
||||
ERROR_FIELD_NUMBER: _ClassVar[int]
|
||||
passed: bool
|
||||
error: str
|
||||
def __init__(self, passed: bool = ..., error: _Optional[str] = ...) -> None: ...
|
||||
|
||||
class AppInstalledRequest(_message.Message):
|
||||
__slots__ = ("app_name",)
|
||||
APP_NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
|
|
|
@ -31,7 +31,7 @@ from . import django_pb2 as v1_dot_django__pb2
|
|||
from . import python_pb2 as v1_dot_python__pb2
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11v1/messages.proto\x12\x10\x64jls.v1.messages\x1a\x0ev1/check.proto\x1a\x0fv1/django.proto\x1a\x0fv1/python.proto\"\xf0\x02\n\x07Request\x12\x35\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1c.djls.v1.check.HealthRequestH\x00\x12H\n\x17\x63heck__django_available\x18\x02 \x01(\x0b\x32%.djls.v1.check.DjangoAvailableRequestH\x00\x12\x42\n\x14\x63heck__app_installed\x18\x03 \x01(\x0b\x32\".djls.v1.check.AppInstalledRequestH\x00\x12I\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32%.djls.v1.python.GetEnvironmentRequestH\x00\x12J\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32%.djls.v1.django.GetProjectInfoRequestH\x00\x42\t\n\x07\x63ommand\"\xa0\x03\n\x08Response\x12\x36\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1d.djls.v1.check.HealthResponseH\x00\x12I\n\x17\x63heck__django_available\x18\x02 \x01(\x0b\x32&.djls.v1.check.DjangoAvailableResponseH\x00\x12\x43\n\x14\x63heck__app_installed\x18\x03 \x01(\x0b\x32#.djls.v1.check.AppInstalledResponseH\x00\x12J\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32&.djls.v1.python.GetEnvironmentResponseH\x00\x12K\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32&.djls.v1.django.GetProjectInfoResponseH\x00\x12)\n\x05\x65rror\x18\xa8\x46 \x01(\x0b\x32\x17.djls.v1.messages.ErrorH\x00\x42\x08\n\x06result\"\xa5\x01\n\x05\x45rror\x12*\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1c.djls.v1.messages.Error.Code\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x11\n\ttraceback\x18\x03 \x01(\t\"L\n\x04\x43ode\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x13\n\x0fINVALID_REQUEST\x10\x01\x12\x10\n\x0cPYTHON_ERROR\x10\x02\x12\x10\n\x0c\x44JANGO_ERROR\x10\x03\x62\x06proto3')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11v1/messages.proto\x12\x10\x64jls.v1.messages\x1a\x0ev1/check.proto\x1a\x0fv1/django.proto\x1a\x0fv1/python.proto\"\xa6\x02\n\x07Request\x12\x35\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1c.djls.v1.check.HealthRequestH\x00\x12\x42\n\x14\x63heck__app_installed\x18\x02 \x01(\x0b\x32\".djls.v1.check.AppInstalledRequestH\x00\x12I\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32%.djls.v1.python.GetEnvironmentRequestH\x00\x12J\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32%.djls.v1.django.GetProjectInfoRequestH\x00\x42\t\n\x07\x63ommand\"\xd5\x02\n\x08Response\x12\x36\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1d.djls.v1.check.HealthResponseH\x00\x12\x43\n\x14\x63heck__app_installed\x18\x02 \x01(\x0b\x32#.djls.v1.check.AppInstalledResponseH\x00\x12J\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32&.djls.v1.python.GetEnvironmentResponseH\x00\x12K\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32&.djls.v1.django.GetProjectInfoResponseH\x00\x12)\n\x05\x65rror\x18\xa8\x46 \x01(\x0b\x32\x17.djls.v1.messages.ErrorH\x00\x42\x08\n\x06result\"\xa5\x01\n\x05\x45rror\x12*\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1c.djls.v1.messages.Error.Code\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x11\n\ttraceback\x18\x03 \x01(\t\"L\n\x04\x43ode\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x13\n\x0fINVALID_REQUEST\x10\x01\x12\x10\n\x0cPYTHON_ERROR\x10\x02\x12\x10\n\x0c\x44JANGO_ERROR\x10\x03\x62\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
|
@ -39,11 +39,11 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'v1.messages_pb2', _globals)
|
|||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_REQUEST']._serialized_start=90
|
||||
_globals['_REQUEST']._serialized_end=458
|
||||
_globals['_RESPONSE']._serialized_start=461
|
||||
_globals['_RESPONSE']._serialized_end=877
|
||||
_globals['_ERROR']._serialized_start=880
|
||||
_globals['_ERROR']._serialized_end=1045
|
||||
_globals['_ERROR_CODE']._serialized_start=969
|
||||
_globals['_ERROR_CODE']._serialized_end=1045
|
||||
_globals['_REQUEST']._serialized_end=384
|
||||
_globals['_RESPONSE']._serialized_start=387
|
||||
_globals['_RESPONSE']._serialized_end=728
|
||||
_globals['_ERROR']._serialized_start=731
|
||||
_globals['_ERROR']._serialized_end=896
|
||||
_globals['_ERROR_CODE']._serialized_start=820
|
||||
_globals['_ERROR_CODE']._serialized_end=896
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
|
|
@ -13,34 +13,30 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti
|
|||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Request(_message.Message):
|
||||
__slots__ = ("check__health", "check__django_available", "check__app_installed", "python__get_environment", "django__get_project_info")
|
||||
__slots__ = ("check__health", "check__app_installed", "python__get_environment", "django__get_project_info")
|
||||
CHECK__HEALTH_FIELD_NUMBER: _ClassVar[int]
|
||||
CHECK__DJANGO_AVAILABLE_FIELD_NUMBER: _ClassVar[int]
|
||||
CHECK__APP_INSTALLED_FIELD_NUMBER: _ClassVar[int]
|
||||
PYTHON__GET_ENVIRONMENT_FIELD_NUMBER: _ClassVar[int]
|
||||
DJANGO__GET_PROJECT_INFO_FIELD_NUMBER: _ClassVar[int]
|
||||
check__health: _check_pb2.HealthRequest
|
||||
check__django_available: _check_pb2.DjangoAvailableRequest
|
||||
check__app_installed: _check_pb2.AppInstalledRequest
|
||||
python__get_environment: _python_pb2.GetEnvironmentRequest
|
||||
django__get_project_info: _django_pb2.GetProjectInfoRequest
|
||||
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthRequest, _Mapping]] = ..., check__django_available: _Optional[_Union[_check_pb2.DjangoAvailableRequest, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledRequest, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentRequest, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoRequest, _Mapping]] = ...) -> None: ...
|
||||
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthRequest, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledRequest, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentRequest, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoRequest, _Mapping]] = ...) -> None: ...
|
||||
|
||||
class Response(_message.Message):
|
||||
__slots__ = ("check__health", "check__django_available", "check__app_installed", "python__get_environment", "django__get_project_info", "error")
|
||||
__slots__ = ("check__health", "check__app_installed", "python__get_environment", "django__get_project_info", "error")
|
||||
CHECK__HEALTH_FIELD_NUMBER: _ClassVar[int]
|
||||
CHECK__DJANGO_AVAILABLE_FIELD_NUMBER: _ClassVar[int]
|
||||
CHECK__APP_INSTALLED_FIELD_NUMBER: _ClassVar[int]
|
||||
PYTHON__GET_ENVIRONMENT_FIELD_NUMBER: _ClassVar[int]
|
||||
DJANGO__GET_PROJECT_INFO_FIELD_NUMBER: _ClassVar[int]
|
||||
ERROR_FIELD_NUMBER: _ClassVar[int]
|
||||
check__health: _check_pb2.HealthResponse
|
||||
check__django_available: _check_pb2.DjangoAvailableResponse
|
||||
check__app_installed: _check_pb2.AppInstalledResponse
|
||||
python__get_environment: _python_pb2.GetEnvironmentResponse
|
||||
django__get_project_info: _django_pb2.GetProjectInfoResponse
|
||||
error: Error
|
||||
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthResponse, _Mapping]] = ..., check__django_available: _Optional[_Union[_check_pb2.DjangoAvailableResponse, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledResponse, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentResponse, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoResponse, _Mapping]] = ..., error: _Optional[_Union[Error, _Mapping]] = ...) -> None: ...
|
||||
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthResponse, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledResponse, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentResponse, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoResponse, _Mapping]] = ..., error: _Optional[_Union[Error, _Mapping]] = ...) -> None: ...
|
||||
|
||||
class Error(_message.Message):
|
||||
__slots__ = ("code", "message", "traceback")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue