<commit_before>class CompUnit::DependencySpecification {
    has str $.short-name  is built(:bind) is required;  # must be native
    has str $.from        is built(:bind) = 'Perl6';    # must be native
    has $.version-matcher is built(:bind) = True;
    has $.auth-matcher    is built(:bind) = True;
    has $.api-matcher     is built(:bind) = True;

    # Oddly enough, the exact format of this method can make / break
    # dependency testing.  This should probably depend on the .WHICH.
    method Str(CompUnit::DependencySpecification:D: --> Str:D) {
        my $parts := nqp::list_s($!short-name);
        nqp::push_s($parts,":from<$!from>")
          if $!from ne 'Perl6';
        nqp::push_s($parts,":ver<$!version-matcher>")
          unless nqp::eqaddr($!version-matcher,True);
        nqp::push_s($parts,":auth<$!auth-matcher>")
          unless nqp::eqaddr($!auth-matcher,True);
        nqp::push_s($parts,":api<$!api-matcher>")
          unless nqp::eqaddr($!api-matcher,True);
        nqp::join('',$parts)
    }

    multi method WHICH(CompUnit::DependencySpecification:D) {
        nqp::box_s(
          nqp::concat(
            nqp::concat(self.^name, '|'),
            self.Str<commit_msg>Give CompUnit::DependencySpecification a smarter .raku<commit_after>class CompUnit::DependencySpecification {
    has str $.short-name  is built(:bind) is required;  # must be native
    has str $.from        is built(:bind) = 'Perl6';    # must be native
    has $.version-matcher is built(:bind) = True;
    has $.auth-matcher    is built(:bind) = True;
    has $.api-matcher     is built(:bind) = True;

    # Oddly enough, the exact format of this method can make / break
    # dependency testing.  This should probably depend on the .WHICH.
    method Str(CompUnit::DependencySpecification:D: --> Str:D) {
        my $parts := nqp::list_s($!short-name);
        nqp::push_s($parts,":from<$!from>")
          if $!from ne 'Perl6';
        nqp::push_s($parts,":ver<$!version-matcher>")
          unless nqp::eqaddr($!version-matcher,True);
        nqp::push_s($parts,":auth<$!auth-matcher>")
          unless nqp::eqaddr($!auth-matcher,True);
        nqp::push_s($parts,":api<$!api-matcher>")
          unless nqp::eqaddr($!api-matcher,True);
        nqp::join('',$parts)
    }

    multi method raku(CompUnit::DependencySpecification:D: --> Str:D) {
        my $parts := nqp::list_s(
          "CompUnit::DependencySpecification.new(:short-name<$!short-name>"
        );
        nqp::push_s($parts,",:from<$!from>")
          if $!from ne 'Perl6';
        nqp::push_s($parts,",:version-matcher<$!version-matcher>")
          unless nqp::eqaddr($!version-matcher,True);
        nqp::push_s($parts,",:auth-matcher<$!auth-matcher>")
          unless nqp::eqaddr($!auth-matcher,True);
        nqp::push_s($parts,",:api-matcher<$!api-matcher>")
          unless nqp::eqaddr($!api-matcher,True);
        nqp::push_s($parts,')');
        nqp::join('',$parts)
    }

    multi method WHICH(CompUnit::DependencySpecification:D --> ValueObjAt:D) {
        nqp::box_s(
          nqp::concat(
            nqp::concat(self.^name, '|'),
            self.Str
{'fraction_non_alphanumeric': 0.17305863708399366, 'fraction_numerical': 0.001584786053882726, 'mean_word_length': 2.9156327543424316, 'pattern_counts': {'":': 8, '<': 16, '<?xml version=': 0, '>': 20, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '970879', 'n_tokens_mistral': 1063, 'n_tokens_neox': 1058, 'n_words': 196}