mirror of
https://github.com/codeflash-ai/codeflash-internal.git
synced 2026-05-04 18:25:18 +00:00
Removing Returns dependency.
This commit is contained in:
parent
f5ec0835b8
commit
2214b55394
12 changed files with 71 additions and 17 deletions
|
|
@ -1,7 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="MypyConfigService">
|
<component name="MypyConfigService">
|
||||||
<option name="customMypyPath" value="$USER_HOME$/miniforge3/envs/codeflash311/bin/mypy" />
|
<option name="customMypyPath" value="$USER_HOME$/miniforge3/envs/codeflash312/bin/mypy" />
|
||||||
|
<option name="mypyConfigFilePath" value="$PROJECT_DIR$/cli/pyproject.toml" />
|
||||||
<option name="scanBeforeCheckin" value="true" />
|
<option name="scanBeforeCheckin" value="true" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -15,7 +15,6 @@ import inquirer.themes
|
||||||
import tomlkit
|
import tomlkit
|
||||||
from git import InvalidGitRepositoryError, Repo
|
from git import InvalidGitRepositoryError, Repo
|
||||||
from pydantic.dataclasses import dataclass
|
from pydantic.dataclasses import dataclass
|
||||||
from returns.pipeline import is_successful
|
|
||||||
|
|
||||||
from codeflash.api.cfapi import is_github_app_installed_on_repo
|
from codeflash.api.cfapi import is_github_app_installed_on_repo
|
||||||
from codeflash.cli_cmds.cli_common import apologize_and_exit, inquirer_wrapper, inquirer_wrapper_path
|
from codeflash.cli_cmds.cli_common import apologize_and_exit, inquirer_wrapper, inquirer_wrapper_path
|
||||||
|
|
@ -26,6 +25,7 @@ from codeflash.code_utils.env_utils import get_codeflash_api_key
|
||||||
from codeflash.code_utils.git_utils import get_git_remotes, get_repo_owner_and_name
|
from codeflash.code_utils.git_utils import get_git_remotes, get_repo_owner_and_name
|
||||||
from codeflash.code_utils.github_utils import get_github_secrets_page_url, require_github_app_or_exit
|
from codeflash.code_utils.github_utils import get_github_secrets_page_url, require_github_app_or_exit
|
||||||
from codeflash.code_utils.shell_utils import get_shell_rc_path, save_api_key_to_rc
|
from codeflash.code_utils.shell_utils import get_shell_rc_path, save_api_key_to_rc
|
||||||
|
from codeflash.either import is_successful
|
||||||
from codeflash.telemetry.posthog_cf import ph
|
from codeflash.telemetry.posthog_cf import ph
|
||||||
from codeflash.version import __version__ as version
|
from codeflash.version import __version__ as version
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,8 @@ import re
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from returns.result import Failure, Result, Success
|
|
||||||
|
|
||||||
from codeflash.code_utils.compat import LF
|
from codeflash.code_utils.compat import LF
|
||||||
|
from codeflash.either import Failure, Result, Success
|
||||||
|
|
||||||
if os.name == "nt": # Windows
|
if os.name == "nt": # Windows
|
||||||
SHELL_RC_EXPORT_PATTERN = re.compile(r"^set CODEFLASH_API_KEY=(cf-.*)$", re.MULTILINE)
|
SHELL_RC_EXPORT_PATTERN = re.compile(r"^set CODEFLASH_API_KEY=(cf-.*)$", re.MULTILINE)
|
||||||
|
|
|
||||||
41
cli/codeflash/either.py
Normal file
41
cli/codeflash/either.py
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Generic, TypeVar
|
||||||
|
|
||||||
|
L = TypeVar("L")
|
||||||
|
R = TypeVar("R")
|
||||||
|
|
||||||
|
|
||||||
|
class Result(Generic[L, R]):
|
||||||
|
def __init__(self, value: L | R) -> None:
|
||||||
|
self.value = value
|
||||||
|
|
||||||
|
def is_failure(self) -> bool:
|
||||||
|
return isinstance(self, Failure)
|
||||||
|
|
||||||
|
def is_successful(self) -> bool:
|
||||||
|
return isinstance(self, Success)
|
||||||
|
|
||||||
|
def unwrap(self) -> L | R:
|
||||||
|
if self.is_failure():
|
||||||
|
msg = "Cannot unwrap a failure"
|
||||||
|
raise ValueError(msg)
|
||||||
|
return self.value
|
||||||
|
|
||||||
|
def failure(self) -> L | R:
|
||||||
|
if self.is_successful():
|
||||||
|
msg = "Cannot get failure value from a success"
|
||||||
|
raise ValueError(msg)
|
||||||
|
return self.value
|
||||||
|
|
||||||
|
|
||||||
|
class Failure(Result[L, R]):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Success(Result[L, R]):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def is_successful(result: Result[L, R]) -> bool:
|
||||||
|
return result.is_successful()
|
||||||
|
|
@ -14,8 +14,6 @@ from typing import TYPE_CHECKING
|
||||||
|
|
||||||
import isort
|
import isort
|
||||||
import libcst as cst
|
import libcst as cst
|
||||||
from returns.pipeline import is_successful
|
|
||||||
from returns.result import Failure, Success
|
|
||||||
from rich.console import Group
|
from rich.console import Group
|
||||||
from rich.panel import Panel
|
from rich.panel import Panel
|
||||||
from rich.syntax import Syntax
|
from rich.syntax import Syntax
|
||||||
|
|
@ -44,6 +42,7 @@ from codeflash.code_utils.static_analysis import analyze_imported_modules, get_f
|
||||||
from codeflash.code_utils.time_utils import humanize_runtime
|
from codeflash.code_utils.time_utils import humanize_runtime
|
||||||
from codeflash.discovery.discover_unit_tests import discover_unit_tests
|
from codeflash.discovery.discover_unit_tests import discover_unit_tests
|
||||||
from codeflash.discovery.functions_to_optimize import FunctionToOptimize, get_functions_to_optimize
|
from codeflash.discovery.functions_to_optimize import FunctionToOptimize, get_functions_to_optimize
|
||||||
|
from codeflash.either import Failure, Success, is_successful
|
||||||
from codeflash.models.ExperimentMetadata import ExperimentMetadata
|
from codeflash.models.ExperimentMetadata import ExperimentMetadata
|
||||||
from codeflash.models.models import (
|
from codeflash.models.models import (
|
||||||
BestOptimization,
|
BestOptimization,
|
||||||
|
|
@ -74,8 +73,7 @@ from codeflash.verification.verifier import generate_tests
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from argparse import Namespace
|
from argparse import Namespace
|
||||||
|
|
||||||
from returns.result import Result
|
from codeflash.either import Result
|
||||||
|
|
||||||
from codeflash.models.models import CoverageData, FunctionCalledInTest, FunctionSource, OptimizedCandidate
|
from codeflash.models.models import CoverageData, FunctionCalledInTest, FunctionSource, OptimizedCandidate
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,6 @@ click = ">=8.1.0"
|
||||||
inquirer = ">=3.0.0"
|
inquirer = ">=3.0.0"
|
||||||
sentry-sdk = ">=1.40.6,<3.0.0"
|
sentry-sdk = ">=1.40.6,<3.0.0"
|
||||||
parameterized = ">=0.9.0"
|
parameterized = ">=0.9.0"
|
||||||
returns = ">=0.23"
|
|
||||||
isort = ">=5.11.0"
|
isort = ">=5.11.0"
|
||||||
dill = ">=0.3.8"
|
dill = ">=0.3.8"
|
||||||
rich = ">=13.8.1"
|
rich = ">=13.8.1"
|
||||||
|
|
@ -135,7 +134,7 @@ show_error_end = true
|
||||||
strict = true
|
strict = true
|
||||||
warn_unreachable = true
|
warn_unreachable = true
|
||||||
install_types = true
|
install_types = true
|
||||||
plugins = ["returns.contrib.mypy.returns_plugin", "pydantic.mypy"]
|
plugins = ["pydantic.mypy"]
|
||||||
|
|
||||||
[[tool.mypy.overrides]]
|
[[tool.mypy.overrides]]
|
||||||
module = ["jedi", "jedi.api.classes", "inquirer", "inquirer.themes"]
|
module = ["jedi", "jedi.api.classes", "inquirer", "inquirer.themes"]
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ from enum import Enum, Flag, IntFlag, auto
|
||||||
|
|
||||||
import pydantic
|
import pydantic
|
||||||
import pytest
|
import pytest
|
||||||
|
from codeflash.either import Failure, Success
|
||||||
from codeflash.verification.comparator import comparator
|
from codeflash.verification.comparator import comparator
|
||||||
from codeflash.verification.equivalence import compare_test_results
|
from codeflash.verification.equivalence import compare_test_results
|
||||||
from codeflash.verification.test_results import FunctionTestInvocation, InvocationId, TestResults, TestType
|
from codeflash.verification.test_results import FunctionTestInvocation, InvocationId, TestResults, TestType
|
||||||
from returns.result import Failure, Success
|
|
||||||
|
|
||||||
|
|
||||||
def test_basic_python_objects():
|
def test_basic_python_objects():
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ from dataclasses import dataclass
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from codeflash.discovery.functions_to_optimize import FunctionToOptimize
|
from codeflash.discovery.functions_to_optimize import FunctionToOptimize
|
||||||
|
from codeflash.either import is_successful
|
||||||
from codeflash.models.models import FunctionParent
|
from codeflash.models.models import FunctionParent
|
||||||
from codeflash.optimization.function_context import get_function_variables_definitions
|
from codeflash.optimization.function_context import get_function_variables_definitions
|
||||||
from codeflash.optimization.optimizer import Optimizer
|
from codeflash.optimization.optimizer import Optimizer
|
||||||
from returns.pipeline import is_successful
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_something(data):
|
def calculate_something(data):
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ from pathlib import Path
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from codeflash.discovery.functions_to_optimize import FunctionToOptimize
|
from codeflash.discovery.functions_to_optimize import FunctionToOptimize
|
||||||
|
from codeflash.either import is_successful
|
||||||
from codeflash.models.models import FunctionParent
|
from codeflash.models.models import FunctionParent
|
||||||
from codeflash.optimization.optimizer import Optimizer
|
from codeflash.optimization.optimizer import Optimizer
|
||||||
from returns.pipeline import is_successful
|
|
||||||
|
|
||||||
|
|
||||||
class HelperClass:
|
class HelperClass:
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,8 @@ import unittest
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from unittest.mock import mock_open, patch
|
from unittest.mock import mock_open, patch
|
||||||
|
|
||||||
from returns.result import Failure, Success
|
|
||||||
|
|
||||||
from codeflash.code_utils.shell_utils import read_api_key_from_shell_config, save_api_key_to_rc
|
from codeflash.code_utils.shell_utils import read_api_key_from_shell_config, save_api_key_to_rc
|
||||||
|
from codeflash.either import Failure, Success
|
||||||
|
|
||||||
|
|
||||||
class TestShellUtils(unittest.TestCase):
|
class TestShellUtils(unittest.TestCase):
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,6 @@ sentry-sdk = { extras = ["django"], version = "^2.3.1" }
|
||||||
isort = "^5.13.2"
|
isort = "^5.13.2"
|
||||||
gitpython = "^3.1.43"
|
gitpython = "^3.1.43"
|
||||||
ruff = ">=0.7.0"
|
ruff = ">=0.7.0"
|
||||||
returns = "^0.23.0"
|
|
||||||
pytest-django = "^4.8.0"
|
pytest-django = "^4.8.0"
|
||||||
nltk = "^3.9.1"
|
nltk = "^3.9.1"
|
||||||
openai = "^1.52.2"
|
openai = "^1.52.2"
|
||||||
|
|
@ -97,7 +96,6 @@ strict = true
|
||||||
warn_unreachable = true
|
warn_unreachable = true
|
||||||
install_types = true
|
install_types = true
|
||||||
plugins = [
|
plugins = [
|
||||||
"returns.contrib.mypy.returns_plugin",
|
|
||||||
"pydantic.mypy"
|
"pydantic.mypy"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
19
mypy.ini
Normal file
19
mypy.ini
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Global options:
|
||||||
|
|
||||||
|
[mypy]
|
||||||
|
plugins = pydantic.mypy
|
||||||
|
|
||||||
|
show_error_code_links = True
|
||||||
|
pretty = True
|
||||||
|
show_absolute_path = True
|
||||||
|
show_error_context = True
|
||||||
|
show_error_end = True
|
||||||
|
strict = True
|
||||||
|
warn_unreachable = True
|
||||||
|
install_types = True
|
||||||
|
|
||||||
|
[pydantic-mypy]
|
||||||
|
init_forbid_extra = True
|
||||||
|
init_typed = True
|
||||||
|
warn_required_dynamic_aliases = True
|
||||||
|
warn_untyped_fields = True
|
||||||
Loading…
Reference in a new issue