<commit_before>import HTTP
import Node
import Debugging

/// A basic conformance to `AbortError` for
/// convenient error throwing
public struct Abort: AbortError, Debuggable {
    public let status: Status
    public let metadata: Node?

    // MARK: Debuggable

    /// See Debuggable.readableName
    public static let readableName = "Abort request error"

    /// See AbortError.reason
    public let reason: String

    /// See Debuggable.identifier
    public let identifier: String

    /// See Debuggable.possibleCauses
    public let possibleCauses: [String]

    /// See Debuggable.possibleCauses
    public let suggestedFixes: [String]

    /// See Debuggable.documentationLinks
    public let documentationLinks: [String]

    /// See Debuggable.stackOverflowQuestions
    public let stackOverflowQuestions: [String]

    /// See Debuggable.gitHubIssues
    public let gitHubIssues: [String]
    
    /// File in which the error was thrown
    public let file: String
    
    /// Line number at which the error was thrown
    public let line: Int
    
    /// The column at which the error was thrown
    public let column: Int
    
    /// The function in which the error was thrown
    public let function: String

    public init(
        _ status: Status,
        metadata: Node? = nil,
        // Debuggable
        reason: String? = nil,
        identifier: String? = nil,
        possibleCauses: [String]? = nil,
        suggestedFixes: [String]? = nil,
        documentationLinks: [String]? = nil,
        stackOverflowQuestions: [String]? = nil,
        gitHubIssues: [String]? = nil,
        file: String = #file,
        line: Int = #line,
        column: Int = #column,
        function: String = #function
    ) {
        self.status = status
        self.metadata = metadata
        self.reason = reason ?? status.reasonPhrase
        self.identifier = identifier ?? "\(status)"
        self.possibleCauses = possibleCauses ?? []
        self.suggestedFixes = suggestedFixes ?? []
        self.documentationLinks = documentationLinks ?? []
        self.stackOverflowQuestions = stackOverflowQuestions ?? []
        self.gitHubIssues = gitHubIssues ?? []
        self.file = file
        self.line = line
    }
<commit_msg>test w/ setting properties<commit_after>import HTTP
import Node
import Debugging

/// A basic conformance to `AbortError` for
/// convenient error throwing
public struct Abort: AbortError, Debuggable {
    public let status: Status
    public let metadata: Node?

    // MARK: Debuggable

    /// See Debuggable.readableName
    public static let readableName = "Abort request error"

    /// See AbortError.reason
    public let reason: String

    /// See Debuggable.identifier
    public let identifier: String

    /// See Debuggable.possibleCauses
    public let possibleCauses: [String]

    /// See Debuggable.possibleCauses
    public let suggestedFixes: [String]

    /// See Debuggable.documentationLinks
    public let documentationLinks: [String]

    /// See Debuggable.stackOverflowQuestions
    public let stackOverflowQuestions: [String]

    /// See Debuggable.gitHubIssues
    public let gitHubIssues: [String]
    
    /// File in which the error was thrown
    public let file: String
    
    /// Line number at which the error was thrown
    public let line: Int
    
    /// The column at which the error was thrown
    public let column: Int
    
    /// The function in which the error was thrown
    /// TODO: waiting on https://bugs.swift.org/browse/SR-5380
    public let function: String

    public init(
        _ status: Status,
        metadata: Node? = nil,
        // Debuggable
        reason: String? = nil,
        identifier: String? = nil,
        possibleCauses: [String]? = nil,
        suggestedFixes: [String]? = nil,
        documentationLinks: [String]? = nil,
        stackOverflowQuestions: [String]? = nil,
        gitHubIssues: [String]? = nil,
        file: String = #file,
        line: Int = #line,
        column: Int = #column,
        /// See TODO in property decl
        function: String = #function
    ) {
        self.status = status
        self.metadata = metadata
        self.reason = reason ?? status.reasonPhrase
        self.identifier = identifier ?? "\(status)"
        self.possibleCauses = possibleCauses ?? []
        self.suggestedFixes = suggestedFixes ?? []
        self.documentationLinks = documentationLinks ?? []
        self.stackOverflowQuestions = stackOverflowQuestions ?? []
        self.gitHubIssues = gitHubIssues ?? []
        self.file = file
        self.line = line
        self.column = column
        self.function = function
    }

{'fraction_non_alphanumeric': 0.09199828840393667, 'fraction_numerical': 0.0008557980316645272, 'mean_word_length': 2.3369022127052106, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, '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': '3806226', 'n_tokens_mistral': 1278, 'n_tokens_neox': 1230, 'n_words': 402}