Removing Returns dependency.

This commit is contained in:
RD 2024-12-16 15:33:48 -08:00
parent 91ecf113aa
commit 695911583a
9 changed files with 50 additions and 14 deletions

View file

@ -15,7 +15,6 @@ import inquirer.themes
import tomlkit
from git import InvalidGitRepositoryError, Repo
from pydantic.dataclasses import dataclass
from returns.pipeline import is_successful
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
@ -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.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.either import is_successful
from codeflash.telemetry.posthog_cf import ph
from codeflash.version import __version__ as version

View file

@ -3,9 +3,8 @@ import re
from pathlib import Path
from typing import Optional
from returns.result import Failure, Result, Success
from codeflash.code_utils.compat import LF
from codeflash.either import Failure, Result, Success
if os.name == "nt": # Windows
SHELL_RC_EXPORT_PATTERN = re.compile(r"^set CODEFLASH_API_KEY=(cf-.*)$", re.MULTILINE)

41
codeflash/either.py Normal file
View 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()

View file

@ -14,8 +14,6 @@ from typing import TYPE_CHECKING
import isort
import libcst as cst
from returns.pipeline import is_successful
from returns.result import Failure, Success
from rich.console import Group
from rich.panel import Panel
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.discovery.discover_unit_tests import discover_unit_tests
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.models import (
BestOptimization,
@ -74,8 +73,7 @@ from codeflash.verification.verifier import generate_tests
if TYPE_CHECKING:
from argparse import Namespace
from returns.result import Result
from codeflash.either import Result
from codeflash.models.models import CoverageData, FunctionCalledInTest, FunctionSource, OptimizedCandidate

View file

@ -87,7 +87,6 @@ click = ">=8.1.0"
inquirer = ">=3.0.0"
sentry-sdk = ">=1.40.6,<3.0.0"
parameterized = ">=0.9.0"
returns = ">=0.23"
isort = ">=5.11.0"
dill = ">=0.3.8"
rich = ">=13.8.1"
@ -135,7 +134,7 @@ show_error_end = true
strict = true
warn_unreachable = true
install_types = true
plugins = ["returns.contrib.mypy.returns_plugin", "pydantic.mypy"]
plugins = ["pydantic.mypy"]
[[tool.mypy.overrides]]
module = ["jedi", "jedi.api.classes", "inquirer", "inquirer.themes"]

View file

@ -5,10 +5,10 @@ from enum import Enum, Flag, IntFlag, auto
import pydantic
import pytest
from codeflash.either import Failure, Success
from codeflash.verification.comparator import comparator
from codeflash.verification.equivalence import compare_test_results
from codeflash.verification.test_results import FunctionTestInvocation, InvocationId, TestResults, TestType
from returns.result import Failure, Success
def test_basic_python_objects():

View file

@ -4,10 +4,10 @@ from dataclasses import dataclass
import pytest
from codeflash.discovery.functions_to_optimize import FunctionToOptimize
from codeflash.either import is_successful
from codeflash.models.models import FunctionParent
from codeflash.optimization.function_context import get_function_variables_definitions
from codeflash.optimization.optimizer import Optimizer
from returns.pipeline import is_successful
def calculate_something(data):

View file

@ -4,9 +4,9 @@ from pathlib import Path
import pytest
from codeflash.discovery.functions_to_optimize import FunctionToOptimize
from codeflash.either import is_successful
from codeflash.models.models import FunctionParent
from codeflash.optimization.optimizer import Optimizer
from returns.pipeline import is_successful
class HelperClass:

View file

@ -3,9 +3,8 @@ import unittest
from pathlib import Path
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.either import Failure, Success
class TestShellUtils(unittest.TestCase):