<commit_before>#lang racket/base
(require racket/contract/base racket/serialize)

(define-serializable-struct url
  (scheme user host port path-absolute? path query fragment)
  #:mutable
  #:transparent)
(define-serializable-struct path/param (path param))

(provide/contract
 (struct url ([scheme (or/c false/c string?)]
              [user (or/c false/c string?)]
              [host (or/c false/c string?)]
              [port (or/c false/c number?)]
              [path-absolute? boolean?]
              [path (listof path/param?)]
              [query (listof (cons/c symbol? (or/c string? false/c)))]
              [fragment (or/c false/c string?)]))
 (struct path/param ([path (or/c string? (symbols 'up 'same))]
                     [param (listof string?)])))<commit_msg>make path/param transparent<commit_after>#lang racket/base
(require racket/contract/base racket/serialize)

(define-serializable-struct url
  (scheme user host port path-absolute? path query fragment)
  #:mutable
  #:transparent)
(define-serializable-struct path/param (path param)
  #:transparent)

(provide/contract
 (struct url ([scheme (or/c false/c string?)]
              [user (or/c false/c string?)]
              [host (or/c false/c string?)]
              [port (or/c false/c number?)]
              [path-absolute? boolean?]
              [path (listof path/param?)]
              [query (listof (cons/c symbol? (or/c string? false/c)))]
              [fragment (or/c false/c string?)]))
 (struct path/param ([path (or/c string? (symbols 'up 'same))]
                     [param (listof string?)])))
{'fraction_non_alphanumeric': 0.14654088050314465, 'fraction_numerical': 0.0, 'mean_word_length': 2.512141280353201, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, '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': '4993480', 'n_tokens_mistral': 498, 'n_tokens_neox': 480, 'n_words': 136}