Example #1
0
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])
Example #2
0
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
Example #3
0
 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))
Example #4
0
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)
Example #5
0
 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))
Example #6
0
 def delete_todos(self) -> Effect[sql.HasSQL, PostgresError, None]:
     return sql.execute('delete from todos').discard_and_then(success(None))
Example #7
0
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)