def get_version(toml: str) -> Try[MalformedTomlError, str]: match = re.search(r'version = \"([0-9]+\.[0-9]+\.[0-9]+)\"', toml) if match is None: return error( MalformedTomlError('Could not find version in pyproject.toml') ) else: return success(match[1])
def test_jitter(): mock_random = Mock() mock_random.random.return_value = success(.5) modules = Mock() modules.random = mock_random deltas = schedule.jitter(schedule.spaced(two_seconds)).run(modules) assert list(itertools.islice(deltas, 3)) == [timedelta(seconds=2.5)] * 3
def patch_todo(self, todo: Todo) -> Effect[sql.HasSQL, PostgresError, Todo]: query = ''' update todos set "order" = $1, title = $2, completed = $3 where id = $4 ''' return sql.execute(query, todo.order, todo.title, todo.completed, todo.id).discard_and_then(success(todo))
def compare(expected_version: str, actual_version: str) -> Try[NoVersionMatchError, None]: message = ( f'version "{actual_version}" in pyproject.toml ' f'did not match "{expected_version}"' ) if actual_version != expected_version: return error(NoVersionMatchError(message)) return success(None)
def delete_todo(self, todo_id: int) -> Effect[sql.HasSQL, PostgresError, None]: return sql.execute('delete from todos where id = $1', todo_id).discard_and_then(success(None))
def delete_todos(self) -> Effect[sql.HasSQL, PostgresError, None]: return sql.execute('delete from todos').discard_and_then(success(None))
def handle_no_results( reason: Union[TypeError, PostgresError, sql.EmptyResultSetError] ) -> Try[Union[PostgresError, TypeError], None]: if isinstance(reason, sql.EmptyResultSetError): return success(None) return error(reason)