Moya 11.0.1 not compatible with Xcode 9.3 when using Carthage

Here's my Cartfile entry:
github "Moya/Moya"

And this is the command I'm running with Carthage 0.29.0:
carthage update --platform ios

The error output:
*** Building scheme "Moya" in Moya.xcodeproj
Build Failed
	Task failed with exit code 65:
	/usr/bin/xcrun xcodebuild -project /Users/Me/Code/Apple/Project/Carthage/Checkouts/Moya/Moya.xcodeproj -scheme Moya -configuration Release -derivedDataPath /Users/Me/Library/Caches/org.carthage.CarthageKit/DerivedData/9.3_9E145/Moya/11.0.1 -sdk iphoneos ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES archive -archivePath /var/folders/2l/3tqwt0g91x18hql0jwsz0y280000gn/T/Moya SKIP_INSTALL=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=NO CLANG_ENABLE_CODE_COVERAGE=NO STRIP_INSTALLED_PRODUCT=NO (launched in /Users/Me/Code/Apple/Project/Carthage/Checkouts/Moya)

This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/2l/3tqwt0g91x18hql0jwsz0y280000gn/T/carthage-xcodebuild.XAPo2l.log

I've tried this entry:
github "Moya/Moya" "swift_4.1"

With the same command and still got an error. Then I created the branch xcode_9.3 based on swift_4.1 which works. See my comment here for reference.
So, if anyone is having the same issue, until this is fixed properly you can use this in your Cartfile:
github "Moya/Moya" "xcode_9.3"

I just released Moya 11.0.2 with the patch for this. Please re-open if the problem continues

I tried both versions (11.0.2 and xcode_9.3)  but I'm experiencing more errors in its dependencies.
module compiled with Swift 4.0.3 cannot be imported in Swift 3.3: /Users/nsmyself/moya/Carthage/Checkouts/Moya/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm.swiftmodule
Here's the log:

➜  moya carthage update --platform iOS
*** Fetching Result
*** Fetching RxSwift
*** Fetching ReactiveSwift
*** Fetching Alamofire
*** Checking out Alamofire at "4.7.1"
*** Checking out Result at "3.2.4"
*** Checking out ReactiveSwift at "3.1.0"
*** Downloading RxSwift.framework binary at "Spread.2"
*** Checking out Moya at "11.0.2"
*** xcodebuild output can be found in /var/folders/14/k0vb8rx1w16j43wvkcg949r0000gn/T/carthage-xcodebuild.Gc7aGU.log
*** Building scheme "Alamofire iOS" in Alamofire.xcworkspace
*** Building scheme "Result-iOS" in Result.xcodeproj
2018-04-10 14:28:05.167 xcodebuild[86765:9894907]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.167 xcodebuild[86765:9894907]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.170 xcodebuild[86765:9894907]  iPhoneSupport: Unable to mount DeveloperDiskImage on (null) (Error Domain=com.apple.dtdevicekit Code=601 "Could not find platform" UserInfo={NSLocalizedDescription=Could not find platform})
2018-04-10 14:28:05.279 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.292 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.308 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.547 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.559 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.570 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.878 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.893 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:05.908 xcodebuild[86765:9894905] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
*** Building scheme "ReactiveSwift-iOS" in ReactiveSwift.xcworkspace
--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift-UIExamples.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift-UIExamples.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
2018-04-10 14:28:36.902 xcodebuild[86930:9896277]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:36.903 xcodebuild[86930:9896277]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:36.905 xcodebuild[86930:9896277]  iPhoneSupport: Unable to mount DeveloperDiskImage on (null) (Error Domain=com.apple.dtdevicekit Code=601 "Could not find platform" UserInfo={NSLocalizedDescription=Could not find platform})
2018-04-10 14:28:37.013 xcodebuild[86930:9896147] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:37.029 xcodebuild[86930:9896147] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:37.048 xcodebuild[86930:9896147] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:37.263 xcodebuild[86930:9896147] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:37.275 xcodebuild[86930:9896147] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:28:37.288 xcodebuild[86930:9896147] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift-UIExamples.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
2018-04-10 14:29:01.023 xcodebuild[87041:9896817]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:01.024 xcodebuild[87041:9896817]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:01.028 xcodebuild[87041:9896817]  iPhoneSupport: Unable to mount DeveloperDiskImage on (null) (Error Domain=com.apple.dtdevicekit Code=601 "Could not find platform" UserInfo={NSLocalizedDescription=Could not find platform})
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift-UIExamples.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
--- xcodebuild: WARNING: Unable to open project file '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.playground' in workspace '/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcworkspace'.
*** Building scheme "RxMoya" in Moya.xcodeproj
2018-04-10 14:29:42.084 xcodebuild[87202:9898610]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.084 xcodebuild[87202:9898610]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.087 xcodebuild[87202:9898610]  iPhoneSupport: Unable to mount DeveloperDiskImage on (null) (Error Domain=com.apple.dtdevicekit Code=601 "Could not find platform" UserInfo={NSLocalizedDescription=Could not find platform})
2018-04-10 14:29:42.193 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.209 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.227 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.243 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.259 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
** BUILD FAILED **
The following build commands failed:
CompileSwift normal armv7
CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compiler
CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
CompileSwift normal arm64
(4 failures)
: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:17: warning: redeclaration of associated type 'Error' from protocol 'SignalProducerConvertible' is better expressed as a 'where' clause on the protocol
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/UnidirectionalBinding.swift:25:24: warning: redundant conformance constraint 'Self.Error': 'Error'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Disposable.swift:162:25: warning: 'flatMap' is deprecated: Please use compactMap(_:) for the case where closure returns an optional value
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/SignalProducer.swift:1960:81: warning: 'ReversedRandomAccessCollection' is deprecated: renamed to 'ReversedCollection'
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:33:9: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:34:9: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:135:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:136:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:199:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:200:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:154:10: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Atomic.swift:155:10: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:114:15: warning: 'deinitialize()' is deprecated: the default argument to deinitialize(count:) has been removed, please specify the count explicitly
/Users/nsmyself/moya/Carthage/Checkouts/ReactiveSwift/Sources/Scheduler.swift:115:15: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
/Users/nsmyself/moya/Carthage/Checkouts/Moya/Sources/RxMoya/Single+Response.swift:2:8: error: module compiled with Swift 4.0.3 cannot be imported in Swift 3.3: /Users/nsmyself/moya/Carthage/Checkouts/Moya/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm.swiftmodule
/Users/nsmyself/moya/Carthage/Checkouts/Moya/Sources/RxMoya/Single+Response.swift:2:8: error: module compiled with Swift 4.0.3 cannot be imported in Swift 3.3: /Users/nsmyself/moya/Carthage/Checkouts/Moya/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm64.swiftmodule
A shell task (/usr/bin/xcrun xcodebuild -project /Users/nsmyself/moya/Carthage/Checkouts/Moya/Moya.xcodeproj -scheme RxMoya -configuration Release -sdk iphoneos ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES clean build) failed with exit code 65:
2018-04-10 14:29:42.084 xcodebuild[87202:9898610]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.084 xcodebuild[87202:9898610]  DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.087 xcodebuild[87202:9898610]  iPhoneSupport: Unable to mount DeveloperDiskImage on (null) (Error Domain=com.apple.dtdevicekit Code=601 "Could not find platform" UserInfo={NSLocalizedDescription=Could not find platform})
2018-04-10 14:29:42.193 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.209 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.227 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.243 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
2018-04-10 14:29:42.259 xcodebuild[87202:9898346] [MT] DTDeviceKit: deviceType from 244d68f158e2bc0485ac2ea5ffa1527afca33323 was NULL
** BUILD FAILED **
The following build commands failed:
CompileSwift normal armv7
CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compiler
CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
CompileSwift normal arm64
(4 failures)

Disregard that, using --no-use-binaries fixed it.


I cannot find that(fisco-solc-centos) file

[app@VM_105_92_centos FISCO-BCOS]$ cp fisco-solc-centos  /usr/bin/fisco-solc
cp: cannot stat ‘fisco-solc-centos’: No such file or directory
[app@VM_105_92_centos FISCO-BCOS]$ cp fisco-solc-centos  /usr/bin/fisco-solc
cp: cannot stat ‘fisco-solc-centos’: No such file or directory
[app@VM_105_92_centos FISCO-BCOS]$ pwd
/home/app/workspace/cc-go/FISCO-BCOS
[app@VM_105_92_centos FISCO-BCOS]$

fisco-solc-centos在这里：https://github.com/FISCO-BCOS/fisco-solc/blob/master/fisco-solc-centos

thx

It seems problem is solved, I will close this issue. If there is any other question, fell free to reopen.


Update font handling

Build on top of https://github.com/martinRenou/jupyterlab-day/pull/3
Similar to https://github.com/jupyterlab-contrib/jupyterlab-night/pull/17

Looking good on Binder:


False positive blocking

When the hab is blocked and there is a company that starts with the name of hab, post from this company blocked as well.
Steps to reproduce:

Remove all from the ban list
Add new ban named r
Open the feed with any company which starts from the r, example:
https://habr.com/ru/search/?q=заметки+о+unix#h

AR: No posts from the company found
ER: Blogs should by blocked with the exact match
Technical info:
article.querySelector(selectors.company)?.href?.toLowerCase()?.includes(`/company/${blogName}`)

Fix is done, waiting for the next release.
preliminary date = 14.03.2021

Released at 21.03.21


Revert "[camera]Fix crash due to calling engine APIs from background thread"

Reverts flutter/plugins#4608
I don't think this is the best way to solve this, let's revert until @stuartmorgan and I can review.
No version change:
That PR didn't bump the version, so there's no publication issue.

Hm, not sure why publishable is still failing after adding No version change: and an empty commit.

@jmagman did you edit the PR description after you created this PR?

@jmagman did you edit the PR description after you created this PR?

I didn't have No version change: initially, but then I added it, and added an empty commit to re-run.

@jmagman FYI I had similar issue and tried resetting and recommitting the original commit and it worked.

@jmagman FYI I had similar issue and tried resetting and recommitting the original commit and it worked.

Hm, let me try that...

Let me just reopen this.

Worked this time: https://github.com/flutter/plugins/pull/4630


extrinsic trap

Validated with "Macrosopic rate equation modeling of trapping/detrapping of hydrogen isotopes in tungsten materials"


Resource logging upgrade

kube-HPC/hkube#1638
A more robust logging flow based on existing logics.

This change is

/deploy

/deploy

/deploy

/deploy

/deploy


Activate, configure checkstyle and bring jocument in line with the requirements

Although present, checkstyle was not used yet.
To use it, checkstyle was activated and the following
configuration changes have been made:

Rename checkstyle-supressions.xml to suppressions.xml
to be in line with the gradle docu
Disable the SuppressionXpathFilter since it is not used
Enable the SuppressionFilter and pass it correct path to
the suppression file (suppresions.xml)
Add BeforeExecutionExclusionFileFilter for the files
which contain code which can not be parsed by checkstyle
(mostly Java 14 things)
Additionally, the project was brought in line with the
checkstyle requirements

With this, one part of #6  is done
Signed-off-by: Anton Oellerer<EMAIL_ADDRESS>

Checkstyle still needs to be updated to the most recent version to support Java 14


[backward] new port

Describe the pull request
This adds a port for the backward library for printing nice stack traces.

What does your PR fix?
Fixes this port not existing.

Which triplets are supported/not supported? Have you updated the CI baseline?
All, according to the project page. No.

Does your PR follow the maintainer guide?
I think so.

Yes

@csw ,Thanks for your pr, please sign CLA first

Also, according to upstream this is meant to build on all platforms, but I see that CI is failing for some exotic Windows platforms. It looks like the pipelines are capturing the actual failure logs as artifacts, but I can't seem to view them, and I'm not in a position to try building things for Windows myself. Should I update the CI baseline to show that it's expected to fail on arm64_windows, arm_uwp, and x64_uwp, or try to investigate this further?

You can download the failure log artifacts. If you move the mouse pointer over a line, there is a three-dot menu on the right which has the download action.

Oh, I see, thanks. OK, apparently the code only anticipates Windows running on x86 or x64, and uses API calls like RtlCaptureContext that are apparently not available on UWP; I'll mark those triplets as unsupported.

@csw ,Have you investigated these error logs?
https://dev.azure.com/vcpkg/public/_build/results?buildId=64438&view=artifacts&pathAsName=false&type=publishedArtifacts

@JonLiu1993 yes, those were how I figured out that the library doesn't support Windows on ARM or UWP. I'll list those platforms as unsupported.

@csw ,Can you consider this suggestion？
https://github.com/microsoft/vcpkg/pull/21955#discussion_r771181270

@csw ,Ping for response!

Draft this PR since there is no response.

Closing this PR since it seems that no progress is being made. Please reopen if work is still being done.


Add nullable reference types to AspNetCore project

Partially closes #487

Enables NRTs in the Finbuckle.MultiTenant.AspNetCore and corresponding unit test projects
Updates the projects to account for every new nullable warning
The code should maintain existing functionality

Note: Please take a careful look to make sure I didn't break existing functionality

@fossbrandon thanks gain I am going to merge this in later tonight

:tada: This PR is included in version 6.6.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


fix go docker build

go build requires module initialization prior to running.  this modifies the dockerfile to include that step in the build process

Thanks for the fix!


feat: support running workflow instances directly

Enhance the sghi.etl.commons.run_workflow function to support running sghi.etl.core.WorkflowDefinition instances directly. The function now accepts either a WorkflowDefinition instance or a factory function that supplies a WorkflowDefinition instance.

:tada: This PR is included in version 1.2.0-rc.1 :tada:
The release is available on:

v1.2.0-rc.1
GitHub release

Your semantic-release bot :package::rocket:


unable to find the index.html

Hi,
I have followed the step to deploy create react app + node js and getting following error
Could not find a required file.
Jan 08 20:01:55 bu-admin-app app/web.1:   Name: index.html
Jan 08 20:01:55 bu-admin-app app/web.1:   Searched in: /app/public
As I moved the public and src folder insider react-ui this will happen. Do I miss any other setting for react so that it search in /app/react-ui/public instead of app/public .

I have a similar problem:
remote:        Could not find a required file.
remote:          Name: index.html
remote:          Searched in: /tmp/build_63f869097626bedb8342ed07ae1a2e4c/react-ui/public
Thanks for any help!

Hi folks 👋
Since this app works as provided, something has been changed in each of your cases to prevent the index.html from being found.
My guess is that you've moved/renamed the react-ui/ directory. Try naming the React app directory back to react-ui/ and then it should work again.


八角笼中-电影-高清[1080P] 在线观看

八角笼中 八角笼中2023完整版视频在线观看 ZH电影4K《八角笼中》中國電影（香港/台灣）2023完整版.看電影2023 - 八角笼中-小鴨在線版-HD1080.[Never Say Never] 电影完整在线（2023）全免费高清.免費觀看(八角笼中)[在線]完整版.潮爆大状粤语港剧网, 毒舌大壮免费观看, 八角笼中粤语版, 八角笼中粤语版下载, 八角笼中在线观看, 潮爆大状粤语粤之家, 八角笼中香港什么时候上映, 饭戏攻心粤语在线观看完整版高清, 八角笼中, 饭戏攻心粤语在线观看完整版免费!
⏩ 现在观看 ◉ 在亚洲网站上 ➲➲ 八角笼中線上看-2023-完整版-HD
八角笼中完整版（八角笼中）| 在线下载八角笼中完整版 | 八角笼中完整版 | 八角笼中全电影 | 八角笼中全高清在线 | 八角笼中全片 | 八角笼中电影完整 | 八角笼中免费观看 八角笼中免费下载 | 八角笼中高清1080p / 720p | 八角笼中BT.709 | 八角笼中HDTV 1080i | 八角笼中BluRay 八角笼中BD | 八角笼中4K |
點開後就可以觀看囉，高畫質免費線上看，八角笼中線上看完整版、八角笼中線上看小鴨。提供繁體中文字幕，離線觀看，支援跨裝置（Android, iOS, Android TV, Apple TV, Chromecast, AirPlay, MOD）接續播放。
《八角笼中2023》迅雷BT下载在线观看免费播放
导演: 王宝强
编剧: 七七 / 王宝强
主演: 王宝强 / 陈永胜 / 史彭元 / 王迅 / 张祎曈 / 更多
类型: 剧情 / 动作
制片国家/地区: 中国大陆
语言: 汉语普通话 / 四川方言
上映日期: 2023-07-06(中国大陆) / 2023-06-16(上海国际电影节)
片长: 117分钟
又名: Never Say Never / Octagonal
IMDb: tt20865116
八角笼中的剧情简介
电影讲述了向腾辉（王宝强饰）倾注心血想把当地无人照料的孩子培养成才，这让生活本没有出路的孩子们看到了一丝通向未来的曙光。然而，随着往日的表演视频被爆出，这些“残忍、血腥”的画面刺激了不明真相的人们的神经。一夜之间，舆论开始发酵。向腾辉的生活、孩子们的前途都陷入到人们以善良为名编织的大网中，让 他们难以挣脱，重回泥沼，关于未来，他们的“出路”又将在哪。


include otherfiles in event.ini

Description of Problem or Question
Question:
My new scenario starts to grow rapidly in filesize  and number of events, Currently it is close to 300 events and growing and event.ini is over 2k lines. I am using a strict naming convention for my code to keep it organized but I start to feel the need to break-up the big event.ini in separate files.
Is there a way to break-up the event.ini file in to smaller parts and include them in the mainfile? Or is this Done in the quest.ini file? and if yes, how does it work?
If this feature does not exist yet would it be feasible to add something like this?
Valkyrie Version
Attach Save, Quest or Scenario
Saves:
%appdata%/Valkyrie/MoM/Save
%appdata%/Valkyrie/D2E/Save
Quest:
%appdata%/Valkyrie/D2E/Editor
Scenario:
%appdata%/Valkyrie/MoM/Editor

Yes it is possible, for example that would be how to do it in descent Descent for a campaign.
I believe its done in the events.ini, but have not got round to it yet myself (I focus on MoM).
Ask in the Descent channel on Discord, there are a couple good Descent scenario writers in there.
https://discord.gg/cB8Z9P

event.ini is just the default for events, it can be changed by selecting the event.ini button at the bottom of the event. You can combine events and other components into the same file and group them however you like (for example by room, or anything else).
You can then use file filters in the component selector to find the components from particular (or excluding particular) files.
To do it manually just add the ini file you want to use to quest.ini and add components.

Closing the issue as it is not an issue anymore.
If someone happens to know the answer to the "constants" question, feel free to answer it on this ticket since its still interrestig to know if it could be done. Nice to know... but no reason to keep this ticket open.
Original question is answered --> ticket closed


error extracting json by cmd

Hi, I have been developing a little code that checks the new plots in the destination folder, and extracts a Chia Plot Status json file by cmd.
the problem occurred when i updated to version 0.11.7
I get the following error:

Should I change / add any parameters?

Please update to 0.11.8 as this was a bug in the code.
May I ask, what are you using the cli for?

As an enthusiast, I am preparing a telegram bot to notify me when a new plot is generated, daily summary, plot analysis, recommendations among others..
I use ChiaPlotStatus to collect data from the creation of each plot, for example the durations of the different phases.

@Hatt3rPi Great project!
I love to see how people use the software.


build: master to MN 4

@sdelamo I am trying to resolve a broken test. In the test, CustomizeBrokerSpec (there is a copy for each language, they all fail the same way).
    @Test
    void testCustomizeBroker() {

        ConnectionFactory connectionFactory = applicationContext.getBean(
            ConnectionFactory.class,
            Qualifiers.byName(CONNECTION_FACTORY_BEAN_NAME));

        assertTrue(connectionFactory instanceof JMSConnectionPool);

        ...

That assert is failing , where it passes on the branch for the MN 3 version of the module. The bean is registered in this method,
    public void process(BeanDefinition<?> beanDefinition, BeanContext context) {
        final Object candidate = context.getBean(beanDefinition);
        Assert.isTrue(candidate instanceof ConnectionFactory,
            () -> "@JMSConnectionFactory can only be applied to a bean of type javax.jms.ConnectionFactory. " +
            "Provided class was " + candidate.getClass().getName());

        final ConnectionFactory connectionFactory = (ConnectionFactory) candidate;
        final String name = beanDefinition.stringValue(JMSConnectionFactory.class)
            .orElseThrow(() -> new ConfigurationException(
                "@JMSConnectionFactory must specify a name for the bean."));

        context.registerSingleton(
            JMSConnectionPool.class,
            new JMSConnectionPool(
                connectionFactory,
                properties.getInitialPoolSize(),
                properties.getMaxPoolSize()),
            Qualifiers.byName(name));

        logger.debug("created JMSConnectionPool bean '{}' for ConnectionFactory {}",
            name, connectionFactory.getClass().getName());
    }

The logger output here is, "created JMSConnectionPool bean 'activeMqConnectionFactory' for ConnectionFactory org.apache.activemq.ActiveMQConnectionFactory"
I'm not understanding why this fails now. Could it be an issue with the registerSingleton(...) method?
@graemerocher previously stated (when I asked), "the approach taken here looks like a hack
but probably the exposed type doesn't expose ConnectionFactory as a bean".
So what's the hack, the process() method or the test (or both)? Now that I look closer, the test was changed in September, and if I revert that change to what it was, it passes? So what is the right thing?
class CustomizeBrokerSpec extends AbstractJmsSpec {

    @Test
    void testCustomizeBroker() {

        ConnectionFactory connectionFactory = applicationContext.getBean(
            ConnectionFactory.class,
            Qualifiers.byName(CONNECTION_FACTORY_BEAN_NAME));

        assertTrue(connectionFactory instanceof ActiveMQConnectionFactory);

        ActiveMQConnectionFactory amqcf = (ActiveMQConnectionFactory) connectionFactory;

        assertTrue(amqcf.isUseAsyncSend());
    }
}

Note that my last commit was to push that reverted change, but that doesn't mean I think it's the correct thing to do.


Expand EFS section

Adding @ThanosBaskous for a review too since this is a lot of new stuff.

Thanks so much, this section is now looking legit.

Changed, except for the tips, which I'll rewrite but it will take a bit, and the curly apostrophes and quotes, which I don't know how to do.

👍 Awesome.

Thanks again for this excellent submission, @bgdnlp!


[C-API] runtime

This PR is part of a larger project to add C API to gRPC.
Implements a wrapper around the core API such that they can be used by the client/codegen directly.
Right now it supports all blocking methods and async unary.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok to test.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok to test.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok to test.

Thanks for your pull request. The automated tests will run as soon as one of the admins verifies this change is ok to test.


Issue in stopwatch #80

Scrollbar added and hidden in display.

@anurag97en Thank you for your contribution. Looking forward to more such amazing contributions 🥂


add new property on UZKFileInfo

@abbeycode Since "external_fa" contains other meanings, the new commit changes and adds the following attributes:

Change the reading of the "isDirectory" attribute, and use "external_fa" to more accurately determine whether it is a folder.
Add the "isSymLink" attribute to determine if it is a symbolic link
Add "isResourceFork" to help decide whether to ignore file entries with the "__MACOSX" prefix when decompressing

I've retargeted this PR to the v2.0 branch, which didn't change any of the main classes, only project configuration and unit tests, so it should be a conflict-free rebase if you'd like to do that now.

Let's take a new PR review and discussion in the 2.0 branch.

We can keep this PR open. I already targeted it to 2.0 and you should be able to rebase without any changes.

@abbeycode  Sorry, since I started to travel, the new code submission is temporarily unable to provide a test example, I need your help to provide a test example.

I defined the relevant enum from the ZIP spec
The new "isDirectory" read is done using system-defined standards, which improves readability.
"isSymbolicLink" I did a rough test locally, and I still need you to help me provide a SymbolicLink file for testing in a new test example.

I’ll take a look at your changes and questions when I can, probably Monday. Please don’t feel any pressure from me to work on this while you’re on vacation — work on it whenever you’re able to.
One issue, though: I think when you use the word “judgment”, it might not be a precise translation. Are you able to use a different word, or help me figure out what you mean? I can’t tell from the context.

Thanks, judgment is wrong translation, the correct should be Read.
取得 iOS 版 Outlookhttps://aka.ms/o0ukef

寄件者: Dov Frankel<EMAIL_ADDRESS>寄件日期: Sunday, June 30, 2019 11:33:53 AM
收件者: abbeycode/UnzipKit
副本: MartinLau; State change
主旨: Re: [abbeycode/UnzipKit] add new property on UZKFileInfo (#88)
I’ll take a look at your changes and questions when I can, probably Monday. Please don’t feel any pressure from me to work on this while you’re on vacation — work on it whenever you’re able to.
One issue, though: I think when you use the word “judgment”, it might not be a precise translation. Are you able to use a different word, or help me figure out what you mean? I can’t tell from the context.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHubhttps://github.com/abbeycode/UnzipKit/pull/88?email_source=notifications&email_token=ABJKPFB5GM2OHH3H2ONZT2TP5ASSDA5CNFSM4H4DRJ32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODY4EMCA#issuecomment-507004424, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABJKPFABJE5O5T2VHT2TBF3P5ASSDANCNFSM4H4DRJ3Q.

The mistakes you refer to can help me a lot, because this is the code contribution of my first open source project, I need these errors to point out. However, due to google translation problems, I may not be able to understand what you mean in the first place, so I am very grateful that you can patiently point out the mistakes and help me through the process. I will check back and make changes to the new issue tomorrow.
I judged whether the folder I referred to  this project, but because of his judgment, I was confused, so I modified the part in the last submitted code.
Also, since I am not familiar with the swift language, I need you to help me with the completion of Tests.
Thx~
在 2019年7月2日 +0800 05:10，abbeycode/UnzipKit<EMAIL_ADDRESS>Don't be discouraged - I'm good at finding small errors. Take a look at my comments when you return from your trip, and in the meantime, let me know what specific items you'd like me to help you with. I've made tasks on both code reviews that I'd like to see addressed before a merge.

No problem, I'm happy to help you through this. Also, I wouldn't call most of what I point out "mistakes", implying you did something wrong. Most of the items I point out are stylistic choices, and I'm helping your code stay consistent with the way I do things in the rest of the project. I'm glad to have you helping out, though. You're helping motivate me to do more with this project than I have recently!
To make sure I'm understanding correctly, the one thing you need help from me on right now is writing the unit tests for this PR?
Also, before I write any sym-link tests, please take a look at my question above about the symlinks. I wanted to know, since it looks like documentation is a little slim on them, what your reason for implementing the isSymLink property is. Do you have a use case? We could focus this PR on just making isDirectory more accurate, using the zip headers instead of looking at the path that's returned.

Yes, I currently need the unit test of the new attribute and the unification of the coding style, as you said, this will keep the style of this project.
In addition, the purpose of implementing "isSymLink" is to decide whether to decompress this file when unzipping the zip.
The zip command includes the ability to compress symlinks (but I don't have more actual use cases):
$ zip --symlinks -r foo.zip foo/

mail from spark.
在 2019年7月3日 +0800 10:41，Dov Frankel<EMAIL_ADDRESS>No problem, I'm happy to help you through this. Also, I wouldn't call most of what I point out "mistakes", implying you did something wrong. Most of the items I point out are stylistic choices, and I'm helping your code stay consistent with the way I do things in the rest of the project. I'm glad to have you helping out, though. You're helping motivate me to do more with this project than I have recently!
To make sure I'm understanding correctly, the one thing you need help from me on right now is writing the unit tests for this PR?
Also, before I write any sym-link tests, please take a look at my question above about the symlinks. I wanted to know, since it looks like documentation is a little slim on them, what your reason for implementing the isSymLink property is. Do you have a use case? We could focus this PR on just making isDirectory more accurate, using the zip headers instead of looking at the path that's returned.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHubhttps://github.com/abbeycode/UnzipKit/pull/88?email_source=notifications&email_token=ABJKPFBHQEXPYSGSTO6PA43P5QGVRA5CNFSM4H4DRJ32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZDCZMI#issuecomment-507915441, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABJKPFES7PFEZVVAPVXCW6TP5QGVRANCNFSM4H4DRJ3Q.

Thanks for making some of the changes discussed.  Once you rebase and address all open comments, I'll make a branch off of yours and implement some unit tests.
The new class methods look pretty much like what I was expecting. Good job!
Also, I'm not sure if this was something you did intentionally or if GitHub did it automatically as a result of your pushes, but most (all?) of the open conversations were marked as resolved. If GitHub did it, then you can ignore this, but please don't resolve conversations that I started. I'll resolve once I've verified any changes have been made or questions have been answered.
Please don't insert blank lines at the beginning of methods, which is inconsistent with the style of the rest of the code.

[ ] Please rebase off of the latest v2.0 commit
[ ] Please address all open feedback items

Yes, the current work has not been completed, I will remind you to check when I am finished.
The problem was solved because my previous test program had some bugs, and I have stopped working on this program.
The merge for V2.0 is Tower automatically merged with V2.0 changes during Pull, maybe I am not familiar with git operations.

I can't be sure exactly what happened, but when you pull, it shouldn't get any of my changes, only yours from your remote branch on GitHub. You should do a "rebase" off of my latest v2.0 branch, and then force-push that to your remote. I don't use Tower, so you may have a to look up how to do that, but your PR should only show commits with your name on them, not my own, which is what's happening right now (there are 3 of my commits from July 2nd).

@abbeycode The new commit has rolled back the 2.0 submission and resolved the public issue.

If you look at the "Files changed" on this PR, it's showing 16 files now (when I'm expecting maybe 2), and you rolled back all of the v2.0  changes. Please make sure you're rebasing off of abbeycode/v2.0.

Yes, I was unable to submit the rollback correctly because Tower merged with the 2.0 change. Currently I used the file change to exit the 2.0 change. This may cause the submission version to be advanced.

How's it going? I haven't heard from you on this PR in a little while.

Due to the busy schedule, I have not recently reminded you that the currently submitted code has processed most of the problems, I think you can make changes.
In addition, because of my previous mistakes, the currently submitted version is ahead of the code even though the code has been rolled back.

Unfortunately, it's going to be difficult for me to assist you with this. All I can suggest is rebasing your branch off of my latest v2.0 commit. I'm not familiar with Tower, or the steps you took to get to where you are. In the worst case, check out the v2.0 branch into a separate directory, paste your changes over that, and then force push to your PR remote's branch. It'll squash your commits, but I think that's fine.

Maybe I can check out your 2.0 branch again and paste my current changes, which may compress my submission as you said. But I need to recreate the new PR, github does not allow me to modify the current PR point

You should be able to commit the change and still force-push it to your v1.9 branch, replacing its contents. You can't change the name of v1.9 in your repo, or else that would require a new PR. To be extra clear, these are the steps I'm suggesting:

Check out abbeycode:v2.0 from the main repo, probably into a new directory
Paste your changes on top of the working copy
Commit your changes
Set your remote for the branch to MartinLau7:v1.9
Force-push

As a side note, you would be better off naming the branch for future PRs based on the feature you're adding instead of using the same name as the base branch you're targeting (which in many cases will be master.

Now the new commit is checked out and pasted with abbeycode:v2.0. It seems that there are a lot of changes in 2.0. I have compared the content of the forced push and it seems to be correct, but you still need to check if there are any omissions.

I'm still seeing all the previous commits listed. I'd expect after you rebased from my v2.0 and force-pushed that we'd only see one commit in this PR. It looks instead like you merged in v2.0. When you make your next change, can you write out each step you take? It could help me identify where it's going wrong.

It would probably be a good idea for you to start out with a fresh clone. Once you have a fresh clone of your MartinLau7 repo, follow this guide from GitHub to sync in my abbeycode branches, and then follow the steps I listed above to move your changes from this branch in.

When I try to force a commit error that prevents it from being submitted, I will continue to try to find out if there are other ways to make a new commit. If it still doesn't work, I might have to make a new PR.

@abbeycode I forced a rollback of the fork repository and pasted the abbeycode/UnzipKit(2.0) code and my new code, which is now correctly submitted. If there is no problem, I think you can do the unit test writing work.

This last time was close - there's a single commit, but it contains all of my v2.0 changes in addition to your changes. Your repo is still based off of my v1.9.  When you look at this PR after a push, you should see 1 commit (like it shows now), but only 1 or 2 files changed (right now it shows 21).

This last time was close - there's a single commit, but it contains all of my v2.0 changes in addition to your changes. Your repo is still based off of my v1.9.  When you look at this PR after a push, you should see 1 commit (like it shows now), but only 1 or 2 files changed (right now it shows 21).

You are right, now I have forced to submit new changes.

@abbeycode The newly submitted version should now be ok.

Check out the new pr88 branch I created. The symlink test case is failing, returning false for the symlink in the test case.

The PR88 branch seems to have a path error, which prevents me from further debugging the problem you are culling.
Once I modify the path, the FileInfoTests.swift file will generate compilation errors.

Thanks for catching that! It should be fixed (I added it using the Xcode 11 beta originally, but added just now using Xcode 10). I didn't pay attention when the build failed because I knew a unit test is failing.

There seem to be some exceptions.
The SymbolicLink created by NSFileManager does not seem to be considered entirely as a SymbolicLink, but the SymbolicLink created by "ln -s" in terminal is correctly recognized. I don't know if there is any difference in the SymbolicLink created by the NSFileManager API. I haven't found the relevant instructions yet.
This situation led to the "itemIsSymbolicLink" Method that the SymbolicLink created by the NSFileManager API is a file.
TestFileA_L and TestFileB_L are created by "ln -s"
TestFileC_L is created by the NSFileManager API
Looking at the file via ls -al, TestFileC_L does not seem to be considered a SymbolicLink.

#if os(OSX)
    func testIsSymbolicLink_ContainsSymLinks() {
        let textFileURL = self.emptyTextFile(ofLength: 20)!
        let symLinkURL = textFileURL.deletingLastPathComponent()
            .appendingPathComponent(textFileURL
                .lastPathComponent
                .replacingOccurrences(of: ".txt", with: "-Link.txt"))

        try! FileManager.default.createSymbolicLink(at: symLinkURL, withDestinationURL: textFileURL)

        let archiveURL = self.archive(withFiles: [textFileURL, symLinkURL], zipOptions: ["--symlinks"])!
        let archive = try! UZKArchive(url: archiveURL)

        let fileInfo = try! archive.listFileInfo()

        let expected = [
            textFileURL.lastPathComponent: false,
            symLinkURL.lastPathComponent: true,
        ]
        let actual = fileInfo.reduce(into: Dictionary<String, Bool>()) {
            $0[$1.filename] = $1.isSymbolicLink
        }

        XCTAssertEqual(actual, expected)
    }
    #endif

The code above is from your unit test.
On line 88,
Let actual = fileInfo.reduce(into: Dictionary<String, Bool>()) {
             $0[$1.filename] = $1.isDirectory
         }

Testing SymbolicLink should be changed to :
Let actual = fileInfo.reduce(into: Dictionary<String, Bool>()) {
             $0[$1.filename] = $1.isSymbolicLink
         }

In the new commit code, I have moved "Private Class Methods" after "Properties" and left the first 2 blank lines, ending 3 blank lines.

Does it make sense to use the S_IFDIR, S_IFLNK and S_IFMT constants?

About using S_IFDIR, S_IFLNK and S_IFMT constants is to get the type of zip entry more accurately, get Unix Filemodel by (external_fa >> 16).
You can get more information here:
Https://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute/14727#14727

Unzip -Z -l foo.zip

Using the unzip command to list attributes, currently only known from lrwxr-xr-x is that the zip entry is a symbolic link, and it is not known that it is a symbolic link to a folder.
Use itemIsSymbolicLink in itemIsDirectory to make it clearer that this is a directory.

I like the way this is shaping up. I'm going to merge your changes into pr88 and take them the last mile to where I'd like to see them. You can then merge back into your branch, before I merge into v2.0.
Regarding your last comment on checking for symbolic links when listing directories, can you give me a way to create a specific archive that will demonstrate this (instead of foo.zip)? Again, I'm looking for an example archive that would return an incorrect value for the isDirectory check without the isSymbolicLink check inside.

I pushed an update to pr88. What do you think? I also realized that the !isSymbolicLink check will always return true because of short-circuiting. The byte that determines file type can ONLY be IsDirectory or IsSymbolicLink, but not both.

Currently I can only create a zip from the terminal command to test specific code examples.

Create a directory: mkdir testDir
Create a directory symbolic link: ln -s testDir testDirLink
Create a file: touch testFile.md
Create a file symbolic link: ln -s testFile.md testFileLink.md
Create a zip: zip -ry test.zip ../test

Now check the list with unzip -Z -l test.zip:
Archive: test.zip
Zip file size: 850 bytes, number of entries: 5
rwxr-xr-x 3.0 unx 0 bx 0 stor 19-Jul-29 22:32 ../test/
lrwxr-xr-x 3.0 unx 7 bx 7 stor 19-Jul-29 22:29 ../test/testDirLink
drwxr-xr-x 3.0 unx 0 bx 0 stor 19-Jul-29 22:28 ../test/testDir/
-rw-r--r-- 3.0 unx 0 bx 0 stor 19-Jul-29 22:30 ../test/testFile.md
lrwxr-xr-x 3.0 unx 11 bx 11 stor 19-Jul-29 22:31 ../test/testFileLink.md
5 files, 18 bytes uncompressed, 18 bytes compressed: 0.0%

The attribute contains lrwxr-xr-x as a symbolic link file.
In order to avoid the zip entry being a directory symbolic link, I suggested adding the symbolic link in the previous code.
This is the file(test.zip) I used for testing.

I am also very satisfied with the current update, I have merged PR88 into my branch. But I still hope that you will perform the final test on the one I suggested above, and keep the judgment of itemIsSymbolicLink: in itemIsDirectory: to avoid category errors.

I used the same commands you specified, and came up with an archive that looks like this when extracted:

I wrote this test case, which passes, showing that the symlink directory shows up in the Zip metadata as a link, not a directory. I'm going to clean up this directory and include it in one last update.

It does make sense, if you look at where the Zip metadata is coming from - there's a single field that can only indicate whether it's a link or a directory. For links to directories, it's more important that it's a symlink.

Yes, for a link to a directory, Zip metadata can only express that it is a symbolic link, and it cannot be specified whether it is a file or a directory, but it still makes sense.

I'll merge this after I get the CocoaPods social media validation fixed. I don't want to break the v2.0 branch's build. I'm working on a CocoaPods PR (two, actually) to address this.

I merge PR88 in the new commit and use the system function and remove the newly defined UZKFileType. Do you think it is feasible?

Please put UZKFileType back. I think it makes it much clearer and easier to read, and the other constants are readily discoverable if we need to use them in the future.

I have rolled back this submission and it is currently consistent with PR88.


WW - Setup

Per Brandon, only pushing up the basic setup.
Custom website sections are proving difficult. Will look at those as a separate branch down the road.

@B77Mills -- if that was the update you were requesting, please confirm and I will update it on the other sites I replicated as well.

Going to close down this PR and start a new branch over, as it seems to have revolving issues.


Feedback: Filebuffer through stream

I implemented a filebuffer through stream that writes and reads to and from a file simultaneously. I am planning to use it in situations where we have to cache large incoming files to disk while they're being sent to the user over HTTP. As I in my case can't control the speed of the read stream, this implementation allows me buffer to disk instead of memory.
Any feedback would be much appreciated!
import fs from 'fs-promise'
import _ from 'highland'

export default function(filePath) {
  return s => {
    let eof = false

    const tmpFilePath = `${filePath}.tmp`
    const ws = fs.createWriteStream(tmpFilePath)

    const errors = _((push) => {
      s.pipe(ws)
        .on('finish', () => {
          eof = true
          push(null, _.nil)
          fs.rename(tmpFilePath, filePath)
            .catch((err) => fs.unlink(tmpFilePath))
        })
        .on('error', (err) => push(err))
    })

    const readStream = ({ start = 0 } = {}) => {
      return _(fs.createReadStream(eof ? filePath : tmpFilePath, { start }))
        .consume((err, x, push, next) => {
          if (err) {
            push(err, null)
          } else if (x === _.nil) {
            if (eof) {
              push(null, _.nil)
            } else {
              setTimeout(() => next(readStream({ start })), 1000)
            }
          } else {
            start += x.length
            push(null, x)
            next()
          }
        })
    }

    return _([errors, readStream()]).merge()
  }
}

At first glance, there seems to be a race condition where eof could be true, but the file hasn't been renamed, which can cause you to lose data (i.e., you try to read from filePath but it doesn't exist, causing an error to be pushed, then nil, which then causes you to stop since eof == true).
You can set eof after the rename is complete. This is still a race condition, since the rename could be done but eof == false. In this case though, you'll just get a spurious error when trying to open tmpFilePath after it's been renamed (which you can suppress). I don't think there'll be data loss.
That said, if you're just using the file system as a temporary buffer, why do the rename at all?
The rest of your logic seems sound, though.

Here is an updated version:
import fs from 'fs-promise'
import _ from 'highland'
import cuid from 'cuid'

export default function(dstPath) {
  return s => {
    let eof = false

    const tmpPath = `${dstPath}.${cuid()}`
    const ws = fs.createWriteStream(tmpPath)

    const errors = _((push) => {
      s.pipe(ws)
        .on('finish', () => {
          fs.rename(tmpPath, dstPath)
            .catch(err => { /* Do nothing... */ })
            .then(() => {
              push(null, _.nil)
              eof = true
            })
        })
        .on('error', push)
    })

    const readStream = ({ srcPath, start = 0 } = {}) => {
      let position = start
      return _(fs.createReadStream(srcPath, { start: position }))
        .consume((err, x, push, next) => {
          if (err) {
            if (err.code === 'ENOENT' && srcPath === tmpPath) {
              next(readStream({
                srcPath: dstPath,
                start,
              }))
            }
            push(err, null)
          } else if (x === _.nil) {
            if (eof) {
              push(null, _.nil)
            } else {
              setTimeout(() => next(readStream({
                srcPath,
                start,
              })), 200)
            }
          } else {
            position += x.length
            push(null, x)
            next()
          }
        })
    }

    return _([errors, readStream({ srcPath: tmpPath })]).merge()
  }
}

You don't want to call push after redirecting to another stream using next. The push(err, null) should be gated behind an else clause. It also needs to call next() too.
Like this:
          if (err) {
            if (err.code === 'ENOENT' && srcPath === tmpPath) {
              next(readStream({
                srcPath: dstPath,
                start: position,
              }))
            } else {
              push(err, null)
              next()
            }
          }

Otherwise, @ronag's solution seems reasonable.

So given my current solution I'm getting corrupted data, @vqvu any ideas why?
import fs from 'fs-promise'
import _ from 'highland'
import cuid from 'cuid'

export default function createFileBuffer(dstPath) {
  return s => {
    let eof = false

    const tmpPath = `${dstPath}.${cuid()}.tmp`
    const ws = fs.createWriteStream(tmpPath)

    const errors = _((push) => {
      s.pipe(ws)
        .on('error', push)
        .on('finish', () => {
          fs.rename(tmpPath, dstPath)
            .catch(err => ({
              // Do nothing...
            }))
          push(null, _.nil)
          eof = true
        })
    })

    const readStream = (srcPath, start) =>
      _(fs.createReadStream(srcPath, { start }))
        .consume((err, x, push, next) => {
          if (err) {
            if (err.code === 'ENOENT' && srcPath === tmpPath) {
              next(readStream(dstPath, start))
            } else {
              push(err, null)
              next()
            }
          } else if (x === _.nil) {
            if (eof) {
              push(null, _.nil)
            } else {
              setTimeout(() => next(readStream(srcPath, start)), 200)
            }
          } else {
            start += x.length
            push(null, x)
            return next()
          }
        })

    return _([errors, readStream(tmpPath, 0)]).merge()
  }
}

Reproducible by running an md5 on the input and the output and comparing...

Ok, seems to work fine on the local file system however the following doesn't work:
    s3.upload({
      Key: toKey(fileId),
      Body: s
         .through(filebuffer(dstPath))
        .pipe(new PassThrough({ objectMode: false }))
        .on('error', push),
      Bucket: config.aws.bucket,
    })

while this works:
    s3.upload({
      Key: toKey(fileId),
      Body: s
        .pipe(new PassThrough({ objectMode: false }))
        .on('error', push),
      Bucket: config.aws.bucket,
    })

The corruption seems to occur in the beginning of the file...

Ok. The problem here is that filebuffer starts 'hot'. Which means one has to call a .pause after converting it to a node stream using s.pipe(new PassThrough()) i.e.
    const Body = s
         .through(filebuffer(dstPath))
        .pipe(new PassThrough({ objectMode: false }))
        .on('error', push)
    Body.pause()
    s3.upload({
      Key: toKey(fileId),
      Body,
      Bucket: config.aws.bucket,
    })

@vqvu: Not quite sure what is going on here...

I'm not sure what's going on either. Needing to call pause doesn't make any sense, since node and highland streams both start paused. Plus, the only thing calling pause does is to keep the stream from an automatically calling resume when someone does on('data'). Problem is, it looks like the AWS SDK uses on('readable') and read(). I don't see on('data') anywhere.
Unfortunately, I don't have an S3 bucket to play with. I've tried to reproduce this with the AWS logic but writing to the filesystem instead of over the network, and it seems to work fine (gist).
What kind of corruption are you seeing? Are you missing chunks at the start of the file? Are some chunks out of order? Also, what version of node are you using?

I'm missing data at the start of the file. Using nodejs 5.5.0.

@vqvu: Could I somehow fool the aws code that a highland stream is  instance of Stream so that I don't have to convert it?

Could it somehow be related to the PassThrough?

It's possible, though PassThrough is the most trivial of all trivial implementations, so if there is a problem, it's from the general Transform stream. The only thing I can think of is that PassThrough's implementation of _transform is synchronous, and there may be a bug where sync code sometimes doesn't work. It's a far-fetched theory, but easy to check by just implementing a PassThrough that calls the callback asynchronously.

Could also be related to that S3 will not read/write as fast as the local filesystem.

There's probably some race condition going on here, so this is likely related, but I have no idea in what way.

a highland stream is instance of Stream so that I don't have to convert it?

I don't think so. Even if you could, you'd have to implement read and on('readable'), and that's way more work than just adding pause.
You need to figure out where the problem is coming from: Highland, AWS, or PassThrough. Since you're missing data, the first thing I would check is whether or not the AWS code is receiving all of the data from the stream in the right order. Looks like you can do that by adding some console.log to AWS's fillStream here and manually checking that you see the correct data in the correct order.
If you see the right data in the right order, then it's likely an AWS bug. If you don't, then you should be able to reproduce this without AWS. The problem is at the start of the file, so it's unlikely that you'll need to simulate the slowness of the network to repro. The complex multi-part upload logic shouldn't have needed to execute yet.
Sorry I can't be of more help, but once you can reproduce without AWS (if AWS is not the problem), then I can do more.

@vqvu Just had another case where I must call pause or I will get corrupted data in the beginning:
      .pipe(new PassThrough())
      .pause()
      .on('end', () => {
        if (end) {
          res.end()
        }
      })
      .pipe(res, { end: false })

Hmm, that would suggest that that problem is either Highland or PassThrough. Does this case also use filebuffer?

@vqvu: Yes it also uses file buffer

do you know what kind of corruption you have ? missing some bytes at the beginning ?
one remark : i would write
eof = true
push(null, _.nil)

instead of
push(null, _.nil)
eof = true

push will do a full cycle on the highland machinery and you probably want to "eof" information to be updated before that.
maybe log the positions when writing to see if there is intermingling here + @vqvu do you confirm it is ok to setTimeout(..next..) inside consume ?

it could be interesting to confirm than upon ENOENT, position = 0 in
next(readStream({
srcPath: dstPath,
start: position,
}))

there is probably a race condition that we don't see yet.

Soo, we've done some updates that have solved some other issues but this one still remains:
const tails = new Map()

export function createReadStream(srcPath, opts = {}) {
  if (typeof srcPath !== 'string') {
    throw new Error(`Invalid source path. Expected a string`)
  }

  srcPath = path.resolve(srcPath)

  const tail = tails.get(srcPath)

  if (!tail || tail.eof) {
    return _(fs.createReadStream(srcPath, opts))
  }

  return tail::createReadStreamImpl(srcPath, opts, tail)
}

function createReadStreamImpl(srcPath, opts = {}) {
  let position = opts.start || 0

  if (this.err) {
    return _((push) => {
      push(this.err)
      push(null, _.nil)
    })
  }

  return _(fs.createReadStream(this.path, opts))
    .consume((err, x, push, next) => {
      if (this.err) {
        push(this.err, null)
        push(null, _.nil)
      } else if (err) {
        if (err.code === 'ENOENT') {
          next(_(createReadStream(srcPath, {
            start: position,
            end: opts.end,
          })))
        } else {
          push(err, null)
          push(null, _.nil)
        }
      } else if (x === _.nil) {
        if (this.eof) {
          // TODO: Not sure about -1
          assert(!opts.end || position - 1 <= opts.end)
          push(null, _.nil)
        } else if (this.err) {
          // TODO: Review & Remove
          push(this.err, null)
          push(null, _.nil)
        } else {
          setTimeout(() => next(this::createReadStreamImpl(srcPath, {
            start: position,
            end: opts.end,
          })), 200)
        }
      } else {
        position += x.length
        // TODO: Not sure about -1
        assert(!opts.end || position - 1 <= opts.end)
        push(null, x)
        next()
      }
    })
}

export function write(stream, dstPath) {
  dstPath = path.resolve(dstPath)

  const tail = { path: `${dstPath}.${cuid()}.tmp` }

  // NOTE: File is created before stream outputs any data or not...
  const ws = fs.createWriteStream(tail.path)

  tails.set(dstPath, tail)

  return new Promise((resolve, reject) => {
    function onError(err) {
      if (tail.err) {
        return
      }

      tail.err = err
      tails.delete(dstPath)
      fs.unlink(tail.path)
        .catch(err => {
          logger.debug(err)
          /* Do nothing... */
        })
      reject(err)
    }

    stream
      .on('error', onError)
      .pipe(ws)
      .on('error', onError)
      .on('finish', () => {
        if (tail.err) {
          return
        }
        fs.rename(tail.path, dstPath)
          .catch(err => {
            logger.debug(err)
            /* Do nothing... */
          })
          .then(() => {
            tail.eof = true
            tails.delete(dstPath)
            resolve()
          })
      })
  })
}

export default function(dstPath) {
  return s => {
    write(s, dstPath)
      .catch(err => {
        // Do nothing...
      })
    return createReadStream(dstPath)
  }
}

I will try to create a minimal example over the weekend.

do you confirm it is ok to setTimeout(..next..) inside consume ?

Yeah. That should be fine.

it could be interesting to confirm than upon ENOENT, position = 0 in
next(readStream({
srcPath: dstPath,
start: position,
}))

position can be anything here. ENOENT is only expected to get thrown after the temporary file is renamed, which can happen at any position. I believe the logic is:

Rename happens.
The currently consuming stream ends because the temporary file is no longer there.
setTimeout(...next) gets called.
ENOENT fires.
The stream switches to the non-temporary file.

I am surprised I would have thought that "rename" does not modify the file descriptor that is currently streaming and that ENOENT can only happen at the beginning. I did not try.

Hmm, what you're saying doesn't sound unreasonable. It could be that I'm wrong. I just ran the code as a whole. I haven't actually confirmed that rename acts like I described.

rename and unlink doesn't affect open file descriptors on Linux.

@ronag. the last re-org of the code is a bit hard to read + as you sait unit tests on what is or is not working would be helpful.
Regarding the ENOENT, I understand this case only happens when the file has already been renamed when createReadStreamImpl starts. It can maybe happen for very small files. Do you confirm that this is your intent for this part of the code ?
In this case, I would add an assert because I think that position == (opts.start || 0)
I may be wrong as I am only thought-debugging this.

ENOENT should/will only happen after the file has been renamed and you try to open it again with fs.createReadStream. Already open streams should/will not be affected by the rename.

I don't understand why you have
if (err.code === 'ENOENT') {
      next(_(fs.createReadStream(srcPath, {
        start: position,
        end: opts.end,
      })))
 }

In my understanding, this can only happen at the beginning of a stream, hence, position should be equal to opt.start.
In fact this comment is trying to understand the fact that the beginning of your files was corrupted in some cases. using "position" here could explain missing bytes if position's value has changed for whatever reason.

In my understanding, this can only happen at the beginning of a stream, hence, position should be equal to opt.start.

No. It can happen any time when the writer finishes and renames the file to the final name. The reader then needs to be able to switch over to the final name from the tmp.

Write starts to 1.raw.tmp
Read starts from 1.raw which reads from 1.raw.tmp
Write finishes to 1.raw.tmp and file is renamed to 1.raw
Read has not yet finished, but 1.raw.tmp no longer exists, continue reading from 1.raw at the previous position.

In my understanding, this can only happen at the beginning of a stream, hence, position should be equal to opt.start.
No. It can happen any time when the writer finishes and renames the file to the final name. The reader then needs to be able to switch over to the final name from the tmp.
Write starts to 1.raw.tmp
Read starts from 1.raw which reads from 1.raw.tmp
Write finishes to 1.raw.tmp and file is renamed to 1.raw
Read has not yet finished, but 1.raw.tmp no longer exists, continue reading from 1.raw at the previous position.

This was my question on rename vs file descriptors.
you say
Read has not yet finished, but 1.raw.tmp no longer exists

but the file descriptor Read was streaming from has not disappeared so imho streaming should continue. Nevertheless, I have not tested this so I may be wrong and you seem to have tested this yourself.

@jeromew: Updated code with comments.

but the file descriptor Read was streaming from has not disappeared so imho streaming should continue. Nevertheless, I have not tested this so I may be wrong and you seem to have tested this yourself.

You might be right. Let me think about it a bit and get back later. I'm just about to go into a meeting.

@jeromew: It can happen if the write finishes while the timeout is running...

ok I haven't checked what happens when we are starving on the tmp file that is being written (does it really reach this branch ?). In any case, you are passing the opts here
setTimeout(() => next(createReadStreamImpl(srcPath, {
          start: position,
          end: opts.end,
})), 200)

and upon ENOENT, you really want this "opts.start" to be the beginning of the "follow-me" stream, not the potentially moving target that is "position". I am not saying that this is a bug, but position has many reasons to move while it seems to me that the start of the "follow-me" stream should be fixed when createReadStreamImpl is called.

@jeromew: First of all thank you for the feedback!
Secondly I don't quite understand why you think it's suspicious and what do you think it should do instead?
Consider the following:
| Time | Reader | Writer|
|-----------------------------|
|   1 | position 5000 | - |
|   2 | eof | - |
|   3 | timeout | - |
|   4 | - | position: 5500 - |
|   5 | - | Rename file.raw.tmp => file.raw - |
|   6 | Open file.raw.tmp | - |
|   7 | ENOENT | - |
|   8 | Open file.raw @ position: 5000 | - |
|   9 | position: 5500 | - |
| 10 | EOF |  - |

suspicious in the sense that if for whatever reason
} else {
      position += x.length
...
}

is hit then you will have Open file.raw.tmp @ position: wrong position
I am not saying that it can happen (I am just "reading" code here) but the state machine is sufficiently complicated that I am just saying it could happen, especially if, as you said, you have a corrupted file in the end.
I am totally ok with the sequence you described. I would just like to be sure that Read asks for a read at pos 5000, it really happens at pos 5000.
the difference is just (your version)
if (err.code === 'ENOENT') {
  next(_(fs.createReadStream(srcPath, {
  start: position,
  end: opts.end,
})))

}
compared with (my version)
if (err.code === 'ENOENT') {
 next(_(fs.createReadStream(srcPath, {
   start: opts.start || 0,
   end: opts.end,
})))
}

Again, I may be wrong, but my version seems to do the same thing (since opts is defined in the setTimeout anyway) without the risk of position beeing updated by something.
Which is way I initially proposed an assert like
assert(position == (opts.start || 0))

if this assert throws, I think this is a bug because position gets updated in an expected way + you would be missing chunks in the output (corruption)

@jeromew: Now it finally makes sense. You are right. Thanks!

@jeromew: You just gave me an idea how to simplify things by keeping an open fd.
export function createReadStream(srcPath, opts = {}) {
  const tail = tails.get(srcPath)

  function createReadStreamImpl(srcPath, opts = {}) {
    let position = opts.start || 0

    const fileStream = fs.createReadStream(tail.path, { ...opts, autoClose: false })

    return _(fileStream)
      .consume((err, x, push, next) => {
        if (tail.err || err) {
          push(tail.err || err, null)
          push(null, _.nil)
        } else if (tail.eof) {
          if (tail.eof) {
            assert(!opts.end || position - 1 <= opts.end)
            fileStream.end()
            push(null, _.nil)
          }
        } else if (x === _.nil) {
          setTimeout(() => next(createReadStreamImpl(srcPath, {
            start: position,
            end: opts.end,
          })), 200)
        } else {
          position += x.length
          // TODO: Not sure about -1
          assert(!opts.end || position - 1 <= opts.end)
          push(null, x)
          next()
        }
      })
  }

  return _(fs.open(srcPath, 'r'))
    .flatMap(fd => createReadStreamImpl(srcPath, { ...opts, fd }))
}

Haven't tested for real yet.

I think this solves the issue with pause.
I will open a new issue focusing specifically on it if turns up again.
Here is the final simplified code:
export function createReadStream(srcPath, opts = {}) {
  srcPath = path.resolve(srcPath)

  const tail = tails.get(srcPath)

  if (!tail) {
    return _(fs.createReadStream(srcPath, opts))
  }

  const createReadStream = (fd) => _((push, next) => {
    const buffer = Buffer(8192)
    fs.read(fd, buffer, 0, buffer.length, null)
      .then((bytesRead) => {
        if (tail.err) {
          push(tail.err)
          push(null, _.nil)
        } else if (bytesRead > 0) {
          push(null, buffer.slice(0, bytesRead))
          next()
        } else if (tail.eof) {
          push(null, _.nil)
        } else {
          setTimeout(next, 200)
        }
      })
      .catch(err => {
        push(err)
        push(null, _.nil)
      })
  })

  return _(fs.open(tail.path, 'r'))
    .consume((err, x, push, next) => {
      if (err) {
        if (err.code === 'ENOENT') {
          next(_(fs.createReadStream(srcPath, opts)))
        } else {
          push(err)
        }
      } else if (x === _.nil) {
        push(null, _.nil)
      } else {
        next(createReadStream(x))
      }
    })
}

I think this solves kolpax's original question as well so we can probably close this issue?

Yep ok I'll close the issue now ; keep us posted


Support vtt and srt response types

https://platform.openai.com/docs/api-reference/audio/createTranscription#audio-createtranscription-response_format

This would be great, if the model would support str/vtt 🤞

Yep, you should be able to do that.
May I ask what's your use case for VTT/SRT response types, genuinely curios since I haven't these formats before besides in the OpenAI's API reference

May I ask what's your use case for VTT/SRT response types

VTT is the file that zoom audio transcripts come in, I see them during my interviews on zoom. This is a text file though not an audio file format as far as I know. I am not familiar with SRT.

Hi @fedirz, when is this feature expected to become available in a tagged version and then in the Docker image? Thanks!

Hey, I know it's pretty late, but I just pushed a new tag.