summaryrefslogtreecommitdiff
path: root/continuedev
diff options
context:
space:
mode:
Diffstat (limited to 'continuedev')
-rw-r--r--continuedev/pyapp/pyoxidizer.bzl353
-rw-r--r--continuedev/pyproject.toml2
-rw-r--r--continuedev/requirements.txt88
-rw-r--r--continuedev/src/continuedev/libs/util/calculate_diff.py35
4 files changed, 16 insertions, 462 deletions
diff --git a/continuedev/pyapp/pyoxidizer.bzl b/continuedev/pyapp/pyoxidizer.bzl
deleted file mode 100644
index 943007ff..00000000
--- a/continuedev/pyapp/pyoxidizer.bzl
+++ /dev/null
@@ -1,353 +0,0 @@
-# This file defines how PyOxidizer application building and packaging is
-# performed. See PyOxidizer's documentation at
-# https://gregoryszorc.com/docs/pyoxidizer/stable/pyoxidizer.html for details
-# of this configuration file format.
-
-# Configuration files consist of functions which define build "targets."
-# This function creates a Python executable and installs it in a destination
-# directory.
-def make_exe():
- # Obtain the default PythonDistribution for our build target. We link
- # this distribution into our produced executable and extract the Python
- # standard library from it.
- dist = default_python_distribution()
-
- # This function creates a `PythonPackagingPolicy` instance, which
- # influences how executables are built and how resources are added to
- # the executable. You can customize the default behavior by assigning
- # to attributes and calling functions.
- policy = dist.make_python_packaging_policy()
-
- # Enable support for non-classified "file" resources to be added to
- # resource collections.
- # policy.allow_files = True
-
- # Control support for loading Python extensions and other shared libraries
- # from memory. This is only supported on Windows and is ignored on other
- # platforms.
- # policy.allow_in_memory_shared_library_loading = True
-
- # Control whether to generate Python bytecode at various optimization
- # levels. The default optimization level used by Python is 0.
- # policy.bytecode_optimize_level_zero = True
- # policy.bytecode_optimize_level_one = True
- # policy.bytecode_optimize_level_two = True
-
- # Package all available Python extensions in the distribution.
- # policy.extension_module_filter = "all"
-
- # Package the minimum set of Python extensions in the distribution needed
- # to run a Python interpreter. Various functionality from the Python
- # standard library won't work with this setting! But it can be used to
- # reduce the size of generated executables by omitting unused extensions.
- # policy.extension_module_filter = "minimal"
-
- # Package Python extensions in the distribution not having additional
- # library dependencies. This will exclude working support for SSL,
- # compression formats, and other functionality.
- # policy.extension_module_filter = "no-libraries"
-
- # Package Python extensions in the distribution not having a dependency on
- # copyleft licensed software like GPL.
- # policy.extension_module_filter = "no-copyleft"
-
- # Controls whether the file scanner attempts to classify files and emit
- # resource-specific values.
- # policy.file_scanner_classify_files = True
-
- # Controls whether `File` instances are emitted by the file scanner.
- # policy.file_scanner_emit_files = False
-
- # Controls the `add_include` attribute of "classified" resources
- # (`PythonModuleSource`, `PythonPackageResource`, etc).
- # policy.include_classified_resources = True
-
- # Toggle whether Python module source code for modules in the Python
- # distribution's standard library are included.
- # policy.include_distribution_sources = False
-
- # Toggle whether Python package resource files for the Python standard
- # library are included.
- # policy.include_distribution_resources = False
-
- # Controls the `add_include` attribute of `File` resources.
- # policy.include_file_resources = False
-
- # Controls the `add_include` attribute of `PythonModuleSource` not in
- # the standard library.
- # policy.include_non_distribution_sources = True
-
- # Toggle whether files associated with tests are included.
- # policy.include_test = False
-
- # Resources are loaded from "in-memory" or "filesystem-relative" paths.
- # The locations to attempt to add resources to are defined by the
- # `resources_location` and `resources_location_fallback` attributes.
- # The former is the first/primary location to try and the latter is
- # an optional fallback.
-
- # Use in-memory location for adding resources by default.
- # policy.resources_location = "in-memory"
-
- # Use filesystem-relative location for adding resources by default.
- # policy.resources_location = "filesystem-relative:prefix"
-
- # Attempt to add resources relative to the built binary when
- # `resources_location` fails.
- # policy.resources_location_fallback = "filesystem-relative:prefix"
-
- # Clear out a fallback resource location.
- # policy.resources_location_fallback = None
-
- # Define a preferred Python extension module variant in the Python distribution
- # to use.
- # policy.set_preferred_extension_module_variant("foo", "bar")
-
- # Configure policy values to classify files as typed resources.
- # (This is the default.)
- # policy.set_resource_handling_mode("classify")
-
- # Configure policy values to handle files as files and not attempt
- # to classify files as specific types.
- # policy.set_resource_handling_mode("files")
-
- # This variable defines the configuration of the embedded Python
- # interpreter. By default, the interpreter will run a Python REPL
- # using settings that are appropriate for an "isolated" run-time
- # environment.
- #
- # The configuration of the embedded Python interpreter can be modified
- # by setting attributes on the instance. Some of these are
- # documented below.
- python_config = dist.make_python_interpreter_config()
-
- # Make the embedded interpreter behave like a `python` process.
- # python_config.config_profile = "python"
-
- # Set initial value for `sys.path`. If the string `$ORIGIN` exists in
- # a value, it will be expanded to the directory of the built executable.
- # python_config.module_search_paths = ["$ORIGIN/lib"]
-
- # Use jemalloc as Python's memory allocator.
- # python_config.allocator_backend = "jemalloc"
-
- # Use mimalloc as Python's memory allocator.
- # python_config.allocator_backend = "mimalloc"
-
- # Use snmalloc as Python's memory allocator.
- # python_config.allocator_backend = "snmalloc"
-
- # Let Python choose which memory allocator to use. (This will likely
- # use the malloc()/free() linked into the program.
- # python_config.allocator_backend = "default"
-
- # Enable the use of a custom allocator backend with the "raw" memory domain.
- # python_config.allocator_raw = True
-
- # Enable the use of a custom allocator backend with the "mem" memory domain.
- # python_config.allocator_mem = True
-
- # Enable the use of a custom allocator backend with the "obj" memory domain.
- # python_config.allocator_obj = True
-
- # Enable the use of a custom allocator backend with pymalloc's arena
- # allocator.
- # python_config.allocator_pymalloc_arena = True
-
- # Enable Python memory allocator debug hooks.
- # python_config.allocator_debug = True
-
- # Automatically calls `multiprocessing.set_start_method()` with an
- # appropriate value when OxidizedFinder imports the `multiprocessing`
- # module.
- # python_config.multiprocessing_start_method = 'auto'
-
- # Do not call `multiprocessing.set_start_method()` automatically. (This
- # is the default behavior of Python applications.)
- # python_config.multiprocessing_start_method = 'none'
-
- # Call `multiprocessing.set_start_method()` with explicit values.
- # python_config.multiprocessing_start_method = 'fork'
- # python_config.multiprocessing_start_method = 'forkserver'
- # python_config.multiprocessing_start_method = 'spawn'
-
- # Control whether `oxidized_importer` is the first importer on
- # `sys.meta_path`.
- # python_config.oxidized_importer = False
-
- # Enable the standard path-based importer which attempts to load
- # modules from the filesystem.
- # python_config.filesystem_importer = True
-
- # Set `sys.frozen = False`
- # python_config.sys_frozen = False
-
- # Set `sys.meipass`
- # python_config.sys_meipass = True
-
- # Write files containing loaded modules to the directory specified
- # by the given environment variable.
- # python_config.write_modules_directory_env = "/tmp/oxidized/loaded_modules"
-
- # Evaluate a string as Python code when the interpreter starts.
- python_config.run_command = "from continuedev.server.main import run_server; run_server()"
- policy.resources_location_fallback = "filesystem-relative:prefix"
-
- # Run a Python module as __main__ when the interpreter starts.
- # python_config.run_module = "<module>"
-
- # Run a Python file when the interpreter starts.
- # python_config.run_filename = "/path/to/file"
-
- # Produce a PythonExecutable from a Python distribution, embedded
- # resources, and other options. The returned object represents the
- # standalone executable that will be built.
- exe = dist.to_python_executable(
- name="pyapp",
-
- # If no argument passed, the default `PythonPackagingPolicy` for the
- # distribution is used.
- packaging_policy=policy,
-
- # If no argument passed, the default `PythonInterpreterConfig` is used.
- config=python_config,
- )
-
- for resource in exe.pip_install(["../dist/continuedev-0.1.2-py3-none-any.whl"]):
- resource.add_location = "in-memory"
- exe.add_python_resource(resource)
-
-
-
- # Install tcl/tk support files to a specified directory so the `tkinter` Python
- # module works.
- # exe.tcl_files_path = "lib"
-
- # Never attempt to copy Windows runtime DLLs next to the built executable.
- # exe.windows_runtime_dlls_mode = "never"
-
- # Copy Windows runtime DLLs next to the built executable when they can be
- # located.
- # exe.windows_runtime_dlls_mode = "when-present"
-
- # Copy Windows runtime DLLs next to the build executable and error if this
- # cannot be done.
- # exe.windows_runtime_dlls_mode = "always"
-
- # Make the executable a console application on Windows.
- # exe.windows_subsystem = "console"
-
- # Make the executable a non-console application on Windows.
- # exe.windows_subsystem = "windows"
-
- # Invoke `pip download` to install a single package using wheel archives
- # obtained via `pip download`. `pip_download()` returns objects representing
- # collected files inside Python wheels. `add_python_resources()` adds these
- # objects to the binary, with a load location as defined by the packaging
- # policy's resource location attributes.
- #exe.add_python_resources(exe.pip_download(["pyflakes==2.2.0"]))
-
- # Invoke `pip install` with our Python distribution to install a single package.
- # `pip_install()` returns objects representing installed files.
- # `add_python_resources()` adds these objects to the binary, with a load
- # location as defined by the packaging policy's resource location
- # attributes.
- #exe.add_python_resources(exe.pip_install(["appdirs"]))
-
- # Invoke `pip install` using a requirements file and add the collected resources
- # to our binary.
- #exe.add_python_resources(exe.pip_install(["-r", "requirements.txt"]))
-
-
- # Read Python files from a local directory and add them to our embedded
- # context, taking just the resources belonging to the `foo` and `bar`
- # Python packages.
- #exe.add_python_resources(exe.read_package_root(
- # path="/src/mypackage",
- # packages=["foo", "bar"],
- #))
-
- # Discover Python files from a virtualenv and add them to our embedded
- # context.
- #exe.add_python_resources(exe.read_virtualenv(path="/path/to/venv"))
-
- # Filter all resources collected so far through a filter of names
- # in a file.
- #exe.filter_resources_from_files(files=["/path/to/filter-file"])
-
- # Return our `PythonExecutable` instance so it can be built and
- # referenced by other consumers of this target.
- return exe
-
-def make_embedded_resources(exe):
- return exe.to_embedded_resources()
-
-def make_install(exe):
- # Create an object that represents our installed application file layout.
- files = FileManifest()
-
- # Add the generated executable to our install layout in the root directory.
- files.add_python_resource(".", exe)
-
- return files
-
-def make_msi(exe):
- # See the full docs for more. But this will convert your Python executable
- # into a `WiXMSIBuilder` Starlark type, which will be converted to a Windows
- # .msi installer when it is built.
- return exe.to_wix_msi_builder(
- # Simple identifier of your app.
- "myapp",
- # The name of your application.
- "My Application",
- # The version of your application.
- "1.0",
- # The author/manufacturer of your application.
- "Alice Jones"
- )
-
-
-# Dynamically enable automatic code signing.
-def register_code_signers():
- # You will need to run with `pyoxidizer build --var ENABLE_CODE_SIGNING 1` for
- # this if block to be evaluated.
- if not VARS.get("ENABLE_CODE_SIGNING"):
- return
-
- # Use a code signing certificate in a .pfx/.p12 file, prompting the
- # user for its path and password to open.
- # pfx_path = prompt_input("path to code signing certificate file")
- # pfx_password = prompt_password(
- # "password for code signing certificate file",
- # confirm = True
- # )
- # signer = code_signer_from_pfx_file(pfx_path, pfx_password)
-
- # Use a code signing certificate in the Windows certificate store, specified
- # by its SHA-1 thumbprint. (This allows you to use YubiKeys and other
- # hardware tokens if they speak to the Windows certificate APIs.)
- # sha1_thumbprint = prompt_input(
- # "SHA-1 thumbprint of code signing certificate in Windows store"
- # )
- # signer = code_signer_from_windows_store_sha1_thumbprint(sha1_thumbprint)
-
- # Choose a code signing certificate automatically from the Windows
- # certificate store.
- # signer = code_signer_from_windows_store_auto()
-
- # Activate your signer so it gets called automatically.
- # signer.activate()
-
-
-# Call our function to set up automatic code signers.
-register_code_signers()
-
-# Tell PyOxidizer about the build targets defined above.
-register_target("exe", make_exe)
-register_target("resources", make_embedded_resources, depends=["exe"], default_build_script=True)
-register_target("install", make_install, depends=["exe"], default=True)
-register_target("msi_installer", make_msi, depends=["exe"])
-
-# Resolve whatever targets the invoker of this configuration file is requesting
-# be resolved.
-resolve_targets()
diff --git a/continuedev/pyproject.toml b/continuedev/pyproject.toml
index d7505e2b..7355beb0 100644
--- a/continuedev/pyproject.toml
+++ b/continuedev/pyproject.toml
@@ -7,7 +7,6 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.8.1"
-diff-match-patch = "^20230430"
fastapi = "^0.95.1"
typer = "^0.7.0"
openai = "^0.27.5"
@@ -18,7 +17,6 @@ python-dotenv = "^1.0.0"
nest-asyncio = "^1.5.6"
websockets = "^11.0.2"
urllib3 = "1.26.15"
-gpt-index = "^0.6.8"
posthog = "^3.0.1"
tiktoken = "^0.4.0"
jsonref = "^1.1.0"
diff --git a/continuedev/requirements.txt b/continuedev/requirements.txt
index 970681f9..6a776a62 100644
--- a/continuedev/requirements.txt
+++ b/continuedev/requirements.txt
@@ -1,76 +1,20 @@
-aiofiles==23.1.0
-aiohttp==3.8.4
-aiosignal==1.3.1
-anthropic==0.3.4
-anyio==3.6.2
-async-timeout==4.0.2
-attrs==23.1.0
-backoff==2.2.1
-boltons==23.0.0
-camel-converter==3.0.2
-certifi==2022.12.7
-cffi==1.15.1
-charset-normalizer==3.1.0
-chevron==0.14.0
-click==8.1.3
--e git+https://github.com/continuedev/continue.git@78ada9b463a41260ccf53bbdc08b396ab9783ee2#egg=continuedev&subdirectory=continuedev
-cryptography==41.0.2
-dataclasses-json==0.5.7
-Deprecated==1.2.14
-diff-match-patch==20230430
-directory-tree==0.0.3.1
-distro==1.8.0
fastapi==0.95.1
-frozenlist==1.3.3
-gpt-index==0.6.8
-h11==0.14.0
-httpcore==0.17.3
-httpx==0.24.1
-idna==3.4
-jsonref==1.1.0
-jsonschema==4.17.3
-langchain==0.0.171
-marshmallow==3.19.0
-marshmallow-enum==1.5.1
-meilisearch-python-async==1.4.8
-monotonic==1.6
-multidict==6.0.4
-mypy-extensions==1.0.0
-nest-asyncio==1.5.6
-numexpr==2.8.4
-numpy==1.24.3
-openai==0.27.6
-openapi-schema-pydantic==1.2.4
-packaging==23.1
-pandas==2.0.1
-posthog==3.0.1
-psutil==5.9.5
-pycparser==2.21
-pydantic==1.10.7
-PyGithub==1.59.0
-PyJWT==2.8.0
-PyNaCl==1.5.0
-pyrsistent==0.19.3
-python-dateutil==2.8.2
-python-dotenv==1.0.0
-pytz==2023.3
-PyYAML==6.0
-regex==2023.5.5
-requests==2.29.0
-six==1.16.0
-sniffio==1.3.0
-SQLAlchemy==2.0.13
-starlette==0.26.1
-tenacity==8.2.2
-tiktoken==0.4.0
-tokenizers==0.13.3
-tqdm==4.65.0
typer==0.7.0
-typing-inspect==0.8.0
-typing_extensions==4.5.0
-tzdata==2023.3
-urllib3==1.26.15
+openai==0.27.5
+boltons==23.0.0
+pydantic==1.10.7
uvicorn==0.21.1
+python-dotenv==1.0.0
+nest-asyncio==1.5.6
websockets==11.0.2
-wrapt==1.15.0
-yarl==1.9.2
+urllib3==1.26.15
+posthog==3.0.1
+tiktoken==0.4.0
+jsonref==1.1.0
+jsonschema==4.17.3
+directory-tree==0.0.3.1
+anthropic==0.3.4
+chevron==0.14.0
+psutil==5.9.5
+pygithub==1.59.0
+meilisearch-python-async==1.4.8
diff --git a/continuedev/src/continuedev/libs/util/calculate_diff.py b/continuedev/src/continuedev/libs/util/calculate_diff.py
index 3e82bab3..e8e48839 100644
--- a/continuedev/src/continuedev/libs/util/calculate_diff.py
+++ b/continuedev/src/continuedev/libs/util/calculate_diff.py
@@ -2,41 +2,6 @@ import difflib
from typing import List
from ...models.main import Position, Range
from ...models.filesystem import FileEdit
-from diff_match_patch import diff_match_patch
-
-
-def calculate_diff_match_patch(filepath: str, original: str, updated: str) -> List[FileEdit]:
- dmp = diff_match_patch()
- diffs = dmp.diff_main(original, updated)
- dmp.diff_cleanupSemantic(diffs)
-
- replacements = []
-
- current_index = 0
- deleted_length = 0
-
- for diff in diffs:
- if diff[0] == diff_match_patch.DIFF_EQUAL:
- current_index += len(diff[1])
- deleted_length = 0
- elif diff[0] == diff_match_patch.DIFF_INSERT:
- current_index += deleted_length
- replacements.append((current_index, current_index, diff[1]))
- current_index += len(diff[1])
- deleted_length = 0
- elif diff[0] == diff_match_patch.DIFF_DELETE:
- replacements.append(
- (current_index, current_index + len(diff[1]), ''))
- deleted_length += len(diff[1])
- elif diff[0] == diff_match_patch.DIFF_REPLACE:
- replacements.append(
- (current_index, current_index + len(diff[1]), ''))
- current_index += deleted_length
- replacements.append((current_index, current_index, diff[2]))
- current_index += len(diff[2])
- deleted_length = 0
-
- return [FileEdit(filepath=filepath, range=Range.from_indices(original, r[0], r[1]), replacement=r[2]) for r in replacements]
def calculate_diff(filepath: str, original: str, updated: str) -> List[FileEdit]: