diff options
| author | Nate Sesti <sestinj@gmail.com> | 2023-08-01 00:37:24 -0700 | 
|---|---|---|
| committer | Nate Sesti <sestinj@gmail.com> | 2023-08-01 00:37:24 -0700 | 
| commit | 70eb274f51c703c352865b8af39557b271fae6dd (patch) | |
| tree | 021eda9b05fac39b3f046eb41ab3fc5c0df7ede5 /continuedev | |
| parent | 1295cc00950c9c6b711fc82ef5492448a1be8caf (diff) | |
| download | sncontinue-70eb274f51c703c352865b8af39557b271fae6dd.tar.gz sncontinue-70eb274f51c703c352865b8af39557b271fae6dd.tar.bz2 sncontinue-70eb274f51c703c352865b8af39557b271fae6dd.zip  | |
try cx_freeze, smaller pyinstaller
Diffstat (limited to 'continuedev')
| -rw-r--r-- | continuedev/pyapp/pyoxidizer.bzl | 353 | ||||
| -rw-r--r-- | continuedev/pyproject.toml | 2 | ||||
| -rw-r--r-- | continuedev/requirements.txt | 88 | ||||
| -rw-r--r-- | continuedev/src/continuedev/libs/util/calculate_diff.py | 35 | 
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]:  | 
