The Swift Package Index logo.Swift Package Index

Build Information

Successful build of SwiftBeanCountSheetSync, reference v1.1.1 (7cd150), with Swift 6.1 for macOS (SPM) on 12 Nov 2025 01:12:41 UTC.

Swift 6 data race errors: 3

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Nef10/SwiftBeanCountSheetSync.git
Reference: v1.1.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Nef10/SwiftBeanCountSheetSync
 * tag               v1.1.1     -> FETCH_HEAD
HEAD is now at 7cd1504 Update Model + Parser
Cloned https://github.com/Nef10/SwiftBeanCountSheetSync.git
Revision (git rev-parse @):
7cd15040c0bb7caa524687b90f6d5e23edd57194
SUCCESS checkout https://github.com/Nef10/SwiftBeanCountSheetSync.git at v1.1.1
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/Nef10/SwiftBeanCountSheetSync.git
https://github.com/Nef10/SwiftBeanCountSheetSync.git
{
  "dependencies" : [
    {
      "identity" : "swiftbeancountmodel",
      "requirement" : {
        "exact" : [
          "0.2.0"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Nef10/SwiftBeanCountModel.git"
    },
    {
      "identity" : "swiftbeancountparser",
      "requirement" : {
        "exact" : [
          "0.1.9"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Nef10/SwiftBeanCountParser.git"
    },
    {
      "identity" : "googleauthentication",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Nef10/GoogleAuthentication.git"
    }
  ],
  "manifest_display_name" : "SwiftBeanCountSheetSync",
  "name" : "SwiftBeanCountSheetSync",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "SwiftBeanCountSheetSync",
      "targets" : [
        "SwiftBeanCountSheetSync"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SwiftBeanCountSheetSyncTests",
      "module_type" : "SwiftTarget",
      "name" : "SwiftBeanCountSheetSyncTests",
      "path" : "Tests/SwiftBeanCountSheetSyncTests",
      "sources" : [
        "SwiftBeanCountSheetSyncTests.swift"
      ],
      "target_dependencies" : [
        "SwiftBeanCountSheetSync"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SwiftBeanCountSheetSync",
      "module_type" : "SwiftTarget",
      "name" : "SwiftBeanCountSheetSync",
      "path" : "Sources/SwiftBeanCountSheetSync",
      "product_dependencies" : [
        "SwiftBeanCountModel",
        "SwiftBeanCountParser",
        "GoogleAuthentication"
      ],
      "product_memberships" : [
        "SwiftBeanCountSheetSync"
      ],
      "sources" : [
        "Downloader.swift",
        "LedgerReader.swift",
        "LedgerSettings.swift",
        "SheetDownloader.swift",
        "SheetParser.swift",
        "Syncer.swift",
        "TransactionMapper.swift",
        "Uploader.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/8] Write sources
[7/8] Write swift-version-2F0A5646E1D333AE.txt
[9/60] Emitting module SwiftBeanCountParserUtils
[10/60] Compiling SwiftBeanCountParserUtils String.swift
[11/60] Compiling OAuthSwift OAuthLogProtocol.swift
[12/60] Compiling OAuthSwift OAuthSwift.swift
[13/61] Compiling OAuthSwift NSError+OAuthSwift.swift
[14/61] Compiling OAuthSwift NotificationCenter+OAuthSwift.swift
[15/61] Compiling OAuthSwift OAuth1Swift.swift
[16/61] Compiling OAuthSwift OAuth2Swift.swift
[17/61] Compiling OAuthSwift Collection+OAuthSwift.swift
[18/61] Compiling OAuthSwift Data+OAuthSwift.swift
[19/61] Emitting module SwiftBeanCountModel
[20/61] Compiling OAuthSwift OAuthSwiftOpenURLExternally.swift
[21/61] Compiling OAuthSwift OAuthSwiftURLHandlerProxy.swift
[22/61] Compiling OAuthSwift Dictionary+OAuthSwift.swift
[23/61] Compiling OAuthSwift HMAC.swift
[24/61] Compiling OAuthSwift ASWebAuthenticationURLHandler.swift
[25/61] Compiling OAuthSwift ExtensionContextURLHandler.swift
[26/61] Compiling OAuthSwift OAuthWebViewController.swift
[27/61] Compiling OAuthSwift SFAuthenticationURLHandler.swift
[28/61] Compiling OAuthSwift SafariURLHandler.swift
[29/61] Compiling OAuthSwift Int+OAuthSwift.swift
[30/61] Compiling KeychainAccess Keychain.swift
[31/61] Emitting module KeychainAccess
[32/61] Compiling SwiftBeanCountModel ValidationResult.swift
[33/77] Emitting module OAuthSwift
[34/80] Compiling OAuthSwift SHA1.swift
[35/80] Compiling OAuthSwift String+OAuthSwift.swift
[36/80] Compiling OAuthSwift UIApplication+OAuthSwift.swift
[37/80] Compiling SwiftBeanCountParser MetaDataParser.swift
[38/80] Compiling SwiftBeanCountParser OptionParser.swift
[43/80] Compiling SwiftBeanCountParser PriceParser.swift
[44/80] Compiling SwiftBeanCountParser PluginParser.swift
[45/80] Compiling SwiftBeanCountParser PostingParser.swift
[48/81] Compiling SwiftBeanCountParser EventParser.swift
[49/81] Compiling SwiftBeanCountParser Collection.swift
[50/81] Compiling SwiftBeanCountParser CommodityParser.swift
[51/81] Compiling SwiftBeanCountParser CostParser.swift
[52/81] Compiling SwiftBeanCountParser AccountParser.swift
[53/81] Compiling SwiftBeanCountParser BalanceParser.swift
[54/81] Compiling SwiftBeanCountParser CustomsParser.swift
[55/81] Compiling SwiftBeanCountParser DateParser.swift
[56/81] Emitting module SwiftBeanCountParser
[57/81] Compiling SwiftBeanCountParser Parser.swift
[58/81] Compiling SwiftBeanCountParser ParserUtils.swift
[59/81] Compiling OAuthSwift URL+OAuthSwift.swift
[60/81] Compiling OAuthSwift URLConvertible.swift
[61/81] Compiling OAuthSwift Utils.swift
[62/81] Compiling SwiftBeanCountParser TransactionMetaDataParser.swift
[67/81] Compiling OAuthSwift OAuthSwiftCredential.swift
[68/81] Compiling OAuthSwift OAuthSwiftError.swift
[69/81] Compiling OAuthSwift OAuthSwiftHTTPRequest.swift
[70/81] Compiling OAuthSwift OAuthSwiftMultipartData.swift
[71/81] Compiling OAuthSwift OAuthSwiftResponse.swift
[72/81] Compiling OAuthSwift OAuthSwiftURLHandlerType.swift
[75/81] Compiling OAuthSwift OAuthSwiftClient.swift
[82/84] Compiling GoogleAuthentication Authentication.swift
[83/84] Emitting module GoogleAuthentication
[84/84] Compiling GoogleAuthentication ASWebAuthenticationURLHandler.swift
[85/93] Compiling SwiftBeanCountSheetSync Uploader.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Uploader.swift:18:26: warning: capture of 'self' with non-sendable type 'Uploader' in a '@Sendable' closure
12 |
13 | /// Uploads transactions from the ledger to the sheet
14 | public class Uploader: GenericSyncer, Syncer {
   |              `- note: class 'Uploader' does not conform to the 'Sendable' protocol
15 |
16 |     public func start(authentication: Authentication, completion: @escaping (Result<SyncResult, Error>) -> Void) {
17 |         DispatchQueue.global(qos: .userInitiated).async { [self] in
18 |             let result = readLedgerSettingsAndTransactions()
   |                          `- warning: capture of 'self' with non-sendable type 'Uploader' in a '@Sendable' closure
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Uploader.swift:20:86: warning: capture of 'authentication' with non-sendable type 'Authentication' in a '@Sendable' closure
18 |             let result = readLedgerSettingsAndTransactions()
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
   |                                                                                      `- warning: capture of 'authentication' with non-sendable type 'Authentication' in a '@Sendable' closure
21 |                     switch sheetTransactions {
22 |                     case .success(let (sheetTransactions, sheetParserErrors)):
/Users/admin/builder/spi-builder-workspace/.build/checkouts/GoogleAuthentication/Sources/GoogleAuthentication/Authentication.swift:15:14: note: class 'Authentication' does not conform to the 'Sendable' protocol
 13 |
 14 | /// Wraper around OAuthSwift and KeychainAccess to authenticate to Google APIs while automatically saving the tokens into the keychain
 15 | public class Authentication {
    |              `- note: class 'Authentication' does not conform to the 'Sendable' protocol
 16 |
 17 |     private static let keychainKey = "googleOAuthCredentials"
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Uploader.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'GoogleAuthentication'
 8 |
 9 | import Foundation
10 | import GoogleAuthentication
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'GoogleAuthentication'
11 | import SwiftBeanCountModel
12 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Uploader.swift:35:13: warning: capture of 'completion' with non-sendable type '(Result<SyncResult, any Error>) -> Void' in a '@Sendable' closure
33 |                     }
34 |                 }
35 |             completion(result)
   |             |- warning: capture of 'completion' with non-sendable type '(Result<SyncResult, any Error>) -> Void' in a '@Sendable' closure
   |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
36 |         }
37 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Uploader.swift:20:45: warning: capture of 'self' with non-sendable type 'Uploader' in an isolated closure; this is an error in the Swift 6 language mode
12 |
13 | /// Uploads transactions from the ledger to the sheet
14 | public class Uploader: GenericSyncer, Syncer {
   |              `- note: class 'Uploader' does not conform to the 'Sendable' protocol
15 |
16 |     public func start(authentication: Authentication, completion: @escaping (Result<SyncResult, Error>) -> Void) {
   :
18 |             let result = readLedgerSettingsAndTransactions()
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
   |                                             `- warning: capture of 'self' with non-sendable type 'Uploader' in an isolated closure; this is an error in the Swift 6 language mode
21 |                     switch sheetTransactions {
22 |                     case .success(let (sheetTransactions, sheetParserErrors)):
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Uploader.swift:20:86: warning: capture of 'authentication' with non-sendable type 'Authentication' in an isolated closure; this is an error in the Swift 6 language mode
18 |             let result = readLedgerSettingsAndTransactions()
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
   |                                                                                      `- warning: capture of 'authentication' with non-sendable type 'Authentication' in an isolated closure; this is an error in the Swift 6 language mode
21 |                     switch sheetTransactions {
22 |                     case .success(let (sheetTransactions, sheetParserErrors)):
/Users/admin/builder/spi-builder-workspace/.build/checkouts/GoogleAuthentication/Sources/GoogleAuthentication/Authentication.swift:15:14: note: class 'Authentication' does not conform to the 'Sendable' protocol
 13 |
 14 | /// Wraper around OAuthSwift and KeychainAccess to authenticate to Google APIs while automatically saving the tokens into the keychain
 15 | public class Authentication {
    |              `- note: class 'Authentication' does not conform to the 'Sendable' protocol
 16 |
 17 |     private static let keychainKey = "googleOAuthCredentials"
[86/93] Compiling SwiftBeanCountSheetSync TransactionMapper.swift
[87/93] Compiling SwiftBeanCountSheetSync LedgerReader.swift
[88/93] Compiling SwiftBeanCountSheetSync Syncer.swift
[89/93] Compiling SwiftBeanCountSheetSync SheetDownloader.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/SheetDownloader.swift:39:24: warning: capture of 'result' with non-sendable type 'Result<OAuthSwiftResponse, OAuthSwiftError>' in a '@Sendable' closure
37 |         authentication.startAuthorizedGETRequest("https://sheets.googleapis.com/v4/spreadsheets/\(id)/values/\(area)") { result in
38 |             DispatchQueue.global(qos: .userInitiated).async {
39 |                 switch result {
   |                        `- warning: capture of 'result' with non-sendable type 'Result<OAuthSwiftResponse, OAuthSwiftError>' in a '@Sendable' closure
40 |                 case .success(let response):
41 |                     guard let data = try? JSONSerialization.jsonObject(with: response.data, options: []) as? [String: Any], let values = data["values"] as? [[String]] else {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/OAuthSwift/Sources/OAuthSwiftResponse.swift:13:14: note: class 'OAuthSwiftResponse' does not conform to the 'Sendable' protocol
11 | /// Response object
12 | @objc
13 | public class OAuthSwiftResponse: NSObject { // not a struct for objc
   |              `- note: class 'OAuthSwiftResponse' does not conform to the 'Sendable' protocol
14 |     /// The data returned by the server.
15 |     public var data: Data
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/SheetDownloader.swift:42:25: warning: capture of 'completion' with non-sendable type '(Result<[[String]], SheetDownloader.DownloaderError>) -> Void' in a '@Sendable' closure
40 |                 case .success(let response):
41 |                     guard let data = try? JSONSerialization.jsonObject(with: response.data, options: []) as? [String: Any], let values = data["values"] as? [[String]] else {
42 |                         completion(.failure(.unableToParseResponse("Unable to parse response: \(response.dataString() ?? "")")))
   |                         |- warning: capture of 'completion' with non-sendable type '(Result<[[String]], SheetDownloader.DownloaderError>) -> Void' in a '@Sendable' closure
   |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
43 |                         return
44 |                     }
[90/93] Compiling SwiftBeanCountSheetSync LedgerSettings.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/LedgerSettings.swift:27:16: warning: static property 'fallbackAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
25 | public struct LedgerSettings {
26 |
27 |     static let fallbackAccountName = try! AccountName("Expenses:TODO") // swiftlint:disable:this force_try
   |                `- warning: static property 'fallbackAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
28 |     static let ownAccountName = try! AccountName("Assets:TODO") // swiftlint:disable:this force_try
29 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/SwiftBeanCountModel/Sources/SwiftBeanCountModel/AccountName.swift:18:15: note: struct 'AccountName' does not conform to the 'Sendable' protocol
 16 |
 17 | /// Struct with represents just the name of an Account
 18 | public struct AccountName: AccountItem {
    |               `- note: struct 'AccountName' does not conform to the 'Sendable' protocol
 19 |
 20 |     /// Full quilified name of the account, e.g. Assets:Cash:CAD
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/LedgerSettings.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'SwiftBeanCountModel'
 8 |
 9 | import Foundation
10 | import SwiftBeanCountModel
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'SwiftBeanCountModel'
11 |
12 | enum LedgerSettingsConstants {
   :
25 | public struct LedgerSettings {
26 |
27 |     static let fallbackAccountName = try! AccountName("Expenses:TODO") // swiftlint:disable:this force_try
   |                |- note: add '@MainActor' to make static property 'fallbackAccountName' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     static let ownAccountName = try! AccountName("Assets:TODO") // swiftlint:disable:this force_try
29 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/LedgerSettings.swift:28:16: warning: static property 'ownAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
26 |
27 |     static let fallbackAccountName = try! AccountName("Expenses:TODO") // swiftlint:disable:this force_try
28 |     static let ownAccountName = try! AccountName("Assets:TODO") // swiftlint:disable:this force_try
   |                |- warning: static property 'ownAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: add '@MainActor' to make static property 'ownAccountName' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
29 |
30 |     /// Commodity symbol for all transactions - The syncronization only supports one commodity
/Users/admin/builder/spi-builder-workspace/.build/checkouts/SwiftBeanCountModel/Sources/SwiftBeanCountModel/AccountName.swift:18:15: note: struct 'AccountName' does not conform to the 'Sendable' protocol
 16 |
 17 | /// Struct with represents just the name of an Account
 18 | public struct AccountName: AccountItem {
    |               `- note: struct 'AccountName' does not conform to the 'Sendable' protocol
 19 |
 20 |     /// Full quilified name of the account, e.g. Assets:Cash:CAD
[91/93] Emitting module SwiftBeanCountSheetSync
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/LedgerSettings.swift:27:16: warning: static property 'fallbackAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
25 | public struct LedgerSettings {
26 |
27 |     static let fallbackAccountName = try! AccountName("Expenses:TODO") // swiftlint:disable:this force_try
   |                `- warning: static property 'fallbackAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
28 |     static let ownAccountName = try! AccountName("Assets:TODO") // swiftlint:disable:this force_try
29 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/SwiftBeanCountModel/Sources/SwiftBeanCountModel/AccountName.swift:18:15: note: struct 'AccountName' does not conform to the 'Sendable' protocol
 16 |
 17 | /// Struct with represents just the name of an Account
 18 | public struct AccountName: AccountItem {
    |               `- note: struct 'AccountName' does not conform to the 'Sendable' protocol
 19 |
 20 |     /// Full quilified name of the account, e.g. Assets:Cash:CAD
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/LedgerSettings.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'SwiftBeanCountModel'
 8 |
 9 | import Foundation
10 | import SwiftBeanCountModel
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'SwiftBeanCountModel'
11 |
12 | enum LedgerSettingsConstants {
   :
25 | public struct LedgerSettings {
26 |
27 |     static let fallbackAccountName = try! AccountName("Expenses:TODO") // swiftlint:disable:this force_try
   |                |- note: add '@MainActor' to make static property 'fallbackAccountName' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     static let ownAccountName = try! AccountName("Assets:TODO") // swiftlint:disable:this force_try
29 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/LedgerSettings.swift:28:16: warning: static property 'ownAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
26 |
27 |     static let fallbackAccountName = try! AccountName("Expenses:TODO") // swiftlint:disable:this force_try
28 |     static let ownAccountName = try! AccountName("Assets:TODO") // swiftlint:disable:this force_try
   |                |- warning: static property 'ownAccountName' is not concurrency-safe because non-'Sendable' type 'AccountName' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: add '@MainActor' to make static property 'ownAccountName' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
29 |
30 |     /// Commodity symbol for all transactions - The syncronization only supports one commodity
/Users/admin/builder/spi-builder-workspace/.build/checkouts/SwiftBeanCountModel/Sources/SwiftBeanCountModel/AccountName.swift:18:15: note: struct 'AccountName' does not conform to the 'Sendable' protocol
 16 |
 17 | /// Struct with represents just the name of an Account
 18 | public struct AccountName: AccountItem {
    |               `- note: struct 'AccountName' does not conform to the 'Sendable' protocol
 19 |
 20 |     /// Full quilified name of the account, e.g. Assets:Cash:CAD
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/SheetParser.swift:50:24: warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 48 |     }
 49 |
 50 |     private static var dateFormatter: DateFormatter = {
    |                        |- warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'dateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'dateFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 51 |         var dateFormatter = DateFormatter()
 52 |         dateFormatter.dateFormat = "yyyy-MM-dd"
[92/93] Compiling SwiftBeanCountSheetSync SheetParser.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/SheetParser.swift:50:24: warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 48 |     }
 49 |
 50 |     private static var dateFormatter: DateFormatter = {
    |                        |- warning: static property 'dateFormatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'dateFormatter' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: add '@MainActor' to make static property 'dateFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 51 |         var dateFormatter = DateFormatter()
 52 |         dateFormatter.dateFormat = "yyyy-MM-dd"
[93/93] Compiling SwiftBeanCountSheetSync Downloader.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Downloader.swift:18:26: warning: capture of 'self' with non-sendable type 'Downloader' in a '@Sendable' closure
12 |
13 | /// Downloads transactions from the Sheet and merges them into transactions in the ledgers
14 | public class Downloader: GenericSyncer, Syncer {
   |              `- note: class 'Downloader' does not conform to the 'Sendable' protocol
15 |
16 |     public func start(authentication: Authentication, completion: @escaping (Result<SyncResult, Error>) -> Void) {
17 |         DispatchQueue.global(qos: .userInitiated).async { [self] in
18 |             let result = readLedgerSettingsAndTransactions()
   |                          `- warning: capture of 'self' with non-sendable type 'Downloader' in a '@Sendable' closure
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Downloader.swift:20:86: warning: capture of 'authentication' with non-sendable type 'Authentication' in a '@Sendable' closure
18 |             let result = readLedgerSettingsAndTransactions()
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
   |                                                                                      `- warning: capture of 'authentication' with non-sendable type 'Authentication' in a '@Sendable' closure
21 |                     switch sheetTransactions {
22 |                     case .success(let (sheetTransactions, sheetParserErrors)):
/Users/admin/builder/spi-builder-workspace/.build/checkouts/GoogleAuthentication/Sources/GoogleAuthentication/Authentication.swift:15:14: note: class 'Authentication' does not conform to the 'Sendable' protocol
 13 |
 14 | /// Wraper around OAuthSwift and KeychainAccess to authenticate to Google APIs while automatically saving the tokens into the keychain
 15 | public class Authentication {
    |              `- note: class 'Authentication' does not conform to the 'Sendable' protocol
 16 |
 17 |     private static let keychainKey = "googleOAuthCredentials"
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Downloader.swift:10:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'GoogleAuthentication'
 8 |
 9 | import Foundation
10 | import GoogleAuthentication
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'GoogleAuthentication'
11 | import SwiftBeanCountModel
12 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Downloader.swift:36:13: warning: capture of 'completion' with non-sendable type '(Result<SyncResult, any Error>) -> Void' in a '@Sendable' closure
34 |                     }
35 |                 }
36 |             completion(result)
   |             |- warning: capture of 'completion' with non-sendable type '(Result<SyncResult, any Error>) -> Void' in a '@Sendable' closure
   |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
37 |         }
38 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Downloader.swift:20:45: warning: capture of 'self' with non-sendable type 'Downloader' in an isolated closure; this is an error in the Swift 6 language mode
12 |
13 | /// Downloads transactions from the Sheet and merges them into transactions in the ledgers
14 | public class Downloader: GenericSyncer, Syncer {
   |              `- note: class 'Downloader' does not conform to the 'Sendable' protocol
15 |
16 |     public func start(authentication: Authentication, completion: @escaping (Result<SyncResult, Error>) -> Void) {
   :
18 |             let result = readLedgerSettingsAndTransactions()
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
   |                                             `- warning: capture of 'self' with non-sendable type 'Downloader' in an isolated closure; this is an error in the Swift 6 language mode
21 |                     switch sheetTransactions {
22 |                     case .success(let (sheetTransactions, sheetParserErrors)):
/Users/admin/builder/spi-builder-workspace/Sources/SwiftBeanCountSheetSync/Downloader.swift:20:86: warning: capture of 'authentication' with non-sendable type 'Authentication' in an isolated closure; this is an error in the Swift 6 language mode
18 |             let result = readLedgerSettingsAndTransactions()
19 |                 .flatMap { ledgerTransactions, ledgerSettings -> Result<SyncResult, Error> in
20 |                     let sheetTransactions = getTransactionsFromSheet(authentication: authentication, ledgerSettings: ledgerSettings)
   |                                                                                      `- warning: capture of 'authentication' with non-sendable type 'Authentication' in an isolated closure; this is an error in the Swift 6 language mode
21 |                     switch sheetTransactions {
22 |                     case .success(let (sheetTransactions, sheetParserErrors)):
/Users/admin/builder/spi-builder-workspace/.build/checkouts/GoogleAuthentication/Sources/GoogleAuthentication/Authentication.swift:15:14: note: class 'Authentication' does not conform to the 'Sendable' protocol
 13 |
 14 | /// Wraper around OAuthSwift and KeychainAccess to authenticate to Google APIs while automatically saving the tokens into the keychain
 15 | public class Authentication {
    |              `- note: class 'Authentication' does not conform to the 'Sendable' protocol
 16 |
 17 |     private static let keychainKey = "googleOAuthCredentials"
Build complete! (33.84s)
Fetching https://github.com/Nef10/GoogleAuthentication.git
Fetching https://github.com/Nef10/SwiftBeanCountModel.git
Fetching https://github.com/Nef10/SwiftBeanCountParser.git
[1/2374] Fetching swiftbeancountparser
[453/3512] Fetching swiftbeancountparser, googleauthentication
[1083/7254] Fetching swiftbeancountparser, googleauthentication, swiftbeancountmodel
Fetched https://github.com/Nef10/SwiftBeanCountParser.git from cache (2.63s)
Fetched https://github.com/Nef10/GoogleAuthentication.git from cache (2.63s)
Fetched https://github.com/Nef10/SwiftBeanCountModel.git from cache (2.63s)
Computing version for https://github.com/Nef10/GoogleAuthentication.git
Computed https://github.com/Nef10/GoogleAuthentication.git at 1.0.3 (3.24s)
Fetching https://github.com/kishikawakatsumi/KeychainAccess.git
Fetching https://github.com/OAuthSwift/OAuthSwift.git
[1/4386] Fetching keychainaccess
[45/9534] Fetching keychainaccess, oauthswift
Fetched https://github.com/kishikawakatsumi/KeychainAccess.git from cache (1.33s)
Fetched https://github.com/OAuthSwift/OAuthSwift.git from cache (1.33s)
Computing version for https://github.com/Nef10/SwiftBeanCountParser.git
Computed https://github.com/Nef10/SwiftBeanCountParser.git at 0.1.9 (1.94s)
Fetching https://github.com/Nef10/SwiftBeanCountParserUtils.git
[1/969] Fetching swiftbeancountparserutils
Fetched https://github.com/Nef10/SwiftBeanCountParserUtils.git from cache (0.80s)
Computing version for https://github.com/Nef10/SwiftBeanCountModel.git
Computed https://github.com/Nef10/SwiftBeanCountModel.git at 0.2.0 (1.39s)
Computing version for https://github.com/OAuthSwift/OAuthSwift.git
Computed https://github.com/OAuthSwift/OAuthSwift.git at 2.2.0 (0.61s)
Fetching https://github.com/tid-kijyun/Kanna.git
Fetching https://github.com/httpswift/swifter.git
Fetching https://github.com/phimage/Erik.git
[1/642] Fetching erik
[168/3032] Fetching erik, kanna
[481/9082] Fetching erik, kanna, swifter
Fetched https://github.com/phimage/Erik.git from cache (0.79s)
[2712/8440] Fetching kanna, swifter
Fetched https://github.com/httpswift/swifter.git from cache (1.41s)
Fetched https://github.com/tid-kijyun/Kanna.git from cache (1.41s)
Computing version for https://github.com/Nef10/SwiftBeanCountParserUtils.git
Computed https://github.com/Nef10/SwiftBeanCountParserUtils.git at 1.0.0 (2.02s)
Computing version for https://github.com/httpswift/swifter.git
Computed https://github.com/httpswift/swifter.git at 1.5.0 (0.59s)
Computing version for https://github.com/kishikawakatsumi/KeychainAccess.git
Computed https://github.com/kishikawakatsumi/KeychainAccess.git at 4.2.2 (0.61s)
Computing version for https://github.com/phimage/Erik.git
Computed https://github.com/phimage/Erik.git at 5.1.0 (0.57s)
Fetching https://github.com/Thomvis/BrightFutures.git
Fetching https://github.com/nvzqz/FileKit.git
[1/4067] Fetching brightfutures
[42/7190] Fetching brightfutures, filekit
Fetched https://github.com/nvzqz/FileKit.git from cache (1.61s)
Fetched https://github.com/Thomvis/BrightFutures.git from cache (1.61s)
Computing version for https://github.com/nvzqz/FileKit.git
Computed https://github.com/nvzqz/FileKit.git at 6.1.0 (2.23s)
Computing version for https://github.com/Thomvis/BrightFutures.git
Computed https://github.com/Thomvis/BrightFutures.git at 8.2.0 (0.57s)
Computing version for https://github.com/tid-kijyun/Kanna.git
Computed https://github.com/tid-kijyun/Kanna.git at 5.3.0 (0.58s)
Creating working copy for https://github.com/Thomvis/BrightFutures.git
Working copy of https://github.com/Thomvis/BrightFutures.git resolved at 8.2.0
Creating working copy for https://github.com/phimage/Erik.git
Working copy of https://github.com/phimage/Erik.git resolved at 5.1.0
Creating working copy for https://github.com/kishikawakatsumi/KeychainAccess.git
Working copy of https://github.com/kishikawakatsumi/KeychainAccess.git resolved at 4.2.2
Creating working copy for https://github.com/httpswift/swifter.git
Working copy of https://github.com/httpswift/swifter.git resolved at 1.5.0
Creating working copy for https://github.com/OAuthSwift/OAuthSwift.git
Working copy of https://github.com/OAuthSwift/OAuthSwift.git resolved at 2.2.0
Creating working copy for https://github.com/tid-kijyun/Kanna.git
Working copy of https://github.com/tid-kijyun/Kanna.git resolved at 5.3.0
Creating working copy for https://github.com/Nef10/SwiftBeanCountParserUtils.git
Working copy of https://github.com/Nef10/SwiftBeanCountParserUtils.git resolved at 1.0.0
Creating working copy for https://github.com/Nef10/GoogleAuthentication.git
Working copy of https://github.com/Nef10/GoogleAuthentication.git resolved at 1.0.3
Creating working copy for https://github.com/Nef10/SwiftBeanCountModel.git
Working copy of https://github.com/Nef10/SwiftBeanCountModel.git resolved at 0.2.0
Creating working copy for https://github.com/Nef10/SwiftBeanCountParser.git
Working copy of https://github.com/Nef10/SwiftBeanCountParser.git resolved at 0.1.9
Creating working copy for https://github.com/nvzqz/FileKit.git
Working copy of https://github.com/nvzqz/FileKit.git resolved at 6.1.0
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swiftbeancountmodel",
      "requirement" : {
        "exact" : [
          "0.2.0"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Nef10/SwiftBeanCountModel.git"
    },
    {
      "identity" : "swiftbeancountparser",
      "requirement" : {
        "exact" : [
          "0.1.9"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Nef10/SwiftBeanCountParser.git"
    },
    {
      "identity" : "googleauthentication",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Nef10/GoogleAuthentication.git"
    }
  ],
  "manifest_display_name" : "SwiftBeanCountSheetSync",
  "name" : "SwiftBeanCountSheetSync",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "SwiftBeanCountSheetSync",
      "targets" : [
        "SwiftBeanCountSheetSync"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SwiftBeanCountSheetSyncTests",
      "module_type" : "SwiftTarget",
      "name" : "SwiftBeanCountSheetSyncTests",
      "path" : "Tests/SwiftBeanCountSheetSyncTests",
      "sources" : [
        "SwiftBeanCountSheetSyncTests.swift"
      ],
      "target_dependencies" : [
        "SwiftBeanCountSheetSync"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SwiftBeanCountSheetSync",
      "module_type" : "SwiftTarget",
      "name" : "SwiftBeanCountSheetSync",
      "path" : "Sources/SwiftBeanCountSheetSync",
      "product_dependencies" : [
        "SwiftBeanCountModel",
        "SwiftBeanCountParser",
        "GoogleAuthentication"
      ],
      "product_memberships" : [
        "SwiftBeanCountSheetSync"
      ],
      "sources" : [
        "Downloader.swift",
        "LedgerReader.swift",
        "LedgerSettings.swift",
        "SheetDownloader.swift",
        "SheetParser.swift",
        "Syncer.swift",
        "TransactionMapper.swift",
        "Uploader.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.