@@ -223,32 +223,43 @@ extension PythonLibrary {
223
223
""" )
224
224
}
225
225
226
- public static func useVersion( _ major: Int , _ minor: Int ? = nil ) {
226
+ /// Use the Python library with the specified version.
227
+ /// - Parameters:
228
+ /// - major: Major version or nil to use any Python version.
229
+ /// - minor: Minor version or nil to use any minor version.
230
+ public static func useVersion( _ major: Int ? , _ minor: Int ? = nil ) {
227
231
self . enforceNonLoadedPythonLibrary ( )
228
232
let version = PythonVersion ( major: major, minor: minor)
229
233
PythonLibrary . Environment. version. set ( version. versionString)
230
234
}
231
235
232
- public static func useLibrary( at path: String ) {
236
+ /// Use the Python library at the specified path.
237
+ /// - Parameter path: Path of the Python library to load or nil to use the default search path.
238
+ public static func useLibrary( at path: String ? ) {
233
239
self . enforceNonLoadedPythonLibrary ( )
234
- PythonLibrary . Environment. library. set ( path)
240
+ PythonLibrary . Environment. library. set ( path ?? " " )
235
241
}
236
242
}
237
243
238
244
// `PythonVersion` struct that defines a given Python version.
239
245
extension PythonLibrary {
240
246
private struct PythonVersion {
241
- let major : Int
247
+ let major : Int ?
242
248
let minor : Int ?
243
249
244
250
static let versionSeparator : Character = " . "
245
251
246
- init ( major: Int , minor: Int ? ) {
252
+ init ( major: Int ? , minor: Int ? ) {
253
+ precondition ( !( major == nil && minor != nil ) , """
254
+ Error: The Python library minor version cannot be specified \
255
+ without the major version.
256
+ """ )
247
257
self . major = major
248
258
self . minor = minor
249
259
}
250
260
251
261
var versionString : String {
262
+ guard let major = major else { return " " }
252
263
var versionString = String ( major)
253
264
if let minor = minor {
254
265
versionString += " \( PythonVersion . versionSeparator) \( minor) "
@@ -273,8 +284,10 @@ extension PythonLibrary {
273
284
}
274
285
275
286
var value : String ? {
276
- guard let value = getenv ( key) else { return nil }
277
- return String ( cString: value)
287
+ guard let cString = getenv ( key) else { return nil }
288
+ let value = String ( cString: cString)
289
+ guard !value. isEmpty else { return nil }
290
+ return value
278
291
}
279
292
280
293
func set( _ value: String ) {
0 commit comments