The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of SwiftWeather with Swift 5.10 for macOS (SPM).

Build Command

env DEVELOPER_DIR=/Applications/Xcode-15.4.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.41.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/wadetregaskis/SwiftWeather.git
Reference: main
Initialized empty Git repository in /Users/builder/builds/UKfvDsi8u/3/finestructure/swiftpackageindex-builder/spi-builder-workspace/.git/
From https://github.com/wadetregaskis/SwiftWeather
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 827b5b3 Added "Unit" prefixes to the custom units, as it Foundation's convention.
Cloned https://github.com/wadetregaskis/SwiftWeather.git
Revision (git rev-parse @):
827b5b3dbd27c9362bc3517e28d668e9cf735180
SPI manifest file found: $workDir/.spi.yml
SUCCESS checkout https://github.com/wadetregaskis/SwiftWeather.git at main
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/builder/builds/UKfvDsi8u/3/finestructure/swiftpackageindex-builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/builder/builds/UKfvDsi8u/3/finestructure/swiftpackageindex-builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "swiftweather",
      "name": "SwiftWeather",
      "url": "https://github.com/wadetregaskis/SwiftWeather.git",
      "version": "unspecified",
      "path": "/Users/builder/builds/UKfvDsi8u/3/finestructure/swiftpackageindex-builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SwiftWeather",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/wadetregaskis/SwiftWeather.git from cache
Fetched https://github.com/wadetregaskis/SwiftWeather.git from cache (0.22s)
Creating working copy for https://github.com/wadetregaskis/SwiftWeather.git
Working copy of https://github.com/wadetregaskis/SwiftWeather.git resolved at main (827b5b3)
warning: '.resolve-product-dependencies': dependency 'swiftweather' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             5.10
Building package at path:  $workDir
https://github.com/wadetregaskis/SwiftWeather.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.4.0.app xcrun swift build --arch arm64
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-33747A42983211AE.txt
[3/18] Emitting module SwiftWeather
[4/20] Compiling SwiftWeather WundergroundDevice.swift
[5/20] Compiling SwiftWeather WundergroundError.swift
[6/20] Compiling SwiftWeather Data+String.swift
[7/20] Compiling SwiftWeather Unit+Custom.swift
[8/20] Compiling SwiftWeather WeatherErrors.swift
[9/20] Compiling SwiftWeather WeatherSensor.swift
[10/20] Compiling SwiftWeather AmbientWeatherStationGeolocation.swift
[11/20] Compiling SwiftWeather AmbientWeatherStationInfo.swift
[12/20] Compiling SwiftWeather AmbientWeatherSensor.swift
[13/20] Compiling SwiftWeather AmbientWeatherStationGeoType.swift
[14/20] Compiling SwiftWeather Zip.swift
[15/20] Compiling SwiftWeather SwiftWeather.swift
[16/20] Compiling SwiftWeather Wunderground.swift
[17/20] Compiling SwiftWeather WundergroundCurrentReport.swift
[18/20] Compiling SwiftWeather AmbientWeather.swift
[19/20] Compiling SwiftWeather AmbientWeatherDevice.swift
[20/20] Compiling SwiftWeather AmbientWeatherReport.swift
Build complete! (3.57s)
Build complete.
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $workDir/.docs/wadetregaskis/swiftweather/main
Repository:               wadetregaskis/SwiftWeather
Swift version used:       5.10
Target:                   SwiftWeather
Generating documentation for 'SwiftWeather'...
Converting documentation...
warning: 'init' doesn't exist at '/SwiftWeather/AmbientWeather/defaultConfiguration'
   --> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:135:66-135:70
133 |     internal let session: URLSession
134 |
135 +     /// The default network connectivity configuration used by ``init``.
136 |     ///
137 |     /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
warning: 'URLSessionConfiguration' doesn't exist at '/SwiftWeather/AmbientWeather/defaultConfiguration'
   --> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:137:30-137:53
135 |     /// The default network connectivity configuration used by ``init``.
136 |     ///
137 +     /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
138 |     ///
139 |     /// Some configuration options are particularly important for correct function, such as turning off concurrent connections in order to lessen the probability of rate-limiting errors from the AmbientWeather API.  Be conservative about what you change, and test thoroughly.
warning: 'WeatherError.invalidAPIKey' doesn't exist at '/SwiftWeather/AmbientWeather/init(applicationKey:apiKey:sessionConfiguration:)'
   --> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:169:21-169:47
167 |     /// - Parameter apiKey: The API (user) key.  This is a key assigned to each of your users, that functions essentially as their access credientials.  Typically you do _not_ hard-code this into your application, but rather require your users to input it.  You may wish to direct your users to https://ambientweather.net/account to create their API keys.
168 |     /// - Parameter sessionConfiguration: An optional configuration to use for network connectivity.  Generally if you wish to customise this you should start with ``defaultConfiguration`` and customise that, in order to inherit any settings which are important to correct function.
169 +     /// - Throws: ``WeatherError.invalidAPIKey`` or ``AmbientWeatherError.invalidApplicationKey`` if either of the keys are obviously invalid (e.g. blank).
170 |     public init(applicationKey: String,
171 |                 apiKey: String,
warning: 'AmbientWeatherError.invalidApplicationKey' doesn't exist at '/SwiftWeather/AmbientWeather/init(applicationKey:apiKey:sessionConfiguration:)'
   --> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:169:55-169:96
167 |     /// - Parameter apiKey: The API (user) key.  This is a key assigned to each of your users, that functions essentially as their access credientials.  Typically you do _not_ hard-code this into your application, but rather require your users to input it.  You may wish to direct your users to https://ambientweather.net/account to create their API keys.
168 |     /// - Parameter sessionConfiguration: An optional configuration to use for network connectivity.  Generally if you wish to customise this you should start with ``defaultConfiguration`` and customise that, in order to inherit any settings which are important to correct function.
169 +     /// - Throws: ``WeatherError.invalidAPIKey`` or ``AmbientWeatherError.invalidApplicationKey`` if either of the keys are obviously invalid (e.g. blank).
170 |     public init(applicationKey: String,
171 |                 apiKey: String,
warning: 'WeatherPlatform.nearbyDevices' doesn't exist at '/SwiftWeather/WeatherError/locationServicesDisabled'
  --> Sources/SwiftWeather/WeatherErrors.swift:12:161-12:190
10 |     case notSupportedByPlatform
11 |
12 +     /// Location services are disabled (either specifically for this application, or system-wide), and therefore APIs that rely on the current location (e.g. ``WeatherPlatform.nearbyDevices``) cannot function.
13 |     case locationServicesDisabled
14 |
warning: 'WeatherPlatform.nearbyDevices' doesn't exist at '/SwiftWeather/WeatherError/locationNotAvailable'
  --> Sources/SwiftWeather/WeatherErrors.swift:15:91-15:120
13 |     case locationServicesDisabled
14 |
15 +     /// The current location is not available, and therefore APIs that rely on it (e.g. ``WeatherPlatform.nearbyDevices``) cannot function.
16 |     case locationNotAvailable
17 |
warning: 'WeatherDevice.latestReport' doesn't exist at '/SwiftWeather/WeatherError/noReportsAvailable'
  --> Sources/SwiftWeather/WeatherErrors.swift:36:95-36:121
34 |     case invalidDate(string: String, expectedFormat: String)
35 |
36 +     /// Thrown whenever there are no reports available from APIs which expect them, such as ``WeatherDevice.latestReport``, .  This is not usually an error in the strictest sense - it is valid for weather devices to exist but not have generated a report.
37 |     case noReportsAvailable // TODO: Maybe remove this, and instead just return nil from such APIs.
38 | }
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/type'
  --> Sources/SwiftWeather/WeatherSensor.swift:26:191-26:202
24 |     /// The weather sensor type.
25 |     ///
26 +     /// In addition to direct utility for e.g. categorising / grouping sensors in UI, this can be helpful to infer the units of the ``measurement`` - but only when ``measurement`` isn't a ``Measurement`` instance.  When it is such an instance the exact units are specified within the measurement.
27 |     public let type: WeatherSensorType
28 |
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/measurement'
  --> Sources/SwiftWeather/WeatherSensor.swift:53:43-53:54
51 |     /// The sensor measurement.
52 |     ///
53 +     /// Most sensors use the Foundation ``Measurement`` data type, but some use other types - e.g. ``Date`` for dates & times, ``Int`` for battery status / levels, etc.
54 |     public let measurement: any Sendable
55 |
warning: 'Date' doesn't exist at '/SwiftWeather/WeatherSensor/measurement'
  --> Sources/SwiftWeather/WeatherSensor.swift:53:102-53:106
51 |     /// The sensor measurement.
52 |     ///
53 +     /// Most sensors use the Foundation ``Measurement`` data type, but some use other types - e.g. ``Date`` for dates & times, ``Int`` for battery status / levels, etc.
54 |     public let measurement: any Sendable
55 |
warning: 'Int' doesn't exist at '/SwiftWeather/WeatherSensor/measurement'
  --> Sources/SwiftWeather/WeatherSensor.swift:53:130-53:133
51 |     /// The sensor measurement.
52 |     ///
53 +     /// Most sensors use the Foundation ``Measurement`` data type, but some use other types - e.g. ``Date`` for dates & times, ``Int`` for battery status / levels, etc.
54 |     public let measurement: any Sendable
55 |
warning: 'String' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle'
  --> Sources/SwiftWeather/WeatherSensor.swift:78:73-78:79
76 |
77 | extension WeatherSensor { // Formatting
78 +     /// A FormatStyle that creates human-readable representations, as ``String``s, from ``WeatherSensor``s.
79 |     ///
80 |     /// Warning: while nominally this supports the ``Codable`` protocol (as required of all FormatStyles), it actually does not.  Attempts to use it for coding or decoding will throw an exception.
warning: 'Codable' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle'
  --> Sources/SwiftWeather/WeatherSensor.swift:80:54-80:61
78 |     /// A FormatStyle that creates human-readable representations, as ``String``s, from ``WeatherSensor``s.
79 |     ///
80 +     /// Warning: while nominally this supports the ``Codable`` protocol (as required of all FormatStyles), it actually does not.  Attempts to use it for coding or decoding will throw an exception.
81 |     public struct FormatStyle: Foundation.FormatStyle {
82 |         public typealias FormatInput = WeatherSensor
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle/init(components:numbers:dates:units:unitStyle:)'
   --> Sources/SwiftWeather/WeatherSensor.swift:119:92-119:103
117 |         ///   - units: Specifies how to format units w.r.t. equivalent scales (e.g. Celsius vs Fahrenheit).
118 |         ///
119 +         ///      Note that this only applies to ``WeatherSensor/measurement``s  that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
120 |         ///   - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 |         ///
warning: 'unit' doesn't exist at '/SwiftWeather/WeatherSensor'
   --> Sources/SwiftWeather/WeatherSensor.swift:119:194-119:198
117 |         ///   - units: Specifies how to format units w.r.t. equivalent scales (e.g. Celsius vs Fahrenheit).
118 |         ///
119 +         ///      Note that this only applies to ``WeatherSensor/measurement``s  that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
120 |         ///   - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 |         ///
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle/init(components:numbers:dates:units:unitStyle:)'
   --> Sources/SwiftWeather/WeatherSensor.swift:122:92-122:103
120 |         ///   - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 |         ///
122 +         ///      Note that this only applies to ``WeatherSensor/measurement``s  that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
123 |         public init(components: Components = [.name, .valueAndUnit],
124 |                     numbers: NumberFormatter? = nil,
warning: 'unit' doesn't exist at '/SwiftWeather/WeatherSensor'
   --> Sources/SwiftWeather/WeatherSensor.swift:122:194-122:198
120 |         ///   - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 |         ///
122 +         ///      Note that this only applies to ``WeatherSensor/measurement``s  that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
123 |         public init(components: Components = [.name, .valueAndUnit],
124 |                     numbers: NumberFormatter? = nil,
warning: 'init' doesn't exist at '/SwiftWeather/Wunderground/defaultConfiguration'
  --> Sources/SwiftWeather/Wunderground/Wunderground.swift:17:66-17:70
15 |     internal let session: URLSession
16 |
17 +     /// The default network connectivity configuration used by ``init``.
18 |     ///
19 |     /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
warning: 'URLSessionConfiguration' doesn't exist at '/SwiftWeather/Wunderground/defaultConfiguration'
  --> Sources/SwiftWeather/Wunderground/Wunderground.swift:19:30-19:53
17 |     /// The default network connectivity configuration used by ``init``.
18 |     ///
19 +     /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
20 |     ///
21 |     /// Some configuration options are particularly important for correct function.  Be conservative about what you change, and test thoroughly.
warning: 'WeatherError.invalidAPIKey' doesn't exist at '/SwiftWeather/Wunderground/init(apiKey:sessionConfiguration:)'
  --> Sources/SwiftWeather/Wunderground/Wunderground.swift:50:21-50:47
48 |     /// - Parameter apiKey: The API (user) key.  This is a key assigned to each of your users, that functions essentially as their access credientials.  Typically you do _not_ hard-code this into your application, but rather require your users to input it.  You may wish to direct your users to https://www.wunderground.com/member/api-keys to create / retrieve their API key.
49 |     /// - Parameter sessionConfiguration: An optional configuration to use for network connectivity.  Generally if you wish to customise this you should start with ``defaultConfiguration`` and customise that, in order to inherit any settings which are important to correct function.
50 +     /// - Throws: ``WeatherError.invalidAPIKey`` if the `apiKey` is obviously invalid (e.g. blank).
51 |     public init(apiKey: String, sessionConfiguration: URLSessionConfiguration = defaultConfiguration) throws {
52 |         guard !apiKey.isEmpty else {
warning: 'nearbyDevices' doesn't exist at '/SwiftWeather/Wunderground/devices(near:)'
   --> Sources/SwiftWeather/Wunderground/Wunderground.swift:255:48-255:61
253 |     /// Precisely which devices are returned may vary between requests for the same location.
254 |     ///
255 +     /// If you just want nearby devices, use ``nearbyDevices``.
256 |     ///
257 |     /// - Parameter location: The location to search near.  If the given location represents an area (rather than a precise point) it is _not_ guaranteed that all stations within that area are returned.Conversion complete! (0.17s)
Generated DocC archive at '/Users/builder/builds/UKfvDsi8u/3/finestructure/swiftpackageindex-builder/spi-builder-workspace/.docs/wadetregaskis/swiftweather/main'
Fetching https://github.com/apple/swift-docc-plugin from cache
Fetched https://github.com/apple/swift-docc-plugin from cache (0.22s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.3.0 (0.02s)
Fetching https://github.com/apple/swift-docc-symbolkit from cache
Fetched https://github.com/apple/swift-docc-symbolkit from cache (0.42s)
Computing version for https://github.com/apple/swift-docc-symbolkit
Computed https://github.com/apple/swift-docc-symbolkit at 1.0.0 (0.03s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.3.0
Creating working copy for https://github.com/apple/swift-docc-symbolkit
Working copy of https://github.com/apple/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/8] Write sources
[2/8] Write snippet-extract-entitlement.plist
[4/8] Write swift-version-33747A42983211AE.txt
[6/52] Compiling SymbolKit SourceOrigin.swift
[7/52] Compiling SymbolKit GenericConstraints.swift
[8/52] Compiling SymbolKit Swift.swift
[9/52] Compiling SymbolKit SemanticVersion.swift
[10/52] Compiling SymbolKit AccessControl.swift
[11/52] Compiling SymbolKit Availability.swift
[12/57] Compiling SymbolKit FunctionSignature.swift
[13/57] Compiling SymbolKit Identifier.swift
[14/57] Compiling SymbolKit KindIdentifier.swift
[15/57] Compiling SymbolKit Location.swift
[16/57] Compiling SymbolKit Mutability.swift
[17/57] Compiling SymbolKit Names.swift
[18/57] Compiling SymbolKit Mixin+Equals.swift
[19/57] Compiling SymbolKit Mixin+Hash.swift
[20/57] Compiling SymbolKit Mixin.swift
[21/57] Compiling SymbolKit LineList.swift
[22/57] Compiling SymbolKit Position.swift
[23/57] Compiling SymbolKit SourceRange.swift
[24/57] Compiling Snippets Snippet.swift
[25/57] Emitting module Snippets
[26/57] Compiling SymbolKit AvailabilityItem.swift
[27/57] Compiling SymbolKit Domain.swift
[28/57] Compiling SymbolKit DeclarationFragments.swift
[29/57] Compiling SymbolKit Fragment.swift
[30/57] Compiling SymbolKit FragmentKind.swift
[31/57] Compiling SymbolKit FunctionParameter.swift
[32/57] Compiling Snippets SnippetParser.swift
[33/57] Compiling SymbolKit Metadata.swift
[34/57] Compiling SymbolKit Module.swift
[35/57] Compiling SymbolKit OperatingSystem.swift
[36/57] Compiling SymbolKit Platform.swift
[37/57] Compiling SymbolKit Relationship.swift
[38/57] Compiling SymbolKit RelationshipKind.swift
[39/57] Compiling SymbolKit Generics.swift
[40/57] Compiling SymbolKit Namespace.swift
[41/57] Compiling SymbolKit Symbol.swift
[42/57] Compiling SymbolKit SymbolKind.swift
[43/57] Compiling SymbolKit SymbolGraph.swift
[44/57] Compiling SymbolKit SPI.swift
[45/57] Compiling SymbolKit Snippet.swift
[46/57] Compiling SymbolKit Extension.swift
[47/57] Compiling SymbolKit GenericConstraint.swift
[48/57] Compiling SymbolKit GenericParameter.swift
[49/57] Emitting module SymbolKit
[50/57] Compiling SymbolKit GraphCollector.swift
[51/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[52/57] Compiling SymbolKit UnifiedSymbol.swift
[53/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[54/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Emitting module snippet_extract
[57/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract
[60/61] Applying snippet-extract
Build complete! (3.66s)
Building for debugging...
[0/1] Write swift-version-33747A42983211AE.txt
Build complete! (0.23s)
     484
4	/Users/builder/builds/UKfvDsi8u/3/finestructure/swiftpackageindex-builder/spi-builder-workspace/.docs/wadetregaskis/swiftweather/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $workDir/.docs/wadetregaskis/swiftweather/main
File count: 484
Doc size:   4.0MB
Preparing doc bundle ...
Uploading prod-wadetregaskis-swiftweather-main-bcf53c51.zip to s3://spi-docs-inbox/prod-wadetregaskis-swiftweather-main-bcf53c51.zip
Copying... [18%]
Copying... [27%]
Copying... [36%]
Copying... [44%]
Copying... [53%]
Copying... [62%]
Copying... [71%]
Copying... [80%]
Copying... [98%]
Copying... [100%]
Done.