Ejemplo n.º 1
0
def field_with_default_is_shown_as_kwarg():
    User = dodge.data_class(
        "User",
        ["username", dodge.field("password", default="password1")])

    user = User("bob", "password2")
    assert_equal("User('bob', password='******')", repr(user))
Ejemplo n.º 2
0
def field_value_is_shown_if_it_has_default_value():
    User = dodge.data_class(
        "User",
        ["username", dodge.field("password", default="password1")])

    user = User("bob")
    assert_equal("User('bob', password='******')", repr(user))
Ejemplo n.º 3
0
def keyword_only_field_is_shown_as_kwarg():
    User = dodge.data_class(
        "User",
        ["username", dodge.field("password", keyword_only=True)])

    user = User("bob", password="******")
    assert_equal("User('bob', password='******')", repr(user))
Ejemplo n.º 4
0
def field_is_set_to_default_if_value_not_provided():
    User = dodge.data_class(
        "User",
        ["username", dodge.field("password", default="password1")])

    user = User("bob")
    assert_equal("password1", user.password)
Ejemplo n.º 5
0
def keyword_only_field_is_shown_as_kwarg():
    User = dodge.data_class("User", [
        "username",
        dodge.field("password", keyword_only=True)
    ])
    
    user = User("bob", password="******")
    assert_equal("User('bob', password='******')", repr(user))
Ejemplo n.º 6
0
def field_with_default_is_shown_as_kwarg():
    User = dodge.data_class("User", [
        "username",
        dodge.field("password", default="password1")
    ])
    
    user = User("bob", "password2")
    assert_equal("User('bob', password='******')", repr(user))
Ejemplo n.º 7
0
def field_is_set_to_default_if_value_not_provided():
    User = dodge.data_class("User", [
        "username",
        dodge.field("password", default="password1")
    ])
    
    user = User("bob")
    assert_equal("password1", user.password)
Ejemplo n.º 8
0
def flat_list_for_nested_data_classes_contains_all_field_values_as_flat_list():
    Profile = dodge.data_class("Profile", ["bio"])

    User = dodge.data_class("User", ["username", dodge.field("profile", type=Profile)])

    user = User("bob", Profile("I'm Bob."))

    assert_equal(["bob", "I'm Bob."], dodge.obj_to_flat_list(user))
Ejemplo n.º 9
0
def field_can_be_configured_to_be_hidden_in_repr_if_it_has_default_value():
    User = dodge.data_class("User", [
        "username",
        dodge.field("password", default="password1", show_default=False)
    ])
    
    user = User("bob")
    assert_equal("User('bob')", repr(user))
Ejemplo n.º 10
0
def error_is_raised_if_kwarg_field_is_passed_as_positional_arg():
    User = dodge.data_class(
        "User",
        ["username", dodge.field("password", keyword_only=True)])

    assert_raises_regexp(TypeError,
                         "takes 1 positional argument but 2 were given",
                         lambda: User("bob", "password2"))
Ejemplo n.º 11
0
def field_can_be_configured_to_be_hidden_in_repr_if_it_has_default_value():
    User = dodge.data_class("User", [
        "username",
        dodge.field("password", default="password1", show_default=False)
    ])

    user = User("bob")
    assert_equal("User('bob')", repr(user))
Ejemplo n.º 12
0
def field_value_is_shown_if_it_has_default_value():
    User = dodge.data_class("User", [
        "username",
        dodge.field("password", default="password1")
    ])
    
    user = User("bob")
    assert_equal("User('bob', password='******')", repr(user))
Ejemplo n.º 13
0
def can_convert_nested_data_classes_to_and_from_flat_list():
    Profile = dodge.data_class("Profile", ["bio"])

    User = dodge.data_class("User", ["username", dodge.field("profile", type=Profile)])

    user = User("bob", Profile("I'm Bob."))
    serialised_user = dodge.obj_to_flat_list(user)
    unserialised_user = dodge.flat_list_to_obj(serialised_user, User)
    assert_equal(user, unserialised_user)
Ejemplo n.º 14
0
def can_convert_nested_data_classes_to_and_from_string():
    Profile = dodge.data_class("Profile", ["bio"])

    User = dodge.data_class("User", ["username", dodge.field("profile", type=Profile)])

    user = User("bob", Profile("I'm Bob."))
    serialised_user = dodge.dumps(user)
    unserialised_user = dodge.loads(serialised_user, User)
    assert_equal(user, unserialised_user)
Ejemplo n.º 15
0
def error_is_raised_if_kwarg_field_is_passed_as_positional_arg():
    User = dodge.data_class("User", [
        "username",
        dodge.field("password", keyword_only=True)
    ])
    
    assert_raises_regexp(
        TypeError, "takes 1 positional argument but 2 were given",
        lambda: User("bob", "password2")
    )
Ejemplo n.º 16
0
def flat_list_for_nested_data_classes_contains_all_field_values_as_flat_list():
    Profile = dodge.data_class("Profile", ["bio"])

    User = dodge.data_class("User", [
        "username",
        dodge.field("profile", type=Profile),
    ])

    user = User("bob", Profile("I'm Bob."))

    assert_equal(["bob", "I'm Bob."], dodge.obj_to_flat_list(user))
Ejemplo n.º 17
0
def can_convert_nested_data_classes_to_and_from_dict():
    Profile = dodge.data_class("Profile", ["bio"])

    User = dodge.data_class("User", [
        "username",
        dodge.field("profile", type=Profile),
    ])

    user = User("bob", Profile("I'm Bob."))
    serialised_user = dodge.obj_to_dict(user)
    unserialised_user = dodge.dict_to_obj(serialised_user, User)
    assert_equal(user, unserialised_user)
Ejemplo n.º 18
0
            source_hash=self._package_source.source_hash(),
            params=self.params(),
            platform=generate_platform(),
        )
        
    def _generate_param_part(self, slug, params):
        if slug is None:
            return None
        else:
            return slug.format(**params)


def _generate_install_id_using_hash(package_source, params):
    hasher = Hasher()
    hasher.update(package_source.source_hash())
    hasher.update(json.dumps(params, sort_keys=True))
    return hasher.ascii_digest()


def _uname(arg):
    return local.run(["uname", arg]).output


PackageDescription = dodge.data_class("PackageDescription", [
    "name",
    "source_name",
    "source_hash",
    "params",
    dodge.field("platform", type=Platform),
])