[CS] Adjust applied overload simplification

Currently simplifyAppliedOverloads depends on the order in which constraints are simplified, specifically that a lookup constraint for a function gets simplified before the applicable function constraint. This happens to work out just fine today with the order in which we re-activate constraints, but I'm planning on changing that order.
This PR changes the logic such that it's no longer affected by the order in which constraints are simplified. We'll now run it when either an applicable function constraint is added, or a new bind overload disjunction is added. This also means we no longer need to run it potentially multiple times when simplifying an applicable fn.

@swift-ci please test

@swift-ci please test source compatibility

@swift-ci please test compiler performance

Summary for master full
Unexpected test results, excluded stats for RxCocoa, Base64CoderSwiftUI, SwifterSwift
Regressions found (see below)

Debug-batch

debug-batch brief
debug-batch detailed

Release

release brief
release detailed

Debug-batch

debug-batch brief

Regressed (0)

name
old
new
delta
delta_pct

Improved (0)

name
old
new
delta
delta_pct

Unchanged (delta < 1.0% or delta < 100.0ms) (3)

name
old
new
delta
delta_pct

Frontend.NumInstructionsExecuted
56,274,042,594,982
56,124,652,123,075
-149,390,471,907
-0.27%

LLVM.NumLLVMBytesOutput
1,869,665,058
1,869,665,700
642
0.0%

time.swift-driver.wall
3966.6s
3935.0s
-31.6s
-0.8%

debug-batch detailed

Regressed (2)

name
old
new
delta
delta_pct

Driver.NumDriverPipePolls
105,739
108,677
2,938
2.78% :no_entry:

Driver.NumDriverPipeReads
96,592
99,521
2,929
3.03% :no_entry:

Improved (1)

name
old
new
delta
delta_pct

Sema.IsCallableNominalTypeRequest
2,169
2,137
-32
-1.48% :white_check_mark:

Unchanged (delta < 1.0% or delta < 100.0ms) (229)

name
old
new
delta
delta_pct

AST.ImportSetCacheHit
1,945,393
1,945,665
272
0.01%

AST.ImportSetCacheMiss
605,938
605,951
13
0.0%

AST.ImportSetFoldHit
289,352
289,367
15
0.01%

AST.ImportSetFoldMiss
316,585
316,584
-1
-0.0%

AST.ModuleShadowCacheHit
3,597
3,597
0
0.0%

AST.ModuleShadowCacheMiss
1,866
1,866
0
0.0%

AST.ModuleVisibilityCacheHit
30,263
30,263
0
0.0%

AST.ModuleVisibilityCacheMiss
6,961
6,961
0
0.0%

AST.NumASTBytesAllocated
52,785,474,967
52,727,577,192
-57,897,775
-0.11%

AST.NumASTScopeLookups
3,620,920
3,621,082
162
0.0%

AST.NumBraceStmtASTScopeExpansions
638,329
638,329
0
0.0%

AST.NumBraceStmtASTScopes
638,329
638,329
0
0.0%

AST.NumDecls
144,947
144,947
0
0.0%

AST.NumDependencies
302,585
302,599
14
0.0%

AST.NumIterableTypeBodyASTScopeExpansions
238,553
238,566
13
0.01%

AST.NumIterableTypeBodyASTScopes
287,274
287,353
79
0.03%

AST.NumLinkLibraries
0
0
0
0.0%

AST.NumLoadedModules
283,910
283,910
0
0.0%

AST.NumLocalTypeDecls
255
255
0
0.0%

AST.NumModuleLookupClassMember
6,993
6,993
0
0.0%

AST.NumModuleLookupValue
48,084,521
48,089,728
5,207
0.01%

AST.NumObjCMethods
25,242
25,242
0
0.0%

AST.NumOperators
589
589
0
0.0%

AST.NumPrecedenceGroups
93
93
0
0.0%

AST.NumReferencedDynamicNames
191
191
0
0.0%

AST.NumReferencedMemberNames
6,678,567
6,678,345
-222
-0.0%

AST.NumReferencedTopLevelNames
571,937
571,937
0
0.0%

AST.NumSourceBuffers
323,909
323,909
0
0.0%

AST.NumSourceLines
4,828,874
4,828,874
0
0.0%

AST.NumSourceLinesPerSecond
3,376,286
3,383,528
7,242
0.21%

AST.NumTotalClangImportedEntities
1,821,009
1,821,233
224
0.01%

Driver.ChildrenMaxRSS
261,304,342,528
261,078,384,640
-225,957,888
-0.09%

Driver.DriverDepCascadingDynamic
0
0
0
0.0%

Driver.DriverDepCascadingExternal
0
0
0
0.0%

Driver.DriverDepCascadingMember
0
0
0
0.0%

Driver.DriverDepCascadingNominal
0
0
0
0.0%

Driver.DriverDepCascadingTopLevel
0
0
0
0.0%

Driver.DriverDepDynamic
0
0
0
0.0%

Driver.DriverDepExternal
0
0
0
0.0%

Driver.DriverDepMember
0
0
0
0.0%

Driver.DriverDepNominal
0
0
0
0.0%

Driver.DriverDepTopLevel
0
0
0
0.0%

Driver.NumDriverJobsRun
28,809
28,809
0
0.0%

Driver.NumDriverJobsSkipped
0
0
0
0.0%

Driver.NumProcessFailures
0
0
0
0.0%

Frontend.MaxMallocUsage
1,125,939,673,392
1,124,142,139,056
-1,797,534,336
-0.16%

Frontend.NumInstructionsExecuted
56,274,042,594,982
56,124,652,123,075
-149,390,471,907
-0.27%

Frontend.NumProcessFailures
0
0
0
0.0%

IRGen.IRGenSourceFileRequest
27,506
27,506
0
0.0%

IRGen.IRGenWholeModuleRequest
20
20
0
0.0%

IRModule.NumGOTEntries
249,106
249,106
0
0.0%

IRModule.NumIRAliases
201,631
201,631
0
0.0%

IRModule.NumIRBasicBlocks
8,194,698
8,194,702
4
0.0%

IRModule.NumIRComdatSymbols
0
0
0
0.0%

IRModule.NumIRFunctions
3,425,656
3,425,660
4
0.0%

IRModule.NumIRGlobals
3,832,852
3,832,852
0
0.0%

IRModule.NumIRIFuncs
0
0
0
0.0%

IRModule.NumIRInsts
94,144,928
94,144,976
48
0.0%

IRModule.NumIRNamedMetaData
139,130
139,130
0
0.0%

IRModule.NumIRValueSymbols
6,585,362
6,585,366
4
0.0%

LLVM.NumLLVMBytesOutput
1,869,665,058
1,869,665,700
642
0.0%

Parse.CodeCompletionSecondPassRequest
0
0
0
0.0%

Parse.NumFunctionsParsed
275,938
275,938
0
0.0%

Parse.NumIterableDeclContextParsed
618,413
618,414
1
0.0%

Parse.ParseAbstractFunctionBodyRequest
251,941
251,941
0
0.0%

Parse.ParseMembersRequest
486,946
486,947
1
0.0%

Parse.ParseSourceFileRequest
314,763
314,763
0
0.0%

SILGen.SILGenSourceFileRequest
27,506
27,506
0
0.0%

SILGen.SILGenWholeModuleRequest
1,292
1,292
0
0.0%

SILModule.NumSILGenDefaultWitnessTables
0
0
0
0.0%

SILModule.NumSILGenFunctions
1,755,745
1,755,747
2
0.0%

SILModule.NumSILGenGlobalVariables
54,955
54,955
0
0.0%

SILModule.NumSILGenVtables
19,063
19,063
0
0.0%

SILModule.NumSILGenWitnessTables
75,017
75,017
0
0.0%

SILModule.NumSILOptDefaultWitnessTables
0
0
0
0.0%

SILModule.NumSILOptFunctions
2,589,081
2,589,083
2
0.0%

SILModule.NumSILOptGlobalVariables
56,642
56,642
0
0.0%

SILModule.NumSILOptVtables
32,288
32,288
0
0.0%

SILModule.NumSILOptWitnessTables
173,885
173,885
0
0.0%

SILOptimizer.ExecuteSILPipelineRequest
111,381
111,381
0
0.0%

Sema.AbstractGenericSignatureRequest
32,950
32,950
0
0.0%

Sema.AccessLevelRequest
11,953,690
11,939,757
-13,933
-0.12%

Sema.AnyObjectLookupRequest
283
283
0
0.0%

Sema.AreAllStoredPropertiesDefaultInitableRequest
21,501
21,501
0
0.0%

Sema.AttachedFunctionBuilderRequest
1
1
0
0.0%

Sema.AttachedPropertyWrapperTypeRequest
575,181
575,181
0
0.0%

Sema.AttachedPropertyWrappersRequest
2,388,578
2,388,577
-1
-0.0%

Sema.CallerSideDefaultArgExprRequest
79,248
79,248
0
0.0%

Sema.CheckRedeclarationRequest
1,005,852
1,005,852
0
0.0%

Sema.ClassAncestryFlagsRequest
101,289
101,289
0
0.0%

Sema.ClosureHasExplicitResultRequest
92,741
92,741
0
0.0%

Sema.CollectOverriddenDeclsRequest
7,300,625
7,294,921
-5,704
-0.08%

Sema.CompareDeclSpecializationRequest
476,497
477,217
720
0.15%

Sema.CursorInfoRequest
0
0
0
0.0%

Sema.CustomAttrNominalRequest
1
1
0
0.0%

Sema.DefaultAndMaxAccessLevelRequest
55,178
55,178
0
0.0%

Sema.DefaultArgumentExprRequest
39,602
39,602
0
0.0%

Sema.DefaultArgumentInitContextRequest
461
461
0
0.0%

Sema.DefaultDefinitionTypeRequest
8,145
8,145
0
0.0%

Sema.DefaultTypeRequest
491,512
491,590
78
0.02%

Sema.DifferentiableAttributeTypeCheckRequest
0
0
0
0.0%

Sema.DirectLookupRequest
33,770,482
33,765,848
-4,634
-0.01%

Sema.DirectOperatorLookupRequest
491,844
491,903
59
0.01%

Sema.DirectPrecedenceGroupLookupRequest
145,161
145,161
0
0.0%

Sema.DynamicallyReplacedDeclRequest
1,035,052
1,035,052
0
0.0%

Sema.EmittedMembersRequest
26,601
26,601
0
0.0%

Sema.EnumRawTypeRequest
22,622
22,622
0
0.0%

Sema.EnumRawValuesRequest
10,786
10,786
0
0.0%

Sema.ExistentialConformsToSelfRequest
11,308
11,333
25
0.22%

Sema.ExistentialTypeSupportedRequest
16,396
16,396
0
0.0%

Sema.ExpandASTScopeRequest
6,670,040
6,670,376
336
0.01%

Sema.ExtendedNominalRequest
495,921
495,921
0
0.0%

Sema.ExtendedTypeRequest
78,031
78,041
10
0.01%

Sema.FunctionBuilderTypeRequest
1
1
0
0.0%

Sema.FunctionOperatorRequest
51,372
51,372
0
0.0%

Sema.GenericParamListRequest
8,980,368
8,971,856
-8,512
-0.09%

Sema.GenericSignatureRequest
2,352,093
2,352,213
120
0.01%

Sema.GetDestructorRequest
27,246
27,246
0
0.0%

Sema.HasCircularInheritanceRequest
23,001
23,001
0
0.0%

Sema.HasCircularInheritedProtocolsRequest
10,372
10,372
0
0.0%

Sema.HasCircularRawValueRequest
9,196
9,196
0
0.0%

Sema.HasDefaultInitRequest
52,918
52,918
0
0.0%

Sema.HasDynamicCallableAttributeRequest
0
0
0
0.0%

Sema.HasDynamicMemberLookupAttributeRequest
576,467
576,369
-98
-0.02%

Sema.HasMemberwiseInitRequest
19,769
19,769
0
0.0%

Sema.HasMissingDesignatedInitializersRequest
25,279
25,279
0
0.0%

Sema.HasUserDefinedDesignatedInitRequest
52,928
52,928
0
0.0%

Sema.InferredGenericSignatureRequest
164,334
164,347
13
0.01%

Sema.InheritedDeclsReferencedRequest
5,169,486
5,168,909
-577
-0.01%

Sema.InheritedProtocolsRequest
516,359
516,395
36
0.01%

Sema.InheritedTypeRequest
284,480
284,633
153
0.05%

Sema.InheritsSuperclassInitializersRequest
26,246
26,246
0
0.0%

Sema.InitKindRequest
93,774
93,774
0
0.0%

Sema.InterfaceTypeRequest
13,274,572
13,266,389
-8,183
-0.06%

Sema.IsABICompatibleOverrideRequest
138,484
138,484
0
0.0%

Sema.IsAccessorTransparentRequest
315,634
315,634
0
0.0%

Sema.IsDeclApplicableRequest
0
0
0
0.0%

Sema.IsDynamicRequest
1,727,754
1,727,754
0
0.0%

Sema.IsFinalRequest
2,603,780
2,604,109
329
0.01%

Sema.IsGetterMutatingRequest
428,515
428,515
0
0.0%

Sema.IsImplicitlyUnwrappedOptionalRequest
2,382,197
2,383,540
1,343
0.06%

Sema.IsObjCRequest
1,546,893
1,546,629
-264
-0.02%

Sema.IsSetterMutatingRequest
346,657
346,657
0
0.0%

Sema.IsStaticRequest
886,593
886,672
79
0.01%

Sema.LazyStoragePropertyRequest
2,492
2,492
0
0.0%

Sema.LookupAllConformancesInContextRequest
84,558
84,558
0
0.0%

Sema.LookupConformanceInModuleRequest
37,315,564
37,207,702
-107,862
-0.29%

Sema.LookupInModuleRequest
6,187,457
6,191,893
4,436
0.07%

Sema.LookupInfixOperatorRequest
82,854
82,854
0
0.0%

Sema.LookupPostfixOperatorRequest
184
184
0
0.0%

Sema.LookupPrecedenceGroupRequest
32,174
32,174
0
0.0%

Sema.LookupPrefixOperatorRequest
563
563
0
0.0%

Sema.MangleLocalTypeDeclRequest
510
510
0
0.0%

Sema.ModuleQualifiedLookupRequest
2,822,202
2,826,515
4,313
0.15%

Sema.NamedLazyMemberLoadSuccessCount
20,222,888
20,203,229
-19,659
-0.1%

Sema.NamingPatternRequest
203,735
203,734
-1
-0.0%

Sema.NeedsNewVTableEntryRequest
679,577
679,577
0
0.0%

Sema.NumAccessorBodiesSynthesized
193,430
193,430
0
0.0%

Sema.NumAccessorsSynthesized
285,614
285,614
0
0.0%

Sema.NumConformancesDeserialized
8,831,132
8,825,770
-5,362
-0.06%

Sema.NumConstraintScopes
32,660,460
32,667,504
7,044
0.02%

Sema.NumConstraintsConsideredForEdgeContraction
114,358,046
113,822,904
-535,142
-0.47%

Sema.NumCrossImportsChecked
0
0
0
0.0%

Sema.NumCrossImportsFound
0
0
0
0.0%

Sema.NumCyclicOneWayComponentsCollapsed
0
0
0
0.0%

Sema.NumDeclsDeserialized
68,476,338
68,429,925
-46,413
-0.07%

Sema.NumDeclsTypechecked
1,450,456
1,450,456
0
0.0%

Sema.NumGenericSignatureBuilders
1,252,894
1,253,020
126
0.01%

Sema.NumLazyIterableDeclContexts
7,996,308
7,993,087
-3,221
-0.04%

Sema.NumLazyRequirementSignatures
778,153
777,795
-358
-0.05%

Sema.NumLazyRequirementSignaturesLoaded
577,465
577,201
-264
-0.05%

Sema.NumLeafScopes
20,634,907
20,655,720
20,813
0.1%

Sema.NumTypesDeserialized
21,481,894
21,480,053
-1,841
-0.01%

Sema.NumTypesValidated
1,426,492
1,426,520
28
0.0%

Sema.NumUnloadedLazyIterableDeclContexts
4,995,773
4,995,530
-243
-0.0%

Sema.OpaqueReadOwnershipRequest
270,338
270,338
0
0.0%

Sema.OpaqueResultTypeRequest
0
0
0
0.0%

Sema.OperatorPrecedenceGroupRequest
749
749
0
0.0%

Sema.OverriddenDeclsRequest
2,433,392
2,433,733
341
0.01%

Sema.ParamSpecifierRequest
1,218,738
1,218,747
9
0.0%

Sema.PatternBindingEntryRequest
465,989
465,988
-1
-0.0%

Sema.PatternTypeRequest
540,517
540,516
-1
-0.0%

Sema.PreCheckFunctionBuilderRequest
0
0
0
0.0%

Sema.PropertyWrapperBackingPropertyInfoRequest
570,483
570,483
0
0.0%

Sema.PropertyWrapperBackingPropertyTypeRequest
575,181
575,181
0
0.0%

Sema.PropertyWrapperMutabilityRequest
629,128
629,128
0
0.0%

Sema.PropertyWrapperTypeInfoRequest
7
7
0
0.0%

Sema.ProtocolRequiresClassRequest
35,464
35,548
84
0.24%

Sema.ProvideDefaultImplForRequest
7,300,625
7,294,921
-5,704
-0.08%

Sema.QualifiedLookupRequest
5,487,953
5,487,432
-521
-0.01%

Sema.RangeInfoRequest
0
0
0
0.0%

Sema.RequirementRequest
113,224
113,235
11
0.01%

Sema.RequirementSignatureRequest
628,372
628,249
-123
-0.02%

Sema.RequiresOpaqueAccessorsRequest
1,333,710
1,333,710
0
0.0%

Sema.RequiresOpaqueModifyCoroutineRequest
259,760
259,760
0
0.0%

Sema.ResilienceExpansionRequest
1,754,551
1,754,593
42
0.0%

Sema.ResolveEffectiveMemberwiseInitRequest
0
0
0
0.0%

Sema.ResolveImplicitMemberRequest
381,766
381,570
-196
-0.05%

Sema.ResolveProtocolNameRequest
0
0
0
0.0%

Sema.ResultTypeRequest
647,279
647,279
0
0.0%

Sema.RootAndResultTypeOfKeypathDynamicMemberRequest
0
0
0
0.0%

Sema.RootTypeOfKeypathDynamicMemberRequest
0
0
0
0.0%

Sema.SPIGroupsRequest
13,592,214
13,582,824
-9,390
-0.07%

Sema.ScopedImportLookupRequest
1,076
1,076
0
0.0%

Sema.SelfAccessKindRequest
609,572
609,640
68
0.01%

Sema.SelfBoundsFromWhereClauseRequest
1,570,383
1,572,321
1,938
0.12%

Sema.SetterAccessLevelRequest
145,926
145,926
0
0.0%

Sema.StorageImplInfoRequest
1,449,785
1,449,785
0
0.0%

Sema.StoredPropertiesAndMissingMembersRequest
31,852
31,852
0
0.0%

Sema.StoredPropertiesRequest
320,957
320,957
0
0.0%

Sema.StructuralTypeRequest
2,037
2,037
0
0.0%

Sema.SuperclassDeclRequest
406,701
406,709
8
0.0%

Sema.SuperclassTypeRequest
54,086
54,099
13
0.02%

Sema.SynthesizeAccessorRequest
285,614
285,614
0
0.0%

Sema.SynthesizeDefaultInitRequest
4,856
4,856
0
0.0%

Sema.SynthesizeMemberwiseInitRequest
3,164
3,164
0
0.0%

Sema.TypeCheckFunctionBodyUntilRequest
543,354
543,354
0
0.0%

Sema.TypeCheckSourceFileRequest
27,826
27,826
0
0.0%

Sema.TypeDeclsFromWhereClauseRequest
29,641
29,641
0
0.0%

Sema.TypeEraserHasViableInitRequest
0
0
0
0.0%

Sema.TypeRelationCheckRequest
0
0
0
0.0%

Sema.TypeWitnessRequest
9,067
9,087
20
0.22%

Sema.USRGenerationRequest
8,672,285
8,666,791
-5,494
-0.06%

Sema.UnderlyingTypeDeclsReferencedRequest
257,969
258,012
43
0.02%

Sema.UnderlyingTypeRequest
34,611
34,631
20
0.06%

Sema.UnqualifiedLookupRequest
3,769,653
3,769,815
162
0.0%

Sema.ValidatePrecedenceGroupRequest
182,645
182,645
0
0.0%

Sema.ValueWitnessRequest
65,166
65,166
0
0.0%

TBDGen.GenerateTBDRequest
27,526
27,526
0
0.0%

Release

release brief

Regressed (0)

name
old
new
delta
delta_pct

Improved (0)

name
old
new
delta
delta_pct

Unchanged (delta < 1.0% or delta < 100.0ms) (3)

name
old
new
delta
delta_pct

Frontend.NumInstructionsExecuted
55,214,102,602,612
55,159,617,724,991
-54,484,877,621
-0.1%

LLVM.NumLLVMBytesOutput
1,856,153,968
1,856,151,472
-2,496
-0.0%

time.swift-driver.wall
6294.5s
6292.2s
-2.3s
-0.04%

release detailed

Regressed (0)

name
old
new
delta
delta_pct

Improved (0)

name
old
new
delta
delta_pct

Unchanged (delta < 1.0% or delta < 100.0ms) (17)

name
old
new
delta
delta_pct

AST.NumLoadedModules
31,800
31,800
0
0.0%

AST.NumTotalClangImportedEntities
466,355
466,355
0
0.0%

IRModule.NumIRBasicBlocks
4,916,857
4,916,857
0
0.0%

IRModule.NumIRFunctions
2,826,914
2,826,914
0
0.0%

IRModule.NumIRGlobals
3,324,399
3,324,399
0
0.0%

IRModule.NumIRInsts
49,764,872
49,764,872
0
0.0%

IRModule.NumIRValueSymbols
5,783,975
5,783,975
0
0.0%

LLVM.NumLLVMBytesOutput
1,856,153,968
1,856,151,472
-2,496
-0.0%

SILModule.NumSILGenFunctions
1,228,854
1,228,856
2
0.0%

SILModule.NumSILOptFunctions
1,034,579
1,034,579
0
0.0%

Sema.NumConformancesDeserialized
3,554,237
3,554,257
20
0.0%

Sema.NumConstraintScopes
32,359,783
32,366,795
7,012
0.02%

Sema.NumDeclsDeserialized
11,082,563
11,083,367
804
0.01%

Sema.NumGenericSignatureBuilders
277,319
277,345
26
0.01%

Sema.NumLazyIterableDeclContexts
1,375,671
1,375,728
57
0.0%

Sema.NumTypesDeserialized
5,384,354
5,385,168
814
0.02%

Sema.NumTypesValidated
847,880
847,880
0
0.0%

Maybe a better approach would be to remove disjunction constraint and associate all of the choices direct with corresponding type variable as a set of possible types.

@xedin Could you elaborate on what you mean by this?
I definitely agree that it would be nice to remove a lot of the calls to gatherConstraints! Would you be okay with me landing this as a temporary measure to get https://github.com/apple/swift/pull/30487 landed in time for 5.3 though? (which does remove a particularly expensive call to gatherConstraints)
I'd be more than happy to work on a follow-up to help remove more calls to gatherConstraints.

I think re-activating all of the constraints is a bit backwards if we are trying to avoid traversing constraint graph to find constraints related to newly bound type variable (I haven't actually looked at the PR so I'm just assuming that's what it does). Is it possible to optimize constraint graph representation so equivalence classes are not as expensive to traverse?

Could you elaborate on what you mean by this?

I think we should move towards a solver where bindings are computed incrementally as new constraints are being added/removed and each type variable (or constraint system) keeps track of its current "possible types" set. For disjunctions we already allocate a new type variable which then gets bound to a particular choice, if we where to keep disjunction choices are "possible types" that would unify TypeVariableStep and DisjunctionStep and avoid gathering constraints in certain cases like simplifyAppliedOverloads and other optimizations which currently look for disjunctions.

I think re-activating all of the constraints is a bit backwards if we are trying to avoid traversing constraint graph to find constraints related to newly bound type variable (I haven't actually looked at the PR so I'm just assuming that's what it does).

@xedin The idea behind re-activating all constraints was that if we were to fix gatherConstraints to visit all fixed bindings and adjacencies for a type variable in AllMentions mode (such as in https://github.com/apple/swift/pull/26691), then it might be worth doing away with the graph traversal altogether and just re-activating everything in the component. The benchmark results were actually not too bad :)
Though having thought about it some more, I'm actually not sure why we need to visit constraints along a type variable's adjacencies, do you recall why we do this? The test suite appears to more or less pass if we just visit fixed bindings (which I believe should be quite a bit cheaper to traverse).
Just to be clear, my primary motive here is correctness, we currently miscompile programs like this:
func foo(_ x: Int) {
  (x ?? 0) as String
}

Because we don't transitively visit fixed bindings when we bind a type variable, and then drop the coercion constraint. If possible, I'd really like to get a fix for this into 5.3 :)

Is it possible to optimize constraint graph representation so equivalence classes are not as expensive to traverse?

Hmm, I suppose we could try unifying the constraints and fixed bindings we need to visit on the representative, though I'm not sure how much of a win that would be as it would mean additional work when adding/removing constraints and rolling back a scope.

I think we should move towards a solver where bindings are computed incrementally as new constraints are being added/removed and each type variable (or constraint system) keeps track of its current "possible types" set. For disjunctions we already allocate a new type variable which then gets bound to a particular choice, if we where to keep disjunction choices are "possible types" that would unify TypeVariableStep and DisjunctionStep and avoid gathering constraints in certain cases like simplifyAppliedOverloads and other optimizations which currently look for disjunctions.

That would be great! Though for simplifyAppliedOverloads wouldn't we still have to use gatherConstraints to look through intermediate optional object constraints?

func foo(_ x: Int) {
  (x ?? 0) as String
}

This example looks like a problem with binding inference, of overload of ?? which accepts both arguments as optional we'd try to binding argument to parameter directly instead of preserving optional.  This is actually a consequence of  https://github.com/apple/swift/blob/master/lib/Sema/CSBindings.cpp#L780 which doesn't seem to be correct.
I think the intention of that code was to avoid inferring incorrect bindings but unwrapping an optional there leads to us trying to binding two type variables together, which should actually be avoided.
I think it should be possible to extend this logic to discard bindings or at least mark them as FullyBound in cases where type doesn't conform to a literal protocol.
WDYT?

@swift-ci please test

@swift-ci please test Windows

Talked with Pavel offline, we're going to merge this so the fix for gatherConstraints can be landed, but we should re-visit it when we refactor how we deal with bindings.


2.0 feature is optional for OCL 3.0

in test_CL_DEVICE_OPENCL_C_VERSION_features function, 2.0 features should be optional for 3.0,
const Version clc_version = get_device_cl_c_version(device);
if (clc_version >= Version(2, 0))
{
    bool has_all_OpenCL_C_20_features =
        features.supports__opencl_c_atomic_order_acq_rel
        && features.supports__opencl_c_atomic_order_seq_cst
        && features.supports__opencl_c_atomic_scope_device
        && features.supports__opencl_c_atomic_scope_all_devices
        && features.supports__opencl_c_device_enqueue
        && features.supports__opencl_c_generic_address_space
        && features.supports__opencl_c_pipes
        && features.supports__opencl_c_program_scope_global_variables
        && features.supports__opencl_c_work_group_collective_functions;

    if (features.supports__opencl_c_images)
    {
        has_all_OpenCL_C_20_features = has_all_OpenCL_C_20_features
            && features.supports__opencl_c_3d_image_writes
            && features.supports__opencl_c_read_write_images;
    }

    test_assert_error(
        has_all_OpenCL_C_20_features,
        "At least one required OpenCL C 2.0 feature is missing!");
}

return TEST_PASS;

Hey,
I think the code snippet you pasted is correct in its current state and this branch should be skipped if the optional features are not supported.
I took a look at the source for get_device_cl_c_version, and it uses the CL_DEVICE_OPENCL_C_VERSION query to query for the OpenCL C version on all devices with versions greater than 1.0. From the spec it says that CL_DEVICE_OPNECL_C_VERSION returns the most recent backward compatible OpenCL C version supported by the device:

Because OpenCL 3.0 is backwards compatible with OpenCL C 1.2, an OpenCL 3.0 device must support at least OpenCL C 1.2. An OpenCL 3.0 device may return an OpenCL C version newer than OpenCL C 1.2 if and only if all optional OpenCL C features are supported by the device for the newer version.

So, I think in the above code, clc_version >= Version(2, 0) will only ever be true for a 3.0 device if it supports all the optional features. I've tested this locally with a 3.0 device that optionally does not support these features and this branch is not taken.

got it, thanks


Order of the generated operations should be consistent between generations

There should be a consistent order of the generated code (formerly in cmd/XXX-serve/configure_XXX.go and restapi/operations/XXX_api.go) persistent between generations of the same and successive versions of go-swagger.
For now I have a different order between re-runs of the codegen:
Here is the diff of the generations:
diff --git a/src/cmd/attendlist-server/configure_attendlist.go b/src/cmd/attendlist-server/configure_attendlist.go
index 541c88d..5940671 100644
--- a/src/cmd/attendlist-server/configure_attendlist.go
+++ b/src/cmd/attendlist-server/configure_attendlist.go
@@ -19,20 +19,20 @@ func configureAPI(api *operations.AttendlistAPI) {

 	api.JSONProducer = httpkit.JSONProducer()

-	api.GetEventsHandler = events.GetEventsHandlerFunc(func() (*[]models.Event, error) {
-		return nil, errors.NotImplemented("operation getEvents has not yet been implemented")
+	api.PutEventByIDHandler = events.PutEventByIDHandlerFunc(func(params events.PutEventByIDParams) error {
+		return errors.NotImplemented("operation putEventById has not yet been implemented")
 	})
-	api.GetEventByIDHandler = events.GetEventByIDHandlerFunc(func() (*models.Event, error) {
-		return nil, errors.NotImplemented("operation getEventById has not yet been implemented")
+	api.DeleteEventByIDHandler = events.DeleteEventByIDHandlerFunc(func() error {
+		return errors.NotImplemented("operation deleteEventById has not yet been implemented")
 	})
 	api.PostEventHandler = events.PostEventHandlerFunc(func(params events.PostEventParams) error {
 		return errors.NotImplemented("operation postEvent has not yet been implemented")
 	})
-	api.PutEventByIDHandler = events.PutEventByIDHandlerFunc(func(params events.PutEventByIDParams) error {
-		return errors.NotImplemented("operation putEventById has not yet been implemented")
+	api.GetEventByIDHandler = events.GetEventByIDHandlerFunc(func() (*models.Event, error) {
+		return nil, errors.NotImplemented("operation getEventById has not yet been implemented")
 	})
-	api.DeleteEventByIDHandler = events.DeleteEventByIDHandlerFunc(func() error {
-		return errors.NotImplemented("operation deleteEventById has not yet been implemented")
+	api.GetEventsHandler = events.GetEventsHandlerFunc(func() (*[]models.Event, error) {
+		return nil, errors.NotImplemented("operation getEvents has not yet been implemented")
 	})

 }
diff --git a/src/restapi/operations/attendlist_api.go b/src/restapi/operations/attendlist_api.go
index 224aa79..b484588 100644
--- a/src/restapi/operations/attendlist_api.go
+++ b/src/restapi/operations/attendlist_api.go
@@ -44,16 +44,16 @@ type AttendlistAPI struct {
 	// JSONProducer registers a producer for a "application/json" mime type
 	JSONProducer httpkit.Producer

-	// GetEventsHandler sets the operation handler for the get events operation
-	GetEventsHandler events.GetEventsHandler
-	// GetEventByIDHandler sets the operation handler for the get event by id operation
-	GetEventByIDHandler events.GetEventByIDHandler
-	// PostEventHandler sets the operation handler for the post event operation
-	PostEventHandler events.PostEventHandler
 	// PutEventByIDHandler sets the operation handler for the put event by id operation
 	PutEventByIDHandler events.PutEventByIDHandler
 	// DeleteEventByIDHandler sets the operation handler for the delete event by id operation
 	DeleteEventByIDHandler events.DeleteEventByIDHandler
+	// PostEventHandler sets the operation handler for the post event operation
+	PostEventHandler events.PostEventHandler
+	// GetEventByIDHandler sets the operation handler for the get event by id operation
+	GetEventByIDHandler events.GetEventByIDHandler
+	// GetEventsHandler sets the operation handler for the get events operation
+	GetEventsHandler events.GetEventsHandler

 	// ServeError is called when an error is received, there is a default handler
 	// but you can set your own with this
@@ -102,24 +102,24 @@ func (o *AttendlistAPI) Validate() error {
 		unregistered = append(unregistered, "JSONProducer")
 	}

-	if o.GetEventsHandler == nil {
-		unregistered = append(unregistered, "GetEventsHandler")
+	if o.PutEventByIDHandler == nil {
+		unregistered = append(unregistered, "PutEventByIDHandler")
 	}

-	if o.GetEventByIDHandler == nil {
-		unregistered = append(unregistered, "GetEventByIDHandler")
+	if o.DeleteEventByIDHandler == nil {
+		unregistered = append(unregistered, "DeleteEventByIDHandler")
 	}

 	if o.PostEventHandler == nil {
 		unregistered = append(unregistered, "PostEventHandler")
 	}

-	if o.PutEventByIDHandler == nil {
-		unregistered = append(unregistered, "PutEventByIDHandler")
+	if o.GetEventByIDHandler == nil {
+		unregistered = append(unregistered, "GetEventByIDHandler")
 	}

-	if o.DeleteEventByIDHandler == nil {
-		unregistered = append(unregistered, "DeleteEventByIDHandler")
+	if o.GetEventsHandler == nil {
+		unregistered = append(unregistered, "GetEventsHandler")
 	}

 	if len(unregistered) > 0 {
@@ -189,15 +189,15 @@ func (o *AttendlistAPI) initHandlerCache() {

 	o.handlers = make(map[string]http.Handler)

-	o.handlers["getEvents"] = events.NewGetEvents(o.context, o.GetEventsHandler)
+	o.handlers["putEventById"] = events.NewPutEventByID(o.context, o.PutEventByIDHandler)

-	o.handlers["getEventById"] = events.NewGetEventByID(o.context, o.GetEventByIDHandler)
+	o.handlers["deleteEventById"] = events.NewDeleteEventByID(o.context, o.DeleteEventByIDHandler)

 	o.handlers["postEvent"] = events.NewPostEvent(o.context, o.PostEventHandler)

-	o.handlers["putEventById"] = events.NewPutEventByID(o.context, o.PutEventByIDHandler)
+	o.handlers["getEventById"] = events.NewGetEventByID(o.context, o.GetEventByIDHandler)

-	o.handlers["deleteEventById"] = events.NewDeleteEventByID(o.context, o.DeleteEventByIDHandler)
+	o.handlers["getEvents"] = events.NewGetEvents(o.context, o.GetEventsHandler)

 }

And here is my spec:
swagger: '2.0'
info:
  version: 0.0.0
  title: 'AttendList'
  description: |
    AttendList service.
  contact:
    name: API Support
    url: http://attendlist.co/support
    email<EMAIL_ADDRESS>consumes:
  - application/json
produces:
  - application/json
definitions:
  Event:
    title: Event
    type: object
    properties:
      Id:
        type: integer
        format: int64
        readOnly: true
      Version:
        type: integer
        format: int64
        readOnly: true
      Created:
        type: integer
        format: int64
        readOnly: true
      Updated:
        type: integer
        format: int64
        readOnly: true
      Deleted:
        type: boolean
        readOnly: true
      StartDate:
        type: string
        format: date-time
      EndDate:
        type: string
        format: date-time
      Latitude:
        type: number
        format: float
      Longitude:
        type: number
        format: float
      Name:
        type: string
      URL:
        type: string
      Notes:
        type: string
      Autosearch:
        type: boolean
    example:
      StartDate: "2015-11-01T12:00:00Z"
      EndDate: "2015-11-05T12:00:00Z"
      Latitude: 59.842609
      Longitude: 30.319087
      Name: "Bikers meeting"
      URL: "http://attendlist.co"
      Notes: "Yet another bikers meeting"
      Autosearch: false
paths:
  /events:
    get:
      description: Get events.
      tags:
      - events
      operationId: getEvents
      responses:
        '200':
          description: Successful response
          schema:
            title: ArrayOfEvents
            type: array
            items:
              $ref: '#/definitions/Event'
        default:
          description: Generic Error
    post:
      description: Create new event.
      tags:
      - events
      operationId: postEvent
      parameters:
        - name: Event
          in: body
          description: New events
          required: true
          schema:
            $ref: '#/definitions/Event'
      responses:
        '201':
          description: |
            Successful response.
            'Location' header with link to /events/{id} containing new ID.
        default:
          description: Generic Error
  /events/{id}:
    parameters:
      - name: id
        in: path
        description: Existing event id.
        required: true
        type: integer
        format: int64
    get:
      description: Get event by id.
      tags:
      - events
      operationId: getEventById
      responses:
        '200':
          description: Successful response
          schema:
            title: Newly created event
            $ref: '#/definitions/Event'
        default:
          description: Generic Error
    put:
      description: Update existing event.
      tags:
      - events
      operationId: putEventById
      parameters:
        - name: Event
          in: body
          description: Existing event
          required: true
          schema:
            $ref: '#/definitions/Event'
      responses:
        '204':
          description: Successful response
        default:
          description: Generic Error
    delete:
      description: Delete event by id.
      tags:
      - events
      operationId: deleteEventById
      responses:
        '204':
          description: Successful response
        default:
          description: Generic Error

I think I need to explain the point of ordering this contract. I keep the generated sources under the VCS to track the differences, and this monkey-ordering between runs knocks me out.


gemini-aistudio-provider GEMINI_API_KEY not set issue

Hi
I tried to set the provider Gemini key in my docker as described in the documentation GPTSCRIPT_PROVIDER_API_GEMINI_API_KEY but its not working Not working, also I tried to set it with the name GEMINI_API_KEY without the prefix, I got the following error (What I missed)
Why provider ask to enter the key and not take it from the ENV ? (Please enter your Google AI Studio API key)

Error executing GPT script: Please enter your Google AI Studio API key.
[0G? key 782024/06/05 09:16:40 EOF Failed to run sys.prompt. 09:16:40 failed to run tool [google-ai-studio-credential]
cmd [/usr/bin/env python3 /root/.cache/gptscript/repos/bd6bbf89c7ecfd16d25c7d94dfc913b8c9e7c74a/python3.12/credential/credential.py]: exit status 1 2024/06/05 09:16:40 OPENAI_API_KEY is not set.
Please set the OPENAI_API_KEY environment variable failed to run credential tool github.com/gptscript-ai/gemini-aistudio-provider/credential: ERROR:
Please enter your Google AI Studio API key. ? key 782024/06/05 09:16:40 EOF Failed to run sys.prompt. : exit status 1

Also When I tried direct on the shell with my ai studio key I got error say the key not set
# gptscript script_bak.gpt
10:57:00 started  [main]
10:57:00 started  [provider: https://raw.githubusercontent.com/gptscript-ai/gemini-aistudio-provider/bd6bbf89c7ecfd16d25c7d94dfc913b8c9e7c74a/tool.gpt:Google Model Provider]
10:57:00 launched [Google Model Provider][https://raw.githubusercontent.com/gptscript-ai/gemini-aistudio-provider/bd6bbf89c7ecfd16d25c7d94dfc913b8c9e7c74a/tool.gpt:Google Model Provider] port [10832] [gptscript sys.daemon /usr/bin/env python3 /root/.cache/gptscript/repos/bd6bbf89c7ecfd16d25c7d94dfc913b8c9e7c74a/python3.12/main.py]
10:57:02 ended    [provider: https://raw.githubusercontent.com/gptscript-ai/gemini-aistudio-provider/bd6bbf89c7ecfd16d25c7d94dfc913b8c9e7c74a/tool.gpt:Google Model Provider] [output=http://<IP_ADDRESS>:10832]
10:57:02 sent     [main]
10:57:02 started  [sys.read(3)] [input={"filename": "/etc/environment"}]
10:57:02 sent     [sys.read(3)]
10:57:02 ended    [sys.read(3)] [output=The file /etc/environment has no contents]
10:57:02 continue [main]
10:57:02 sent     [main]
10:57:02 ended    [main] [output=I cannot fulfill this request. The environment variable GEMINI_API_KEY is not set.]

OUTPUT:

I cannot fulfill this request. The environment variable GEMINI_API_KEY is not set.

My .gpt file
tools: sys.read, sys.write, sys.exec?
Model Name: gemini-pro from github.com/gptscript-ai/gemini-aistudio-provider

Respond directly with the relevant code snippet in the appropriate language (YAML, JSON, Bash, etc.), enclosed in a code block.

What the value for GPTSCRIPT_PROVIDER_API_GEMINI_API_KEY env variable

@g-linville any advice ?

@wmashal Can you try running gptscript credential to list your stored credentials? See if there is one for the Gemini model provider. It is possible that it is an invalid token. You can delete a credential with gptscript credential delete <credential name>, and then you will be prompted to enter it again the next time you try to use the Gemini provider.

@wmashal Can you try running gptscript credential to list your stored credentials? See if there is one for the Gemini model provider. It is possible that it is an invalid token. You can delete a credential with gptscript credential delete <credential name>, and then you will be prompted to enter it again the next time you try to use the Gemini provider.

@g-linville
No, no one for Gemini , and still ask me to prompt the openai key after I delete it. see the following screen shoots

cc @drpebcak

Hey @wmashal, the GPTSCRIPT_PROVIDER_* syntax is for accessing apis that already serve an openai compatible api, like mistral's la plateforme for example.
That being said, not pulling GEMINI_API_KEY from existing env for the gemini-aistudio-provider to use was an oversight. I have pushed changes to make that work now.

The other part of the issue related to OPENAI_API_KEY not being set seems to be a bug though - your first error says cmd [/usr/bin/env python3 /root/.cache/gptscript/repos/bd6bbf89c7ecfd16d25c7d94dfc913b8c9e7c74a/python3.12/credential/credential.py]: exit status 1 2024/06/05 09:16:40 OPENAI_API_KEY is not set.   which implies it failed when the credential tool tried to call sys.prompt. That should not require an llm at all.
@wmashal what version of gptscript are you using?

The change I made was in the credential tool for the gemini-aistudio-provider, which is in a separate repo. That change has already been pushed: https://github.com/gptscript-ai/gemini-aistudio-provider/blob/main/credential/credential.py#L6
You can either set GEMINI_API_KEY in your env or enter it at the prompt when you run gptscript. Either way, you only need to do that once because it will be saved as a gptscript credential and loaded from the credential store after that.
The OPENAI_API_KEY issue you saw is still open.

@drpebcak one more think the following error , I have python3 in another path why u set specific path in the tools.gpt
https://github.com/gptscript-ai/gemini-aistudio-provider/blob/2a8dd073456fddac0c40c9a7f0e3c9193ff72713/credential/tool.gpt#L3
ERROR: /usr/bin/env: 'python3': No such file or directory : exit status 127

That is a different problem altogether, but an interesting one for sure. Please open another issue for that error.
/usr/bin/env python3 is the commonly accepted convention for a shebang - it will use the first version of python3 it finds on your path. In the case of gptscript, we vendor python for you so it should be using the version we install.

@drpebcak issue opened
https://github.com/gptscript-ai/gptscript/issues/533

I believe all the problems described here are either resolved or have other issues open for them now.


Ability to use 3-way merge editor when comparing files to create a merged file.

The 3-way merge editor is great for resolving merge conflicts. It would be awesome if we could use that merge editor to help combine any two files. We can presently compare two selected files ("compare selected"), and it would be so helpful if, within the compare context, VS Code would ask "Do you want to merge these files with the merge editor?"
Thanks for considering this feature.

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


Upon creating a new resource, for example a VM - does it require someone to have the Owner role in order for a microsoft.compute to be automatically enabled? Or could they have Contributor role at the subscription level and still register the provider?

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 16b4bb50-25ad-a3c6-f42a-84f33c84e362
Version Independent ID: 6188226a-1f56-2a0a-fc57-4b8616b5fe32
Content: Resource providers by Azure services - Azure Resource Manager
Content Source: articles/azure-resource-manager/management/azure-services-resource-providers.md
Service: azure-resource-manager
Sub-service: management
GitHub Login: @tfitzmac
Microsoft Alias: tomfitz

@ashkickindevelopment - you need permission for the /register/action operation on the resource provider. The contributor role includes that permission.

Thank you @tfitzmac for helping on the thread.
@ashkickindevelopment - Please review the information shared by @tfitzmac and let us know if you have any further queries.
Please note that this channel (the Azure Docs repository) is only for driving improvements related to the Azure documentation. At this point it appears that there's no further edits or updates needed to the documentation. We will go ahead and close this issue, however if you have any further queries please tag us in your reply and will be happy to reopen the thread and continue the conversation. Thank you


Spec changes to handle freeing the context after all tasks are comple…

Spec changes to handle freeing the context after all tasks are completed and corresponding minor changes in threadpool_schedule_work

/azp run Azure-C-Pal

/azp run Azure-C-Pal

/azp run Azure-C-Pal


Fix SonarCloud security hotspots (attempt #2)

Proposed change

Another attempt to play with regex to avoid Sonar warnings. The reports says it's fine (again!).

Type of change

[ ] New country/market holidays support (thank you!)
[ ] Supported country/market holidays update (calendar discrepancy fix, localization)
[x] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
[ ] Dependency update (version deprecation/upgrade)
[ ] Bugfix (non-breaking change which fixes an issue)
[ ] Breaking change (a code change causing existing functionality to break)
[ ] New feature (new python-holidays functionality in general)

Checklist

[x] I've followed the contributing guidelines
[x] I've run make pre-commit, it didn't generate any changes
[x] I've run make test, all tests passed locally

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
10628

Relevant Lines:
10628

💛  - Coveralls


[Fix] fix key error bug when registering custom hooks

Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.
Motivation
As the dist_mode is an argument of DeepClusterHook, it raises TypeError when runner registers the other custom hooks, such as EMAHook in mmcv.
Modification
Remove dist_mode  when the custom hook is not DeepClusterHook
BC-breaking (Optional)
Does the modification introduce changes that break the backward compatibility of the downstream repositories?
If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.
Use cases (Optional)
If this PR introduces a new feature, it is better to list some use cases here and update the documentation.
Checklist
Before PR:

[ ] Pre-commit or other linting tools are used to fix the potential lint issues.
[ ] Bug fixes are fully covered by unit tests, the case that causes the bug should be added in the unit tests.
[ ] The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
[ ] The documentation has been modified accordingly, like docstring or example tutorials.

After PR:

[ ] If the modification has potential influence on downstream or other related projects, this PR should be tested with those projects, like MMDet or MMSeg.
[ ] CLA has been signed and all committers have signed the CLA in this PR.

Better to add some UT to pass the code cov


Add dynamic models composing the UKF process model

This PR implements some state dynamics which can be used to build a process model for a UKF.

Can you rebase the PR on top of master and removing all the commits already merged in past PR?

Hi @GiulioRomualdi @S-Dafarra I noticed that the measurement and state dynamics classes are exactly the same. I put the PR in draft in order to change the StateDynamics class name into Dynamics and apply all the needed modifications. I'll ping you as soon as the modifications are pushed and the PR is again ready to be reviewed.

Hi @GiulioRomualdi @S-Dafarra I noticed that the measurement and state dynamics classes are exactly the same. I put the PR in draft in order to change the StateDynamics class name into Dynamics and apply all the needed modifications. I'll ping you as soon as the modifications are pushed and the PR is again ready to be reviewed.

Changes took less than expected. Changing back to ready.

Hi @GiulioRomualdi and @S-Dafarra, I modified most of the code because using it I noticed that some things were missing or were uncomfortable to use. I also added some missing tests. I'm going to apply the reviews made by Stefano, but you will probably have to do the review again.

Hi @GiulioRomualdi and @S-Dafarra, I modified most of the code because using it I noticed that some things were missing or were uncomfortable to use. I also added some missing tests. I'm going to apply the reviews made by Stefano, but you will probably have to do the review again.

Sounds good @isorrentino, when you are ready you can re-request the review

Sounds good @isorrentino, when you are ready you can re-request the review

I requested the review again but I found a problem and I'm trying to fix it. Let's wait for the review. Thanks.

Hi @S-Dafarra and @GiulioRomualdi, this PR can be reviewed again. Thank you.

Friendly ping @S-Dafarra @GiulioRomualdi :)

Hi @GiulioRomualdi @S-Dafarra, I'm finally back to this PR. I know that @S-Dafarra has already spent time on the review, but I thought it might make more sense to close the 4 PRs containing the code of the estimator (#615, #640, #646, #649) and open many much smaller ones to simplify and speed up the review process. Consider also that the code of the last PR (#649) changes also many parts of the code contained in the previous three PRs. What do you think?

Hi @GiulioRomualdi @S-Dafarra, I'm finally back to this PR. I know that @S-Dafarra has already spent time on the review, but I thought it might make more sense to close the 4 PRs containing the code of the estimator (#615, #640, #646, #649) and open many much smaller ones to simplify and speed up the review process. Consider also that the code of the last PR (#649) changes also many parts of the code contained in the previous three PRs. What do you think?

Clearly, smaller PRs are much easier to review, but anyway there is always a tradeoff with the development time. Up to you! I did not check the other PRs yet. If you close this, I would just ask you to consider my previous comments in the new PRs before asking me to review them (only if they still apply) :blush:

If you close this, I would just ask you to consider my previous comments in the new PRs before asking me to review them (only if they still apply)

Of course, I would have not ignored your comments :) Actually, since the second PR is very similar to this one, they will apply also to that one :D

As mentioned in https://github.com/ami-iit/bipedal-locomotion-framework/pull/615#issuecomment-1523654641, I'm going to close this PR without merging it.


[HOLD] Revert to Approved due to failed reimbursement action doesn't show in newDot

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number:
Reproducible in staging?: needs reproduction
Reproducible in production?: needs reproduction
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @twisterdotcom
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1706011919649459
Action Performed:

Add a deposit account that will not accept deposits into it
Submit an expense for reimbursement
Have an admin pay that report
Wait for the reimbursement to fail

Expected Result:
Revert to Approved due to failed reimbursement action should appear
Actual Result:
Revert to Approved due to failed reimbursement action doesn't show in newDot
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

View all open jobs on GitHub

@kavimuru did you try to reproduce this?

I saw @twisterdotcom added the additional reproduction steps.

I'm not sure Applause can test this payment flow? Regardless, I think we might already know we need to handle this as part of @sophiepintoraetz's project, so we could HOLD until that's under way.

ah okay, thanks @twisterdotcom

As this is on HOLD, i'm dwongarding this to weekly.

on hold currently

I believe this is still on HOLD.

Holding on the project: https://github.com/Expensify/Expensify/issues/347391

ON HOLD.

https://github.com/Expensify/App/pull/37022 In draft for PR.

No payments or tests required for this one. Handling all in https://github.com/Expensify/App/issues/36023#issuecomment-2008308732


Merge AnalysisFormats into InternedAnalysisFormats

AnalysisFormats is deprecated, and going away entirely in 0.14. Its replacement, InternedAnalysisFormats, uses some definitions from AnalysisFormat. Those definitions must be copied over to InternedAnalysisFormats prior to deleting AnalysisFormats.

Done in https://github.com/sbt/zinc/pull/6


Trouble installing

Hi, I am pretty new to coding and wanted to use this for a project. I am using a raspberry pi4. I have downloaded the source distribution from pypi.org and extracted them to my downloads, but when I run  $ pip install python-weather  I get an error like this:
IOError: [Errno 2] No such file or directory: '/tmp/pip-build-( )/python-weather/setup.py'    where inside of the ( ) is a random 6 letter/number code that changes every time I run it.
Any help would be appreciated.

Hello! I suppose your pip are not up-to-date according to this stackoverflow thread. Have you tried updating them with pip install --upgrade pip? Thanks!

Sorry for the late reply. Yes, this worked thanks a bunch!

No problem! glad to have helped! ❤❤❤


docs-bug(COMPONENT): Angular Material Theming

Documentation Feedback
The documentation on theming angular material is terribly lacking. There are multiple themes included with material, none of which are listed in the documentation. There is no description of how to produce color maps for material, there's no description of how to marry together foreground and background maps. There's no clarity on how dividers etc. are themed and there's no real guidance on how to build custom themes.
I would like to see:

a clear list of the maps that a theme requires to be complete
clear instructions on what maps should be used
a list of the maps that actually ship with the theme and guidance on how to use them
clearer SCSS functions to build the theme
clear guidance on how to build up custom typography suites
ideally a page that would allow you to put in colors and typography and would then generate the scss for it

OR... at the very least it would be helpful for the documentation to at least state what it's not covering. There's so much stuff that you have to go rooting around in the source code to find (like what the existing color maps are and what the SCSS functions do). If the documentation at least listed out what the user needed to know that would be a helpful start. But the docs glance across all of the key subjects without going into adequate depth and the reader is left completely unclear as to whether she is being stupid or the docs are incomplete.
Here's an example of a question that the docs just don't answer:
https://stackoverflow.com/questions/43438305/how-to-change-font-color-of-primary-palette-in-angular-material2
This stuff is really hard and confusing and some good documentation would make the world of difference - thank you so much!
Affected documentation page: Insert a link to the affected page on material.angular.io
https://material.angular.io/guide/theming
https://material.angular.io/guide/typography

I'd like to add this article written by Tomas Trajan to the discution, since it helped me alot with theming
https://medium.com/@tomastrajan/the-complete-guide-to-angular-material-themes-4d165a9d24d1

Thank you @mrmokwa - that article is indeed really useful and was one of the articles that I pored over trying to figure this out. This is something I spent a bunch of time on at the start of the year and I've recently come back to.
Since putting in this bug report though I've actually managed to get more of a handle on it and have copied what I did below. In essence, all I've done is explicitly set the different pallettes in long-hand.
Just doing this has been incredibly liberating. Simply knowing what I was missing was a huge help and being able to specify it got me pretty much the whole way there. That said I'm not entirely sure what I don't have included here. I suspect there are a a couple of palettes missing (and there's still no way to set the color of href links apart from brute forcing).
In terms of docs, I think that simply listing the details below out explicitly would go a long way to making things simpler.
Best
Peter
# palettes.scss

// Generated using:
// http://mcg.mbitson.com/#!?mcgpalette0=%23ee5835&mcgpalette1=%2326a69a&mcgpalette3=%23f7b87d&themename=materialdemo

// Key colour associated with the applciation (and shades)
$primary-palette: (
    50 : #def7f5,
    100 : #a0e9e2,
    200 : #72dfd4,
    300 : #38d1c3,
    400 : #2cbfb1,
    500 : #26a69a,
    600 : #208d83,
    700 : #1b746c,
    800 : #155b55,
    900 : #0f423e,
    A100 : #cefdf9,
    A200 : #6cf9ec,
    A400 : #1ce3d0,
    A700 : #25c0b2,
    contrast: (
        50 : #000000,
        100 : #000000,
        200 : #000000,
        300 : #000000,
        400 : #000000,
        500 : #ffffff,
        600 : #ffffff,
        700 : #ffffff,
        800 : #ffffff,
        900 : #ffffff,
        A100 : #000000,
        A200 : #000000,
        A400 : #000000,
        A700 : #000000,
    )
);

// Accent colour (and shades)
$accent-palette: (
    50 : #fdebe7,
    100 : #facdc2,
    200 : #f7ac9a,
    300 : #f38a72,
    400 : #f17153,
    500 : #ee5835,
    600 : #ec5030,
    700 : #e94728,
    800 : #e73d22,
    900 : #e22d16,
    A100 : #ffffff,
    A200 : #ffe2e0,
    A400 : #ffb4ad,
    A700 : #ff9d93,
    contrast: (
        50 : #000000,
        100 : #000000,
        200 : #000000,
        300 : #000000,
        400 : #000000,
        500 : #000000,
        600 : #ffffff,
        700 : #ffffff,
        800 : #ffffff,
        900 : #ffffff,
        A100 : #000000,
        A200 : #000000,
        A400 : #000000,
        A700 : #000000,
    )
);

// Our preferred warning colour (and shades)
$warn-palette: (
   50 : #ffffff,
    100 : #ffffff,
    200 : #fffafa,
    300 : #fbb7b7,
    400 : #f99a9a,
    500 : #f77d7d,
    600 : #f56060,
    700 : #f34343,
    800 : #f22727,
    900 : #eb0e0e,
    A100 : #ffffff,
    A200 : #ffffff,
    A400 : #ffa8a8,
    A700 : #fb9292,
    contrast: (
        50 : #000000,
        100 : #000000,
        200 : #000000,
        300 : #000000,
        400 : #000000,
        500 : #000000,
        600 : #000000,
        700 : #ffffff,
        800 : #ffffff,
        900 : #ffffff,
        A100 : #000000,
        A200 : #000000,
        A400 : #000000,
        A700 : #000000,
    )
);

// The palette to be used for background colours (in this case assuming dark theme)
$background: (
  status-bar: #3E3E4B,
  app-bar:    map-get($mat-grey, 900),
  background: #3E3E4B,
  hover:      rgba(white, 0.04), // TODO(kara): check style with Material Design UX
  card:       map-get($mat-grey, 800),
  dialog:     map-get($mat-grey, 800),
  disabled-button: rgba(white, 0.12),
  raised-button: map-get($mat-grey, 800),
  focused-button: $light-focused,
  selected-button: map-get($mat-grey, 900),
  selected-disabled-button: map-get($mat-grey, 800),
  disabled-button-toggle: black,
  unselected-chip: map-get($mat-grey, 700),
  disabled-list-option: black,
  tooltip: map-get($mat-grey, 700),
);

// Pallette for foreground colours
$foreground: (
  base:              black,
  divider:           $light-dividers,
  dividers:          $light-dividers,
  disabled:          $light-disabled-text,
  disabled-button:   rgba(white, 0.3),
  disabled-text:     $light-disabled-text,
  elevation:         black,
  hint-text:         $light-disabled-text,
  secondary-text:    $light-secondary-text,
  icon:              white,
  icons:             white,
  text:              white,
  slider-min:        white,
  slider-off:        rgba(white, 0.3),
  slider-off-active: rgba(white, 0.3)
);

// link color (as far as I can tell this isn't specified by Material)
$linkColor: #95FFF5;

Having defined the palettes, we then plug them into the theme along with any typography choices:
// custom-theme.scss

// Custom Theming for Angular Material
// For more information: https://material.angular.io/guide/theming
@import '~@angular/material/theming';
@import "styles/palettes";

// Include the common styles for Angular Material
// Be sure that you only ever include this mixin once!
@include mat-core();
// --------------------------------
// Typography

// Add any levels that you'd like to override along with their attributes e.g.
//   $custom-typography: mat-typography-config(
//     $font-family: 'Roboto, monospace',
//     $headline: mat-typography-level(32px, 48px, 700),
//     $body-1: mat-typography-level(16px, 24px, 500)
//   );
// More details: https://material.angular.io/guide/typography

$custom-typography: mat-typography-config(
  $font-family: 'Roboto, "Helvetica Neue", sans-serif'
);
@include mat-base-typography($custom-typography);

// --------------------------------
// Color palettes

// Define the palettes for your theme using the Material Design palettes available in palette.scss
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
// hue. Available color palettes: https://material.io/design/color/
$primary-mat-palette: mat-palette($primary-palette);
$secondary-mat-palette: mat-palette($accent-palette);
$warn-mat-palette: mat-palette($warn-palette);

// Create the theme object
@function create-theme($primary, $accent, $warn, $foreground, $background) {
  @return (
    primary: $primary,
    accent: $accent,
    warn: $warn,
    is-dark: false,
    foreground: $foreground,
    background: $background,
  );
}

$custom-theme: create-theme($primary-mat-palette,
                            $secondary-mat-palette,
                            $warn-mat-palette,
                            $dark-foreground,
                            $dark-background);
@include angular-material-theme($custom-theme);

// --------------------------------
// Specify link color (I can't see this formally defined in Material)
.mat-typography a{
  color: $linkColor;
}

If the above really covers what's required then it's actually pretty straightforward. It's just that the current docs are (to put it mildly) a bit cryptic in how they go about describing this!

I feel you. I've just been struggling on how to customize theming in Angular Material beyond just the simple primary / accent / warn palettes.
I have created this document that outlines how to create a complete color-configuration from scratch: https://gist.github.com/c-kunz/6934f450c3e2036d3ba5669cbc17b698
This unfortunately does not include any typography customization (yet?). I hope it helps anyone coming across this problem.

@c-kunz that's awesome! I updated our theming yesterday, and I had to chuck in a rainbow of colours and just see what changed, wish I'd followed this!
One thing I would suggest is to do a map-merge of the default background/foreground colours so you always fall back on those keys in they're not defined. (It looks like the theming only checks if a map exists, and doesn't fallback on keys). So you might do:
map-merge($mat-light-theme-background,(
    background: #f4f4f4,
    hover:  #E0E0E0,
    card: aliceblue
))

Reason being that I updated from a version where tooltip background wasn't part of the palette, and I spent ages searching for a bug related to z-index/stacking context/overlays before realising the tooltips were actually showing up, but they had white text and no background!
Another benefit of this is if you just want to change on or two things, you can leave the default colours for other things intact,

Sorry to come to an old issue.
Is there a reference list of which theme which component uses ? We could start finding the relations of the components theme, then reverse engineer a documentation from the source code.
The community is able to contribute to the documentation ?

Closing this since we've completely rewritten the theming docs for Angular v12. The new docs go into a lot more depth on the APIs and concepts of theming. Feel free to open new issues if there's anything still undefined/unclear.


Update Maria client to 5.5.41

The current version is outdated, can you update the Maria client?
The lastest version contain many bug fix.

The rewrite branch incorporates libmariadbclient 10.0.16. This branch will become the new "major" version of mariasql.


Support package level JDK configuration for Build Path

In parent work item #88 we added support for setting the JDK set as default for every imported Bazel package using the workspace global .bazelrc setting:
build --javacopt=-source 11 -target 11
In this work item, we would like every BUILD file to be able to override that (using javacopts attribute on a java rule). Ideally, every Java rule in a BUILD file could have a different JDK, but Eclipse/JDT does not allow that.

It would be nice to use annotations #177 for this. While we could do hard stuff and try an infer the best JDK to use for a package by considering all javacopt attributes, I think we should always give the user the ability to put this in an annotation. Of course, once the package is imported, the user will always be able to change the JDK in the Build Path  UI that is standard for all JDT projects.


Say command completes instantly after menu choice

Reported on the forum.

Got more reproduction steps, issue is still happening.


[feature] randomize binary names

We currently use hard-coded names for builder binaries and project binaries we compile. This has some downsides:

If a user calls our builder multiple times in the same workflow, they will need to make the build sequential or it will likely fail. (I've seen one user do this already)
If user uses multiple builder calls in the same workflow, the workflow will race to download the binary and it could be corrupt and the run will fail
If the generated binary is the same as a file in the repo, it could overwrite it. (not sure if this could lead to problems or not)

So I propose randomizing the names of the generated binaries. Anyone OK with that?
I will add an e2e tests as well.

I think randomizing the names will be the simplest approach.
I think that the user will use the outputs to determine the right file name for each individual run, right?

Internally, we'll use random names. The final output will still be determined by the developer. For example, in the case of Go builders, the .slsa-goreleaser defines the output name.
You're right, the developer can still use the outputs field.

SG. I think the generic workflow will need a way to either set the name of the provenance file or randomize the name since it currently uses a static name.

Done. Closing

Re-opening because @ianlewis is write about generic workflow attestation name.

Something to add is presubmits to test multiple runs of the builders.

I added support for randomized builder binaries for the generic workflow. Last AI is to add a pre-submit if we think it's necessary

I added support for randomized builder binaries for the generic workflow. Last AI is to add a pre-submit if we think it's necessary

What would you test in the pre-submit? Maybe failure if two calls to the workflow have the same attestation-name?

Hmm. actions/upload-artifact doesn't have an option to fail if the artifact already exists so two calls to the generic workflow with the same attestation-name will clobber each other.
https://github.com/slsa-framework/slsa-github-generator/actions/runs/2716814219

Good catch. We rely on the user to give to provide non-colliding names for the result. The attestations overwrite each other, but the verification will fail for one of the artifacts, so we fail close ,not open.
My original suggestion was to use a workflow similar to https://github.com/slsa-framework/example-package/blob/main/.github/workflows/e2e.generic.schedule.main.multi-subjects.slsa3.yml to catch errors early.

I added some tests in https://github.com/slsa-framework/example-package/pull/90
Do you think that will be enough?

definitely.

Tests in https://github.com/slsa-framework/example-package/pull/90 were merged and ran successfully.


Add close channel  action to the Lightning wallet actions in the UI

As mentioned in https://github.com/itchysats/10101/issues/372 the user should have the means to back out of the channel if something goes wrong.
The easiest way to achieve this is adding another action to the FAB in the Lightning wallet that allows the user to close the channel.
We could restrict this to only allow it if there is no CFD currently open, to keep the scope smaller.

perhaps Settings in actually the best way. FAB could trigger a close far too easily.

The FAB does only trigger going to a child screen (as for Send/Receive) and then the user has to confirm the action. I think this is safe enough and more intuitive than hiding this in the settings.


Smart Logon or Smart Card Unlock Support?

Dear Developer;
Your Library Smart Card Logon or Smart Card Unlock Support? if your Library Support Please say me how to use example.
thanks
best regards

The library does not support smartcard logon. But, you only have to return the proper data at GetSerialization and it should work.


{Int,Hop,Bucket}Map should just return null value when item not matched.

Why does the Load() function in {Int,Hop,Bucket}Map allocate a new empty value each time when no match is found? If Load() is used in places where it is called frequently, it will result in a large number of useless memory allocation operations. I think might just return a  null as ChainMap Load() does is a better solution.
https://github.com/G-M-twostay/Go-Utils/blob/cbd9e91e39a445901eaaaca77207b9833eb952ab/Maps/IntMap/IntMap.go#L154

Thanks, I have write a simple benchmark code and vierfy it.


V0.25.0rc3 Task details contains a null value when it can contains a finite value

Describe the bug
The value of indexedDocuments could be 0 rather than null when a task fails.
{
            "uid": 1,
            "indexUid": "test",
            "status": "failed",
            "type": "documentAddition",
            "details": {
                "receivedDocuments": 2500,
                "indexedDocuments": null
            },
            "error": {
                "message": "Index `test` not found.",
                "code": "index_not_found",
                "type": "invalid_request",
                "link": "https://docs.meilisearch.com/errors#index_not_found"
            },
            "duration": "PT0.000578S",
            "enqueuedAt": "2022-01-04T12:09:36.709163Z",
            "startedAt": "2022-01-04T12:09:36.709532Z",
            "finishedAt": "2022-01-04T12:09:36.709741Z"
}

To Reproduce
Steps to reproduce the behavior:

Add documents on an inexistent index with an API key that do not have the right to create an index. (It also happens if the user tries to push documents missing a document identifier so it's probably not related to that particular case)
Fetch the related task

Expected behavior
When a real value can be given, it should be preferred over null in the details of a task for the field indexedDocuments and deletedDocuments. In this particular case, we know that 0 documents have been indexed.
MeiliSearch version: [e.g. v0.25.0rc3]

Thanks @gmourier, I assign the Capitaine Haddock on it :)

Closed by #2059


Flickering and animation issues on Safari - Infinite carousel component

@ttraenkler tried this https://coderwall.com/p/xbjtbg/fix-element-flickering-in-safari-caused-by-css3-transitions and it didn't work.


bug: copy layers into final crac image

For some reason, we are no longer copying the libs and resources into the final CRaC image.
This PR remedies that

I tried to add a functional test, but it couldn't find the crac plugin 🤔


Correct call to RemoteSender - streamId and initialRemoteRequested

Seems like a typo
Two constructors are
public RemoteSender(Publisher<Frame> originalSource, Runnable cleanup, int streamId,  int initialRemoteRequested) {
public RemoteSender(Publisher<Frame> originalSource, Runnable cleanup, int streamId) {

Thanks @yschimke
You are correct, it is a typo and it did not help that the unit test is ignored. I will do another PR to enable that test and probably unit tests for examples.


BUG: scipy.stats.ttest_1samp raises an error when using keepdims=True

Describe your issue.
Setting keepdims=True when using scipy.stats.ttest_1samp leads to an error.
Reproducing Code Example
import numpy as np
from scipy import stats

rng = np.random.default_rng()

rvs = stats.uniform.rvs(size=(10, 10, 10), random_state=rng)

stats.ttest_1samp(rvs, popmean=0.5, axis=2, keepdims=True)

Error message
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/sdiebolt/Documents/Personal/scipy-error/.venv/lib/python3.12/site-packages/scipy/stats/_axis_nan_policy.py", line 565, in axis_nan_policy_wrapper
    res = _add_reduced_axes(res, reduced_axes, keepdims)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sdiebolt/Documents/Personal/scipy-error/.venv/lib/python3.12/site-packages/scipy/stats/_axis_nan_policy.py", line 247, in _add_reduced_axes
    return ([np.expand_dims(output, reduced_axes) for output in res]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sdiebolt/Documents/Personal/scipy-error/.venv/lib/python3.12/site-packages/numpy/lib/shape_base.py", line 597, in expand_dims
    axis = normalize_axis_tuple(axis, out_ndim)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sdiebolt/Documents/Personal/scipy-error/.venv/lib/python3.12/site-packages/numpy/core/numeric.py", line 1380, in normalize_axis_tuple
    axis = tuple([normalize_axis_index(ax, ndim, argname) for ax in axis])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
numpy.exceptions.AxisError: axis 2 is out of bounds for array of dimension 1

SciPy/NumPy/Python version and system information
1.13.0 1.26.4 sys.version_info(major=3, minor=12, micro=2, releaselevel='final', serial=0)
/home/sdiebolt/Documents/Personal/scipy-error/.venv/lib/python3.12/site-packages/scipy/__config__.py:154: UserWarning: Install `pyyaml` for better output
  warnings.warn("Install `pyyaml` for better output", stacklevel=1)
{
  "Compilers": {
    "c": {
      "name": "gcc",
      "linker": "ld.bfd",
      "version": "10.2.1",
      "commands": "cc"
    },
    "cython": {
      "name": "cython",
      "linker": "cython",
      "version": "3.0.10",
      "commands": "cython"
    },
    "c++": {
      "name": "gcc",
      "linker": "ld.bfd",
      "version": "10.2.1",
      "commands": "c++"
    },
    "fortran": {
      "name": "gcc",
      "linker": "ld.bfd",
      "version": "10.2.1",
      "commands": "gfortran"
    },
    "pythran": {
      "version": "0.15.0",
      "include directory": "../../tmp/pip-build-env-giifv1os/overlay/lib/python3.12/site-packages/pythran"
    }
  },
  "Machine Information": {
    "host": {
      "cpu": "x86_64",
      "family": "x86_64",
      "endian": "little",
      "system": "linux"
    },
    "build": {
      "cpu": "x86_64",
      "family": "x86_64",
      "endian": "little",
      "system": "linux"
    },
    "cross-compiled": false
  },
  "Build Dependencies": {
    "blas": {
      "name": "openblas",
      "found": true,
      "version": "0.3.26.dev",
      "detection method": "pkgconfig",
      "include directory": "/usr/local/include",
      "lib directory": "/usr/local/lib",
      "openblas configuration": "USE_64BITINT=0 DYNAMIC_ARCH=1 DYNAMIC_OLDER= NO_CBLAS= NO_LAPACK= NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP= ZEN MAX_THREADS=64",
      "pc file directory": "/usr/local/lib/pkgconfig"
    },
    "lapack": {
      "name": "openblas",
      "found": true,
      "version": "0.3.26.dev",
      "detection method": "pkgconfig",
      "include directory": "/usr/local/include",
      "lib directory": "/usr/local/lib",
      "openblas configuration": "USE_64BITINT=0 DYNAMIC_ARCH=1 DYNAMIC_OLDER= NO_CBLAS= NO_LAPACK= NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP= ZEN MAX_THREADS=64",
      "pc file directory": "/usr/local/lib/pkgconfig"
    },
    "pybind11": {
      "name": "pybind11",
      "version": "2.12.0",
      "detection method": "config-tool",
      "include directory": "unknown"
    }
  },
  "Python Information": {
    "path": "/opt/python/cp312-cp312/bin/python",
    "version": "3.12"
  }
}

I think I managed to find what the problem is, I'll try a PR if it's alright!

I'll try a PR if it's alright!

sure, go for it!

Indeed, I thought about adding such a heuristic, e.g., expanding dims only from arrays and not from any other types. However I was unsure of the impact of such a change and was trying to understand the implications, since _add_reduced_axes seemed to be used by many other functions. I won't be able to push a PR until tomorrow anyway, so if you're more comfortable with the impacts and able to do it tonight, go for it! 😉

No, go ahead and try that approach. I don't think you can only expand dims from arrays because you will want to expand NumPy scalar types, too. But see what happens if you just look out for Python ints e.g.
    return ([(np.expand_dims(output, reduced_axes) if not isinstance(output, int) else output) for output in res]
            if keepdims else res)

And add all the other functions in axis_nan_policy_cases to test_keepdims: https://github.com/scipy/scipy/blob/7dcd8c59933524986923cde8e9126f5fc2e6b30b/scipy/stats/tests/test_axis_nan_policy.py#L487
That should smoke out any other cases I can't think of.

gh-20734 fixes the bug for ttest_1samp, but I'll leave this open to remind us to extend the test to other functions and remove the warning filters.


MINOR: Fix typo in comment 'if' in ClusterConnectionStates.canConnect()

More detailed description of your change,
if necessary. The PR title and PR message become
the squashed commit message, so use a separate
comment to ping reviewers.
Summary of testing strategy (including rationale)
for the feature or bug fix. Unit and/or integration
tests are expected for any behaviour change and
system tests should be considered for larger changes.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Thanks for the PR. I think the iff is intentional (if pedantic). It is short-hand for "if and only if." I am going to go close this.


Add tests to ensure working code

Motivation
To ship code with the security that it won't break things.
Testing enviroment
There are two ways I test when using lua:

vusted
plenary.nvim

To use them we just have to create a tests folder (in the root for example) and for plenary.nvim a minimal_init.{lua|vim} (I prefer .lua) and testing files following the convention of name_of_the_file_spec.lua, the _spec.lua will be detected as tests files.
-- minimal_init.lua
local plenary_dir = os.getenv("PLENARY_DIR") or "/tmp/plenary.nvim"
local is_not_a_directory = vim.fn.isdirectory(plenary_dir) == 0
if is_not_a_directory then
  vim.fn.system({ "git", "clone", "https://github.com/nvim-lua/plenary.nvim", plenary_dir })
end

vim.opt.rtp:append(".")
vim.opt.rtp:append(plenary_dir)

vim.cmd("runtime plugin/plenary.vim")
require("plenary.busted")

Commands to run

vusted

vusted ./tests/freeze

plenary.nvim

nvim --headless --noplugin -u tests/minimal_init.lua -c "PlenaryBustedDirectory tests/freeze {minimal_init = 'tests/minimal_init.lua'}"

Tests files
-- ./tests/freeze/setup_freeze_spec.lua
local freeze = require("freeze")

describe("[freeze.nvim tests]", function()
  describe("setup", function()
    it("sets up with default config", function()
      local expected = {
	  dir = ".",
	  output = default_output,
	  theme = "default",
	  config = "base",
	  open = false,
      }
      local actual = require("freeze")
      freeze.setup(expected)
      assert.are.same(expected, actual.opts)
    end)
    it("sets up with custom config", function()
      local opts = {
        dir = "/tmp/freeze_images",
        theme = "rose-pine-moon",
      }
      freeze.setup(opts)
      local actual = freeze.opts
      assert.are.same(opts.dir, actual.dir)
      -- or assert.are.same("/tmp/freeze_images", actual.dir)
      assert.are.same(opts.theme, actual.theme)
      -- or assert.are.same("rose-pine-moon", actual.theme)
      assert.are.same(opts, actual)
    end)
  end)
end)

I like the bones proposed in #11 but I prefer to use Nix to handle my CI. Adopting Nix will also allow for us to specify and use devshells for development.
I am open to these suggestions but tests should be a separate PR from any CI changes (to include the included Makefile).
Additionally, I make no guarantees on running testing on Windows as this is not an environment I plan to support (although it should work fine).
Lastly, I will be offline for awhile so do not expect movement on this project for the near future.

@ethanholz I removed the workflow on the PR, and added the tests for using freeze command.


Facing error The underlying connection was closed: The connection was closed unexpectedly

I created one account on aiven and tried to access InfluxDB using following code:
        var influxDbClient = new InfluxDbClient("http://influx-3eb0406b.myName-aae2.aivencloud.com:15892/", "avnadmin", "PasswXXXXord", InfluxDbVersion.v_1_0_0);

        influxDbClient.Database.CreateDatabaseAsync("newDbName").Wait();

But it return error "The underlying connection was closed: The connection was closed unexpectedly"

Hey,
could you please provide more details for this bug? This is not enough details for me to give you any kind of suggestion, I can't debug this.
Thanks

No reply, closing.


An error is returned when attempting to import a flow that has a pipe "|" character in the flow name

Describe the bug
An error is returned when attempting to import a flow that has a pipe "|" character in the flow name. See screenshot below.
When renaming the flow to not have the pipe, the same flow can be imported to PowerDocu.
To Reproduce
Steps to reproduce the behavior:

Go to a flow
Name it "DEMO|Test"
Export to zip
Import to PowerDocu
Error is shown (see below)

Expected behavior
The flow to be parsed in as it would without the pipe character
Screenshots

Flow Used
I don't believe this is required, but could share a sample if useful.

Hi @SodoffBaldrick , thanks for letting me know. This has been fixed (https://github.com/modery/PowerDocu.Common/commit/c0ac6e015bdb99b8a86bfd5cdcd7c20ca0d29c51) and will be part of the next release which will be published in the upcoming days

Latest release is now available: https://github.com/modery/PowerDocu/releases/tag/v-1.1.0


[nit] make consts.CarbideRegistry a var so that it can be overridden at build time

https://github.com/hauler-dev/hauler/pull/354#discussion_r1842736807:

hey @dweomer, I would agree that this is probably no needed. feel free to reopen if you want to revisit...


Implement a simple way of migrating bibliotheca exercises

Many times, we need to change exercises format. This is a problem when you have a large exercises codebase, since you must migrate all them.
We need a simple way - perhaps a rake task, perhaps a rake task template, perhaps and API call - to iterate through all exercises of all guides that match a certain criteria, update each one, and save the guide.

@Charlyzzz I am doing some improvements on this right now


fix #285

This change is

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


[BUG] Render on input group

Describe the bug
If you set the component in an input-group the render is not correct.
To Reproduce
Steps to reproduce the behavior:

    Small
    <input type="checkbox" checked data-toggle="toggle" data-size="sm">

    Default
    <input type="checkbox" checked data-toggle="toggle">

    Large
    <input type="checkbox" checked data-toggle="toggle" data-size="lg">

Expected behavior
Render correctly
Screenshots

On
Off

Package (please complete the following information):

Bootstrap 5 Toggle version: 4.1.0
Bootstrap version: 5.1.3

Desktop (please complete the following information):

OS: Win
Browser: Chrome

refers: gitbrent/bootstrap4-toggle#32
by: @daniel-scatigno
fixed base in : @bryan-brancotte comment

hi @daniel-scatigno,
Do you want to fixed sending a pull-request for been corretly acknowledge?
Just in bootstrap 5 there is not needed to add the class input-group-btn, so the fix will be:
.input-group .toggle-on,
.input-group .toggle-off{
    position: absolute;
}

Hi @palcarazm
Thanks for the proposition, you can push the fix by yourself if you are ok with this.


README section on large pushes not triggering is now redundant

The section on builds not triggering on large pushes is I believe redundant as AWS now supports 256KB asynchronous invocation payloads. With this, SNS and Lambda payload size limits should now be in line and the error will no longer occur.

Was removed a while ago in the 0.10.0 branch – just haven't had time to merge yet. https://github.com/lambci/lambci/commit/427ead03e64068a07dfa7a6a961443c7a49f0083#diff-04c6e90faac2675aa89e2176d2eec7d8


Broken again on Intellij 2018.2

Hi,
Just FYI, this appears to be broken once again on the latest update of Intellij. I get the same behavior that was observed earlier: no Cucumber steps match.

I will look into it. I have a question for @danielwegener, do you really want to keep the until version? It might be better to remove it and actually let it break when it is truly broken. Intellij is not very good at warning it will be broken anyway.
This also may be the last time I look at this plugin for a while. Not to sure about how cucumber filled my future will be.

please try again:
https://plugins.jetbrains.com/plugin/7460-cucumber-for-scala/update/49133

thanks for your patience and contributions @pbyrne-mdsol :)

My pleasure  @danielwegener - though after tomorrow this account is technically dead.
I will switch back to my @pbyrne84.
I think I may of found a replacement for me if I do not end up doing cucumber again for a while.

Please try https://plugins.jetbrains.com/plugin/7460-cucumber-for-scala/update/77214


bot responding to emoji

anyone know how to let the bot respond to discord emoji?

check out some of the discord bots that allow you to alias commands. For example, "!q" instead of "!queue". Or maybe even "!:grinning:" to "!play".
https://twentysix26.github.io/Red-Docs/red_guide_aliases/
haven't used that but it looks like it could accomplish what you want.

It doesn’t. As far as i know. The text (for example) :joy: turns into a picture before the bot recognizes it.

:joy: Discord shows emoji like this. so try placing the keyword in your config for the emote you want in that format.

This is probably possible by using the actual ID representation of the emoji, but we don't recommend doing that - just use standard characters for prefixes.


added a layerID to PreviewImage by using currentTimeMillis()

Added tests for Undo/Redo/PreviewImage
Added Utilities for testing - ModelGenerator and PreviewImageGenerator

nice work, detailed tests implemented!


feat: First version

This is still WIP.
Missing:
[ ] Mock tests
[ ] Concurrency
[ ] Transformations of Sharepoint Types to CloudQuery Types

@yevgenypats it looks great!
I'm not interfere to the places there some gaps preventing a scalability structure wise for now. When I will be applying changes to the plugin I'll amend a few principal things which are not so important in the initial version. And definitely will be commenting what and why is done in a way it should be due to the platform specifics.
Also, what I'd want to amend later is the incremental mode. The platform allows getting what's changed (added, updated, removed, restored) in a robust and very efficient way, as well as continuing sync of a large list from where it stopped. Regarding this, does CloudQuery provide a sync state OOTB approach? To optionally use on a next sync run.

Hi @yevgenypats should we merged this PR so far? I know that @disq is actively working these days.

I just merged @disq PR. I think we can merge it now but will let @disq weigh in if anything else should be done before that?

Well it seems to work so far... I'm sure we'll find some edge cases and some more types to handle and so on, as we start throwing more "List"s into it.

Currently we don't handle these types explicitly so they fallback to TypeJSON:
7:57PM WRN unknown type, assuming JSON field_id=c07b7c34-79bd-4f49-8409-367c5ed35a35 field_title=FieldHyperLink kind=11 module=sharepoint-src table=sharepoint_data_types type=URL
7:57PM WRN unknown type, assuming JSON field_id=716664c5-2385-4e48-be15-2d0c812a7103 field_title=FieldLocation kind=33 module=sharepoint-src table=sharepoint_data_types type=Location
7:57PM WRN unknown type, assuming JSON field_id=fc83d5c5-f61a-4692-9700-592383ee2b55 field_title="FieldLocation: Coordinates" kind=31 module=sharepoint-src table=sharepoint_data_types type=Geolocation
7:57PM WRN unknown type, assuming JSON field_id=d37f2bdb-e8bb-4c55-826a-52d46761e019 field_title=FieldImage kind=34 module=sharepoint-src table=sharepoint_data_types type=Thumbnail
7:57PM WRN unknown type, assuming JSON field_id=8b5d5756-6be4-4856-be55-bcc43ae89706 field_title=FieldManagedMetadataSingle kind=0 module=sharepoint-src table=sharepoint_data_types type=TaxonomyFieldType
7:57PM WRN unknown type, assuming JSON field_id=04582bcd-b682-415d-abde-d3cef4d7de97 field_title=FieldManagedMetadataMulti kind=0 module=sharepoint-src table=sharepoint_data_types type=TaxonomyFieldTypeMulti

Going to merge this now. And play around with code and sync scenarios later on this week.
Thank you @yevgenypats, @disq you are champs!


Mismatching compile error with keyword use in macro

I noticed a ra compiler error with this snippet, that doesn't happen in rustc.
fn main() {
    let file_name="";
    let _ = format!("{fn}", fn=file_name);
}

The issue is the fn keyword in the named format.
This is easily worked around, so not big deal, but the insidious thing is that the error displayed in the wrong place at the start of the file, so guessing the bit that caused the error needed some investigation.

@scoopr I assume this is still happening in current RA? The error might be in the right place now though.

It works for me:

I can't reproduce either. Let close it first and feel free to reopen it if needed.

I can't reproduce either. Let close it first and feel free to reopen it if needed.

Sorry forgot to retest, couldn't reproduce it anymore either.

Sorry forgot to retest, couldn't reproduce it anymore either.


option for generating sourcemaps?

lessc has an option to generate the very handy soucemaps, is there a way to set that for this watcher as well?

Sorry for taking so long to respond.
Definitely! When I first wrote this, I was filling a very niche need.
Over the next few days I am going to fix a growing list of issues. When I push those changes, I'll include sourcemaps in the mix as well.

Thanks for the suggestion!
less-watch-compile was just updated to include a toggle for generating sourcemaps.


Enable support for GPX Extensions and fix 'toGeoJSON'

Added support for GPX extensions like Heart rate and Cadance according to following spec:
https://logiqx.github.io/gps-wizard/gpx/extensions.html

Hi! It would be ideal if this is merged! I didn't realize the code was done and had to do my own version of the parser

Hi! It would be ideal if this is merged! I didn't realize the code was done and had to do my own version of the parser

Yea this repo seems kind of stale. If you want you can directly install my fork with npm:
npm i github:vincvdwal/GPXParser.js


Antrea unit tests fail with go 1.14 version

Describe the bug
Unit test on github.com/vmware-tanzu/antrea/pkg/agent/util failed when using go 1.14 version. If using go 1.13, all unit tests will pass. Here is the log trace:
fatal error: checkptr: unsafe pointer conversion

goroutine 8 [running]:
runtime.throw(0x6b2f76, 0x23)
	/usr/local/go/src/runtime/panic.go:1112 +0x72 fp=0xc00007f778 sp=0xc00007f748 pc=0x461e72
runtime.checkptrAlignment(0xc0001270ec, 0x6a0900, 0x1)
	/usr/local/go/src/runtime/checkptr.go:13 +0xd0 fp=0xc00007f7a8 sp=0xc00007f778 pc=0x434470
github.com/vishvananda/netlink.parseLinkStats64(...)
	/root/go/pkg/mod/github.com/vishvananda/netlink@v1.0.0/link_linux.go:2046
github.com/vishvananda/netlink.LinkDeserialize(0x0, 0xc000127010, 0x4f8, 0xff0, 0xd, 0x10, 0x0, 0x0)
	/root/go/pkg/mod/github.com/vishvananda/netlink@v1.0.0/link_linux.go:1421 +0x481 fp=0xc00007fb28 sp=0xc00007f7a8 pc=0x633e21
github.com/vishvananda/netlink.(*Handle).LinkList(0x857c60, 0x1, 0x1, 0x0, 0x0, 0xc0000716c0)
	/root/go/pkg/mod/github.com/vishvananda/netlink@v1.0.0/link_linux.go:1458 +0x25f fp=0xc00007fc00 sp=0xc00007fb28 pc=0x63672f
github.com/vishvananda/netlink.LinkList(...)
	/root/go/pkg/mod/github.com/vishvananda/netlink@v1.0.0/link_linux.go:1438
github.com/vmware-tanzu/antrea/pkg/agent/util.GetIPNetDeviceFromIP(0xc00001c2e8, 0x4, 0x4, 0xa, 0x6ee560, 0xc000010048, 0x0, 0x0)
	/root/antrea_master/antrea/pkg/agent/util/net_unix.go:31 +0x7c fp=0xc00007fd90 sp=0xc00007fc00 pc=0x63f5bc
github.com/vmware-tanzu/antrea/pkg/agent/util.TestGetDefaultLocalNodeAddr(0xc000128240)
	/root/antrea_master/antrea/pkg/agent/util/net_test.go:57 +0x1a7 fp=0xc00007fed0 sp=0xc00007fd90 pc=0x640097
testing.tRunner(0xc000128240, 0x6b67f8)
	/usr/local/go/src/testing/testing.go:992 +0x1ec fp=0xc00007ffd0 sp=0xc00007fed0 pc=0x55d55c
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1373 +0x1 fp=0xc00007ffd8 sp=0xc00007ffd0 pc=0x495251
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1043 +0x661

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000128000, 0x6b0b84, 0x1b, 0x6b67f8, 0x1)
	/usr/local/go/src/testing/testing.go:1044 +0x699
testing.runTests.func1(0xc000128000)
	/usr/local/go/src/testing/testing.go:1285 +0xa7
testing.tRunner(0xc000128000, 0xc00007dce8)
	/usr/local/go/src/testing/testing.go:992 +0x1ec
testing.runTests(0xc00000e080, 0x850c00, 0x2, 0x2, 0x0)
	/usr/local/go/src/testing/testing.go:1283 +0x528
testing.(*M).Run(0xc000124000, 0x0)
	/usr/local/go/src/testing/testing.go:1200 +0x300
main.main()
	_testmain.go:96 +0x338

goroutine 6 [chan receive]:
k8s.io/klog.(*loggingT).flushDaemon(0x858bc0)
	/root/go/pkg/mod/k8s.io/klog@v0.3.3/klog.go:990 +0xae
created by k8s.io/klog.init.0
	/root/go/pkg/mod/k8s.io/klog@v0.3.3/klog.go:404 +0x9b
FAIL	github.com/vmware-tanzu/antrea/pkg/agent/util	0.035s

To Reproduce

Download the Antrea code and install go 1.14 with go1.14.linux-amd64.tar.gz
run make test-unit

Expected
All unit tests should pass
Versions:
Please provide the following information:

Antrea version: latest master branch
Container runtime: docker 19.03.4
Linux kernel version on the Kubernetes Nodes: 4.15.0-47-generic

Thanks for reporting this. Do you know if this is an issue with Antrea or with the netlink Go package?

Thanks for reporting this. Do you know if this is an issue with Antrea or with the netlink Go package?

According to logs it seems an issue with netlink Go, just in case that Antrea might be involved in.

That was fixed in https://github.com/vishvananda/netlink/pull/507
Probably all we need to do is update the netlink version we are using. Let me take a look.

I opened a PR to fix this: https://github.com/vmware-tanzu/antrea/pull/436. I also opened an issue to track bumping up the Go version we use for CI to 1.14: https://github.com/vmware-tanzu/antrea/issues/437


Evaluate integrating react-admin inside db-dashboard

Checkout https://github.com/marmelab/react-admin

I add that it would be interesting to have platformatic-db in this list:
https://marmelab.com/react-admin/DataProviderList.html

An adapter for react-admin would definitely be nice to have. That would also be beneficial if you feel like integrating into the db-dashboard package

Hi, I think that I could try to implement a new platformatic db command to generate a react-admin app to add inside the db-dashboard? What do you think about?
@mcollina
For example, this could be the command:
platformatic db react-admin

I would completely skip the command and bundle it as part of db-dashboard. You can get the list of resources to display from the swagger definition.

@mcollina good... I was going to ask you exactly that.

I would completely skip the command and bundle it as part of db-dashboard. You can get the list of resources to display from the swagger definition.

Agree

But before that, we'd need to sort out where to place the data provider so that we can eventually build the dashboard with it

I think the best place is this monorepo in a new folder inside packages/ Wdyt?

But before that, we'd need to sort out where to place the data provider so that we can eventually build the dashboard with it

I think the best place is this monorepo in a new folder inside packages/ Wdyt?

Agree

I'm agree... in my local environment (to try to implement react-admin inside db-dashboard), I'm already doing in this way.
PS
... but I would suggest to use ra-data-platformatic-db-rest as name instead of ra-data-platformatic-rest.
@mcollina?

Does it need to follow a specific naming convention? Could @platformatic/db-ra-rest work?

I'm agree... in my local environment (to try to implement react-admin inside db-dashboard), I'm already doing in this way.
PS ... but I would suggest to use ra-data-platformatic-db-rest as name instead of ra-data-platformatic-rest. @mcollina?

The first naming isn't correct. The plugin isn't just for db or for the dashboard.
It'll be for broader usages of front-end apps that use platformatic as a "provider".

Does it need to follow a specific naming convention? Could @platformatic/db-ra-rest work?

Here you can find other names.
https://marmelab.com/react-admin/DataProviderList.html
@platformatic/ra-data-rest would be the prettier imho

Ohw you probably were referring to "Platformatic-db" as a product... in that case yes, @platformatic/db-ra-data-rest is the better option

That was my idea!

see also the PR https://github.com/platformatic/platformatic/pull/239, please

Hello, please I need help how go forward,I have clone and setup the dashboard-db, but the only thing showing in my browser is
"Dashboard is loading"

Hello, please I need help how go forward,I have clone and setup the dashboard-db, but the only thing showing in my browser is "Dashboard is loading"

Hi, you could have some errors in browser console... see there.

Hello, please I need help how go forward,I have clone and setup the dashboard-db, but the only thing showing in my browser is "Dashboard is loading"

Hi @iamkennis
This PR https://github.com/platformatic/platformatic/pull/309 could solve your problem.
Let me know please!

Hello, please I need help how go forward,I have clone and setup the dashboard-db, but the only thing showing in my browser is "Dashboard is loading"

Hi @iamkennis
This PR https://github.com/platformatic/platformatic/pull/309 could solve your problem.
Let me know please!

Okay,I will check it out


Internal: Convert docs to Next.js

Summary
Converts our documentation site to use Next.js (from Create React App).
Benefits

Enables SSR testing which is especially important for Masonry
Allows us to start using react-docgen
Faster development cycle, since we only build the page that you are on
Automatically get latest features by upgrading Next.js
Simpler routing logic since Next.js uses file based routing
Big reduction in dependencies: Removed 3446 lines in yarn.lock

Review Notes

Replaces spaces with underscores in our URLs :
https://gestalt.pinterest.systems/How%20to%20Work%20with%20Us => https://gestalt.pinterest.systems/How_to_Work_with_Us
Every page in pages/ now requires a React component as an export
The root of each docs page is CardPage
Importing .css files is no longer allowed (if they are not CSS modules). All global docs CSS lives now in docs/docs.css
Try local development by patching this PR:cd ~/code/gestalt
git remote add christianvuerings git://github.com/christianvuerings/gestalt.git
git fetch christianvuerings
git checkout christianvuerings/next-js
yarn
yarn start

Potential Follow ups

Add Next.js ESLint rule: https://nextjs.org/docs/basic-features/eslint
Use React docgen

Links

https://nextjs.org/

@christianvuerings I see the first item on the sidebar list not formatted

First sidebar item is not formatted

@cvuerings

LGTM, cloned and the Docs work!  Just that first item in sidebar menu list.

First sidebar item is not formatted

@christianvuerings

@AlbertCarreras thanks for reporting - I momentarily changed the navbar to render nothing on the server so we should no longer see this issue.


U/jrbogart/trim bandpass

Includes

new code to thin and cache lsst bandpasses
when creating flux catalogs, if --flux-parallel option value is 1, do processing inline rather than forking subprocesses
bug fix to make use of flux files efficient as intended
bug fix to keep going if in get_objects_by_region not all healpixel files intersecting the region are present

Concerning access to the verbose flag - easy enough to do, but I'm not sure how useful it is. I'll scan the code to see what gets output when it's set.   I had been thinking of getting rid of output from the verbose command in favor of logging messages at DEBUG level, but I don't yet use the logger consistently.

If you want to use the logger instead that's fine, but I did find it useful to be able to set that verbose flag through the open_catalog function in my copy of the repo.   I think as long as there are print statements controlled by that verbose flag, I would find it convenient to be able to control that output via that option through open_catalog.

Since you found it useful I'll do that now; it's quick and easy.  Ultimately I think using the logger is better but that can wait.

@jchiang87 do you want to look at this again or should I just go ahead and merge?


Fix typo in code

compundVariantsObject -> compoundVariantsObject

LGTM too 👍
@jonathantneal you can merge when you're ready 🚀