Cycle loading state error: LibraryContext.load2.loadBundle

The builder process I've been using with no problems is now breaking on watch. That is to say:

It completes just fine with pub run build_runner build --delete-conflicting-outputs (though it does warn me about missing required sources, though that has been fine to ignore for months).
$ pub run build_runner build --delete-conflicting-outputs
[INFO] Generating build script completed, took 337ms
[WARNING] The package `edgehead` does not include some required sources in any of its targets (see their build.yaml file).
The missing sources are:
  - $package$
[INFO] Reading cached asset graph completed, took 120ms
[INFO] Checking for updates since last build completed, took 512ms
[INFO] Running build completed, took 16.0s
[INFO] Caching finalized dependency graph completed, took 101ms
[INFO] Succeeded after 16.2s with 43 outputs (250 actions)

It also completes fine for the initial build of pub run build_runner watch --delete-conflicting-outputs

But then, when it's watching and I change the file, it breaks with the following:

$ pub run build_runner watch --delete-conflicting-outputs
[INFO] Generating build script completed, took 314ms
[WARNING] The package `edgehead` does not include some required sources in any of its targets (see their build.yaml file).
The missing sources are:
  - $package$
[INFO] Setting up file watchers completed, took 4ms
[INFO] Waiting for all file watchers to be ready completed, took 201ms
[INFO] Reading cached asset graph completed, took 122ms
[INFO] Checking for updates since last build completed, took 558ms
[INFO] Running build completed, took 14.8s
[INFO] Caching finalized dependency graph completed, took 126ms
[INFO] Succeeded after 14.9s with 43 outputs (250 actions)
[INFO] ------------------------------------------------------------------------
[INFO] Starting Build
[INFO] Updating asset graph completed, took 3ms
[SEVERE] egamebook_builder:writers_builder on lib/writers_input.dart:

Cycle loading state error
#0      LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:177:32)
dart-lang/build#1      LibraryContext.load2.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:250:17)
dart-lang/build#2      PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:34:15)
dart-lang/build#3      LibraryContext.load2 (package:analyzer/src/dart/analysis/library_context.dart:248:12)
dart-lang/build#4      AnalysisDriver._createLibraryContext.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1504:25)
dart-lang/build#5      _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#6      _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#7      _runZoned (dart:async/zone.dart:1630:10)
dart-lang/build#8      runZoned (dart:async/zone.dart:1550:10)
dart-lang/build#9      NullSafetyUnderstandingFlag.enableNullSafetyTypes (package:analyzer/dart/element/null_safety_understanding_flag.dart:42:12)
dart-lang/build#10     AnalysisDriver._createLibraryContext (package:analyzer/src/dart/analysis/driver.dart:1490:33)
dart-lang/build#11     AnalysisDriver._computeUnitElement.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1420:28)
dart-lang/build#12     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:34:15)
dart-lang/build#13     AnalysisDriver._computeUnitElement (package:analyzer/src/dart/analysis/driver.dart:1418:20)
dart-lang/build#14     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1006:34)
dart-lang/build#15     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:1967:24)
<asynchronous suspension>
dart-lang/build#16     AnalysisDriverScheduler.start (package:analyzer/src/dart/analysis/driver.dart:1890:5)
dart-lang/build#17     analysisDriver (package:build_resolvers/src/analysis_driver.dart:62:13)
dart-lang/build#18     AnalyzerResolvers._ensureInitialized.<anonymous closure> (package:build_resolvers/src/resolver.dart:224:26)
<asynchronous suspension>
dart-lang/build#19     AnalyzerResolvers._ensureInitialized.<anonymous closure> (package:build_resolvers/src/resolver.dart)
dart-lang/build#20     AnalyzerResolvers._ensureInitialized (package:build_resolvers/src/resolver.dart:227:6)
dart-lang/build#21     AnalyzerResolvers.get (package:build_resolvers/src/resolver.dart:232:11)
dart-lang/build#22     PerformanceTrackingResolvers.get.<anonymous closure> (package:build_runner_core/src/performance_tracking/performance_tracking_resolvers.dart:19:58)
dart-lang/build#23     _NoOpBuilderActionTracker.trackStage (package:build_runner_core/src/generate/performance_tracker.dart:302:15)
dart-lang/build#24     PerformanceTrackingResolvers.get (package:build_runner_core/src/performance_tracking/performance_tracking_resolvers.dart:19:16)
dart-lang/build#25     BuildStepImpl.resolver (package:build/src/builder/build_step_impl.dart:73:54)
dart-lang/build#26     _Builder.build (package:source_gen/src/builder.dart:68:32)
dart-lang/build#27     runBuilder.buildForInput (package:build/src/generate/run_builder.dart:55:21)
dart-lang/build#28     MappedListIterable.elementAt (dart:_internal/iterable.dart:417:31)
dart-lang/build#29     ListIterator.moveNext (dart:_internal/iterable.dart:343:26)
dart-lang/build#30     Future.wait (dart:async/future.dart:402:26)
dart-lang/build#31     runBuilder.<anonymous closure> (package:build/src/generate/run_builder.dart:61:36)
dart-lang/build#32     _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#33     _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#34     _runZoned (dart:async/zone.dart:1630:10)
dart-lang/build#35     runZonedGuarded (dart:async/zone.dart:1618:12)
dart-lang/build#36     runZoned (dart:async/zone.dart:1547:12)
dart-lang/build#37     scopeLogAsync (package:build/src/builder/logging.dart:26:3)
dart-lang/build#38     runBuilder (package:build/src/generate/run_builder.dart:61:9)
dart-lang/build#39     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:485:19)
dart-lang/build#40     _NoOpBuilderActionTracker.trackStage (package:build_runner_core/src/generate/performance_tracker.dart:302:15)
dart-lang/build#41     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:483:23)
<asynchronous suspension>
dart-lang/build#42     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart)
dart-lang/build#43     NoOpTimeTracker.track (package:timing/src/timing.dart:222:44)
dart-lang/build#44     _SingleBuild._runForInput.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:440:22)
dart-lang/build#45     Pool.withResource (package:pool/pool.dart:127:28)
<asynchronous suspension>
dart-lang/build#46     _SingleBuild._runForInput (package:build_runner_core/src/generate/build_impl.dart:436:17)
dart-lang/build#47     _SingleBuild._runBuilder.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:374:38)
dart-lang/build#48     MappedIterator.moveNext (dart:_internal/iterable.dart:392:20)
dart-lang/build#49     Future.wait (dart:async/future.dart:402:26)
dart-lang/build#50     _SingleBuild._runBuilder (package:build_runner_core/src/generate/build_impl.dart:373:36)
dart-lang/build#51     _SingleBuild._runPhases.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:319:20)
<asynchronous suspension>
dart-lang/build#52     _SingleBuild._runPhases.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart)
dart-lang/build#53     _NoOpBuildPerformanceTracker.trackBuildPhase (package:build_runner_core/src/generate/performance_tracker.dart:184:15)
dart-lang/build#54     _SingleBuild._runPhases.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:315:47)
dart-lang/build#55     NoOpTimeTracker.track (package:timing/src/timing.dart:222:44)
dart-lang/build#56     _SingleBuild._runPhases (package:build_runner_core/src/generate/build_impl.dart:309:32)
dart-lang/build#57     logTimedAsync (package:build_runner_core/src/logging/logging.dart:25:30)
dart-lang/build#58     _SingleBuild._safeBuild.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:266:26)
dart-lang/build#59     _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#60     _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#61     _runZoned (dart:async/zone.dart:1630:10)
dart-lang/build#62     runZonedGuarded (dart:async/zone.dart:1618:12)
dart-lang/build#63     runZoned (dart:async/zone.dart:1547:12)
dart-lang/build#64     _SingleBuild._safeBuild (package:build_runner_core/src/generate/build_impl.dart:261:5)
dart-lang/build#65     _SingleBuild.run (package:build_runner_core/src/generate/build_impl.dart:208:24)
dart-lang/build#66     BuildImpl.run (package:build_runner_core/src/generate/build_impl.dart:94:56)
dart-lang/build#67     WatchImpl._run.<anonymous closure> (package:build_runner/src/generate/watch_impl.dart:337:14)
<asynchronous suspension>
dart-lang/build#68     WatchImpl._run.<anonymous closure> (package:build_runner/src/generate/watch_impl.dart)
dart-lang/build#69     WatchImpl._run (package:build_runner/src/generate/watch_impl.dart:355:6)
dart-lang/build#70     new WatchImpl (package:build_runner/src/generate/watch_impl.dart:196:20)
dart-lang/build#71     _runWatch (package:build_runner/src/generate/watch_impl.dart:127:5)
dart-lang/build#72     watch (package:build_runner/src/generate/watch_impl.dart:85:15)
dart-lang/build#73     _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#74     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#75     _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#76     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#77     Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#78     Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#79     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#80     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#81     BuildOptions.create (package:build_runner_core/src/generate/options.dart)
dart-lang/build#82     _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#83     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#84     _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#85     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#86     Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#87     Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#88     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#89     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#90     TargetGraph.forPackageGraph (package:build_runner_core/src/package_graph/target_graph.dart)
dart-lang/build#91     _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#92     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#93     _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#94     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#95     Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#96     Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#97     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#98     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#99     _packageBuildConfig (package:build_runner_core/src/package_graph/target_graph.dart)
dart-lang/build#100    _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#101    _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#102    _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#103    Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#104    Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#105    Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#106    _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
dart-lang/build#107    _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
dart-lang/build#108    BuildConfig.fromBuildConfigDir (package:build_config/src/build_config.dart)
dart-lang/build#109    _rootRunUnary (dart:async/zone.dart:1198:47)
dart-lang/build#110    _CustomZone.runUnary (dart:async/zone.dart:1100:19)
dart-lang/build#111    _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
dart-lang/build#112    Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
dart-lang/build#113    Future._propagateToListeners (dart:async/future_impl.dart:725:32)
dart-lang/build#114    Future._completeWithValue (dart:async/future_impl.dart:529:5)
dart-lang/build#115    Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
dart-lang/build#116    _rootRun (dart:async/zone.dart:1190:13)
dart-lang/build#117    _CustomZone.run (dart:async/zone.dart:1093:19)
dart-lang/build#118    _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1021:23)
dart-lang/build#119    _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
dart-lang/build#120    _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
dart-lang/build#121    _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
dart-lang/build#122    _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

I don't have a minimal repro, but if you're willing to try it out on the real thing:

git clone https://github.com/filiph/egamebook.git
cd egamebook/edgehead
pub get
pub run build_runner watch --delete-conflicting-outputs
Open any file in assets/text/Knights (e.g. this one) and make a whitespace change, then save

That should trigger the failure.

Dart SDK Version (dart --version)

Dart SDK version: 2.9.0 (stable) (Fri Jul 31 10:59:48 2020 +0200) on "macos_x64"

What package(s) from this repo you are using, and the version (i.e. build_runner 0.7.12)

build (transitive) 1.3.0
build_runner (direct dev) 1.10.1

What builder(s) you are using (or writing yourself). Try to give a short summary of what they do.

I'm using my own runners that take text files and transpile them into dart files.
I'm also using built_value that runs both on manually-written Dart files as well as on the dart files generated in the previous step.

Whether you are using Windows, MacOSX, or Linux (if applicable)

MacOSX

Any other packages or constraints we should know about

You can look at the mono repo and its pubspecs here, but I don't think there's anything out of the ordinary.

https://dart-review.googlesource.com/c/sdk/+/159140 should fix the issue, when a version of analyzer that includes this change is published.

@jakemac53 Should I create a new issue on the dart-lang/build repo to ask for including this in the next release?


Re-ID, Ingest to Napa DB, and Verify Napa compliance for "SPRUCE" study nmdc:sty-11-33fbta56

Note: Scope of this work is the Napa Database Instance.  The same steps will need to be repeated in a prod-ready environment
For the "SPRUCE" Study -
id: nmdc:sty-11-33fbta56
legacy id: gold:Gs0110138

[x] Extract records
[x] Process records: generate re-ID'ed records and changesheet for OmicsProcessing records
[x] Ingest records
[x] Delete old and failed records
[ ] https://github.com/microbiomedata/nmdc_automation/issues/68
[x] Apply OmicsProcessing changes
[x] Extract study to YAML
[x] Validate vs schema v8.0.0 via linkml-validate
[x] Validate vs. schema v10.0.0
[x] Transform to RDF datastore
[x] SPARQL query for referential integrity checks

delete-old-records continues to have some issues going through the queries:run endpoint.  Each deletion can be several seconds, and we are getting http dropouts like so:

INFO:root:Deleting None record: nmdc:58e0fa8e0426f18fd6f5fda52b90a57d
INFO:root:An error occured while running: {'delete': 'data_object_set', 'deletes': [{'q': {'id': 'nmdc:58e0fa8e0426f18fd6f5fda52b90a57d'}, 'limit': 1}]}, response retutrned: HTTPSConnectionPool(host='api-napa.microbiomedata.org', port=443): Max retries exceeded with url: /queries:run (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x105b0ec40>: Failed to resolve 'api-napa.microbiomedata.org' ([Errno 8] nodename nor servname provided, or not known)"))

@corilo
There is one issue with a mags_activity data object:
/Users/MBThornton/Library/Caches/pypoetry/virtualenvs/nmdc-schema-22PpSQmj-py3.9/lib/python3.9/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
INFO:root:Using SchemaView with im=None
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] Additional properties are not allowed ('detail' was unexpected) in /data_object_set/1678
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'id' is a required property in /data_object_set/1678
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'name' is a required property in /data_object_set/1678
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'description' is a required property in /data_object_set/1678
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'nmdc:78f8bf24916f01d053378b1bd464cd8a' does not match '^(nmdc):wfmag-([0-9][a-z]{0,6}[0-9])-([A-Za-z0-9]{1,})(\\.[A-Za-z0-9]{1,})*(_[A-Za-z0-9_\\.-]+)?$' in /mags_activity_set/0/id
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'nmdc:061846685755316cd5f20d4035212ba1' does not match '^(nmdc):wfmag-([0-9][a-z]{0,6}[0-9])-([A-Za-z0-9]{1,})(\\.[A-Za-z0-9]{1,})*(_[A-Za-z0-9_\\.-]+)?$' in /mags_activity_set/1/id

After fixing bug in delete-old-records command:
/INFO:root:Using SchemaView with im=None
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] Additional properties are not allowed ('detail' was unexpected) in /data_object_set/1675
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'id' is a required property in /data_object_set/1675
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'name' is a required property in /data_object_set/1675
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'description' is a required property in /data_object_set/1675

linkml-convert fails

Re-extracted this study after the fix in #1809
and re-ran linkml-validate
(nmdc-schema-py3.9) (base) MBThornton@MBThornton-M92 nmdc-schema % linkml-validate -s ./local/nmdc-schema-v8.0.0.yaml ./local/nmdc:sty-11-33fbta56.yaml

INFO:root:Using SchemaView with im=None
No issues found
(nmdc-schema-py3.9) (base) MBThornton@MBThornton-M92 nmdc-schema %

@corilo There are 50 NOM Workflows with DataObject IDs that are not in the DB:
(nmdc-schema-py3.9) (base) MBThornton@MBThornton-M92 nmdc-schema % grep ERROR ./local/nmdc:sty-11-33fbta56.log
11:02:49,703 root ERROR MissingDataObject nmdc:dobj-11-ztbv2p46 for None / nmdc:wfnom-11-smcr9z56not found  in the NMDC database.
11:02:50,326 root ERROR MissingDataObject nmdc:dobj-11-x5xjqd77 for None / nmdc:wfnom-11-pjq1np68not found  in the NMDC database.
11:02:50,905 root ERROR MissingDataObject nmdc:dobj-11-0cbpm036 for None / nmdc:wfnom-11-558bnt86not found  in the NMDC database.
11:02:51,484 root ERROR MissingDataObject nmdc:dobj-11-3g333768 for None / nmdc:wfnom-11-1bppxe39not found  in the NMDC database.
11:02:52,50 root ERROR MissingDataObject nmdc:dobj-11-mqxpdk90 for None / nmdc:wfnom-11-wsstke35not found  in the NMDC database.
11:02:52,685 root ERROR MissingDataObject nmdc:dobj-11-2mf0ck30 for None / nmdc:wfnom-11-sdtmv824not found  in the NMDC database.
11:02:53,260 root ERROR MissingDataObject nmdc:dobj-11-ptn3y828 for None / nmdc:wfnom-11-hd7jqk13not found  in the NMDC database.
11:02:53,855 root ERROR MissingDataObject nmdc:dobj-11-5078ek40 for None / nmdc:wfnom-11-a3btbx96not found  in the NMDC database.
11:02:54,454 root ERROR MissingDataObject nmdc:dobj-11-2es9cb20 for None / nmdc:wfnom-11-18ysx178not found  in the NMDC database.
11:02:55,46 root ERROR MissingDataObject nmdc:dobj-11-yzw19k52 for None / nmdc:wfnom-11-xb2spg83not found  in the NMDC database.
11:02:55,657 root ERROR MissingDataObject nmdc:dobj-11-xey2px87 for None / nmdc:wfnom-11-r5249v25not found  in the NMDC database.
11:02:56,261 root ERROR MissingDataObject nmdc:dobj-11-mm4v3w81 for None / nmdc:wfnom-11-1x95zh14not found  in the NMDC database.
11:02:56,878 root ERROR MissingDataObject nmdc:dobj-11-0wzvat27 for None / nmdc:wfnom-11-ba9mqz70not found  in the NMDC database.
11:02:57,485 root ERROR MissingDataObject nmdc:dobj-11-2pgsp333 for None / nmdc:wfnom-11-8w8t3j79not found  in the NMDC database.
11:02:58,90 root ERROR MissingDataObject nmdc:dobj-11-57yeca15 for None / nmdc:wfnom-11-jzm23e74not found  in the NMDC database.
11:02:58,698 root ERROR MissingDataObject nmdc:dobj-11-k9jxrf86 for None / nmdc:wfnom-11-4yejyf26not found  in the NMDC database.
11:02:59,278 root ERROR MissingDataObject nmdc:dobj-11-d2026a83 for None / nmdc:wfnom-11-yhf3ba83not found  in the NMDC database.
11:02:59,879 root ERROR MissingDataObject nmdc:dobj-11-aj065031 for None / nmdc:wfnom-11-k817cz71not found  in the NMDC database.
11:03:00,476 root ERROR MissingDataObject nmdc:dobj-11-5nxka964 for None / nmdc:wfnom-11-h2w6je98not found  in the NMDC database.
11:03:01,96 root ERROR MissingDataObject nmdc:dobj-11-d8qyvj73 for None / nmdc:wfnom-11-1aevmd70not found  in the NMDC database.
11:03:01,698 root ERROR MissingDataObject nmdc:dobj-11-7v0f8v61 for None / nmdc:wfnom-11-ht2xnt32not found  in the NMDC database.
11:03:02,297 root ERROR MissingDataObject nmdc:dobj-11-gwrd8z56 for None / nmdc:wfnom-11-z51yze33not found  in the NMDC database.
11:03:02,901 root ERROR MissingDataObject nmdc:dobj-11-1hqhzh12 for None / nmdc:wfnom-11-t0v70190not found  in the NMDC database.
11:03:03,503 root ERROR MissingDataObject nmdc:dobj-11-3jgncm19 for None / nmdc:wfnom-11-pjgqr851not found  in the NMDC database.
11:03:04,72 root ERROR MissingDataObject nmdc:dobj-11-5b81zh83 for None / nmdc:wfnom-11-hrh82f26not found  in the NMDC database.
11:03:04,656 root ERROR MissingDataObject nmdc:dobj-11-jf77qb43 for None / nmdc:wfnom-11-0ddtxb36not found  in the NMDC database.
11:03:05,262 root ERROR MissingDataObject nmdc:dobj-11-3093qg91 for None / nmdc:wfnom-11-2qeh9y42not found  in the NMDC database.
11:03:05,848 root ERROR MissingDataObject nmdc:dobj-11-vjz44869 for None / nmdc:wfnom-11-5z6a8f80not found  in the NMDC database.
11:03:06,457 root ERROR MissingDataObject nmdc:dobj-11-kc2pzt82 for None / nmdc:wfnom-11-ktx45570not found  in the NMDC database.
11:03:07,43 root ERROR MissingDataObject nmdc:dobj-11-e00t7r76 for None / nmdc:wfnom-11-x5hffc07not found  in the NMDC database.
11:03:07,653 root ERROR MissingDataObject nmdc:dobj-11-3fj82w22 for None / nmdc:wfnom-11-nevepm94not found  in the NMDC database.
11:03:08,242 root ERROR MissingDataObject nmdc:dobj-11-aw54dn02 for None / nmdc:wfnom-11-j046q055not found  in the NMDC database.
11:03:08,834 root ERROR MissingDataObject nmdc:dobj-11-qaqakp19 for None / nmdc:wfnom-11-xrabz763not found  in the NMDC database.
11:03:09,434 root ERROR MissingDataObject nmdc:dobj-11-0r0g2p17 for None / nmdc:wfnom-11-r14yhp90not found  in the NMDC database.
11:03:10,22 root ERROR MissingDataObject nmdc:dobj-11-35jght91 for None / nmdc:wfnom-11-z80x9z14not found  in the NMDC database.
11:03:10,615 root ERROR MissingDataObject nmdc:dobj-11-7eyhe417 for None / nmdc:wfnom-11-48614c11not found  in the NMDC database.
11:03:11,208 root ERROR MissingDataObject nmdc:dobj-11-7d139n02 for None / nmdc:wfnom-11-2atr5z74not found  in the NMDC database.
11:03:11,830 root ERROR MissingDataObject nmdc:dobj-11-3h5th638 for None / nmdc:wfnom-11-7xtfec25not found  in the NMDC database.
11:03:12,428 root ERROR MissingDataObject nmdc:dobj-11-c513t353 for None / nmdc:wfnom-11-0my70030not found  in the NMDC database.
11:03:13,36 root ERROR MissingDataObject nmdc:dobj-11-bbsq0e70 for None / nmdc:wfnom-11-1yz7tz37not found  in the NMDC database.
11:03:13,634 root ERROR MissingDataObject nmdc:dobj-11-x2am3c25 for None / nmdc:wfnom-11-wv3pt090not found  in the NMDC database.
11:03:14,222 root ERROR MissingDataObject nmdc:dobj-11-xb5n8830 for None / nmdc:wfnom-11-yryh7465not found  in the NMDC database.
11:03:14,834 root ERROR MissingDataObject nmdc:dobj-11-mb3sa895 for None / nmdc:wfnom-11-v0hfgv41not found  in the NMDC database.
11:03:15,414 root ERROR MissingDataObject nmdc:dobj-11-b83b0k89 for None / nmdc:wfnom-11-j6h7q390not found  in the NMDC database.
11:03:16,23 root ERROR MissingDataObject nmdc:dobj-11-bakewf83 for None / nmdc:wfnom-11-669h3e47not found  in the NMDC database.
11:03:16,638 root ERROR MissingDataObject nmdc:dobj-11-ze8mwq93 for None / nmdc:wfnom-11-6z55r709not found  in the NMDC database.
11:03:17,256 root ERROR MissingDataObject nmdc:dobj-11-gw7vh076 for None / nmdc:wfnom-11-zr5g4x66not found  in the NMDC database.
11:03:17,871 root ERROR MissingDataObject nmdc:dobj-11-b09kzm65 for None / nmdc:wfnom-11-8nje0s46not found  in the NMDC database.
11:03:18,481 root ERROR MissingDataObject nmdc:dobj-11-yfh14e47 for None / nmdc:wfnom-11-vh50e238not found  in the NMDC database.
11:03:20,329 root ERROR MissingDataObject nmdc:dobj-11-s67n8g83 for None / nmdc:wfnom-11-f7cgc846not found  in the NMDC database.

linkml-validate vs. schema v10.1.10 has 2 errors:
INFO:root:Using SchemaView with im=None
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] Additional properties are not allowed ('award_dois' was unexpected) in /study_set/0
[ERROR] [./local/nmdc:sty-11-33fbta56.yaml/0] 'study_category' is a required property in /study_set/0

@corilo has updated the NOM DataObjects - results of extract-study now:
Extracted studies: ['gold:Gs0110138', 'nmdc:sty-11-33fbta56'] from the NMDC database in 0:10:13.010635.
No orphaned data objects found.
No missing data objects found.
Writing results to /Users/MBThornton/Documents/code/nmdc-schema/local/nmdc:sty-11-33fbta56.yaml.

Schema v10 compatibility issues will be addressed by:
https://github.com/microbiomedata/nmdc_automation/issues/66

{'description':{$regex:/Gp0208377/}} on data_object_set returns 7 legacy data objects records

@aclum should this re-opened issue be moved to the next sprint?

@mbthornton-lbl There are still legacy data objects "tooShort (< 3kb) filtered contigs fasta file by metaBat2  for $GOLD_PROJECT_ID". I thought we re-added the logic to clean up files based on the gold names.


Network problem behind reverse proxy

Hello, thank you for the amazing repo.
I am having an issue since the 0.51 update,
If I access open-webui from local ip everything works as expected. While if i access it from remote behind reverse proxy and start a chat gives me "network problem" error. I can see the model is loaded and start inference but the answer is always the error.
Could someone help me?
Thank you

Same issue here.
Thx.

Also confirm this issue. Occurred in v0.5.0 and also still occurring on V0.5.1.
Using reverse proxy with custom header for auth (WEBUI_AUTH_TRUSTED_EMAIL_HEADER=X-User-Email) to avoid local network users needing to log in and nginx for the reverse proxy.
Occurs regardless of model used resulting in the installation being non-functional for all intents and purposes.
No issues prior to the upgrade to 0.5.0

I solve the problem using information provided here:
https://github.com/open-webui/open-webui/issues/8074#issuecomment-2562061337

Same issue here.
Thx.
UPDATE:
Fix it in my Synology reverse proxy:

this fix my issue too, I'll be clsing the issue as is a reverse proxy setup to be modified

thank you for the support


[master] Update the development version to 1.3.0-SNAPSHOT

Purpose

$subject

Codecov Report

Merging #22162 into master will not change coverage by %.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #22162   +/-   ##
=======================================
  Coverage   14.59%   14.59%
=======================================
  Files          51       51
  Lines        1411     1411
  Branches      219      219
=======================================
  Hits          206      206
  Misses       1189     1189
  Partials       16       16

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 32a4c43...7c44167. Read the comment docs.


feat: Safe way to select the current ion-view element

Type: feat
Platform: all
When you use document.querySelectorAll('span'); it will select all elements from all ion-view, the only way to detect the current view, is to use the nav-view="active" attribute.
var currentView = document.querySelector('ion-view[nav-view="active"]');

currentView.querySelectorAll('span'); // Spans tags from the current view only

Shouldn't $ionicHistory.currentView() give us the current view element? Or something similar.
Is ion-view[nav-view="active"] the only way to get the current view?
I'm afraid I'll use nav-view attribute and in the future you change the values, attribute name or something else.
Another thing is that sometimes, there's the same element twice in the DOM, the same ion-view, but one is the current, the other isn't the current view, for example, if you open this codepen http://s.codepen.io/felquis/debug/ZYGdYM it'll open with the home, run document.querySelectorAll('ion-view[nav-view="active"]'), it'll log one element. But now navigate to the about tab, now if you run document.querySelectorAll('ion-view[nav-view="active"]') there's two elements.
I think would be great a method that really bring me the current ion-view in the screen, to avoid this confusion to select the current view to do something with this.
Thanks, (this was first posted in the forum http://forum.ionicframework.com/t/safe-way-to-select-the-current-ion-view-element/14035)

Greetings @felquis!
Thank you for the feature request. The humans and I will review this further and possibly add it to our Feature Request board, if we feel it is appropriate for Ionic.
Thank you for allowing me to assist you.

I'm having the same issue. I need to target different 'map' elements in different views, and its not so straightforward.

@jason-engage Are you sure you need jQuery? Can't you just use something like document.querySelector('ion-view[nav-view=active] .map');

@lprichar - I can't quite remember what the issue was... it's been awhile. I think the .children and .find were the important bits, and the fact that I had more than one map element because of some cached views. I'm guessing the targetting could also be done with angular's jquery lite or perhaps vanilla javascript.

Just dropping by to report that I had this exact issue. I needed to set the scrollTop property of an element, and I couldn't select it -- even with @lprichar 's code (there were somehow multiple active nav views). I bypassed my issue by making a little directive to directly set the element's attribute through Angular:
angular.module('eps.states').directive('scrollTop', function(){
  return {
    restrict: "A",
    scope: {
      scrollTop: "="
    },
    link: function($scope, $element){
      $scope.$watch('scrollTop', function(newVal, oldVal){
        if( newVal === oldVal ) return;
        $element[0].scrollTop = newVal;
      })
    }
  }
});

Then on the element...
<div scroll-top="myScroll"> ... </div>
...and the controller code:
$scope.myScroll = 50;
Hope this helps whomever has this problem!


Focusing a textfield inside a PortalEntry located inside a ListView should not make the listview scroll

ListView(
  children:  [
    PortalEntry(
      portal: TextField(),
    )
  ]
)

@rrousselGit like you said earlier, I'm pretty confident this bug is the same as #21. The code that triggers scrolling is deep inside EditableText right here:
https://github.com/flutter/flutter/blob/24c62662309b403c422a0a67a110b1534a2c9fb5/packages/flutter/lib/src/widgets/editable_text.dart#L2327
And this is called throughout EditableText.
The exact line that runs the scroll behavior is here (confirmed that commenting this line out stops the auto-scrolling):
https://github.com/flutter/flutter/blob/24c62662309b403c422a0a67a110b1534a2c9fb5/packages/flutter/lib/src/widgets/editable_text.dart#L2159-L2163
And this logic scrolls to the blinking cursor if it's not visible on the screen. I haven't confirmed 100% but I'm pretty sure that this logic thinks the cursor is somewhere else due to the same portal bug in #21 where it thinks the clicks are somewhere else.

I am not sure about the relation with #21, as clicks are working properly

Ah good point. It seems like the code in EditableText is saying "if the cursor is not in view, scroll to the cursor" so the expected behavior would be "do nothing" because the cursor is already in view.


How to create a form group ?

I'm submitting a ...  (check one with "x")
[ ] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[x ] support request

I am sending the following data to the form, but I want to intervene in the group of the form.
In this way, all the elements are automatically placed according to the given class.
How can I create form elements in a group for placement as below ? I want to group the form

row =  col-md-4 ; col-md-4
row = col-md-3  ; col -md-4

just use className see the following example: https://formly-js.github.io/ngx-formly/examples/bootstrap-specific/advanced-layout


Create FoundationInternals, an internal module to host shared files used by FoundationInternationalization and FoundationEssentials

Move LockedState to FoundationInternals and publicize functions needed by other modules.
Modules will access FoundationInternals types with @_implementationOnly import FoundationInternals.
Note that tests with @testable import FoundationEssentials/FoundationInternationalization will need to import FoundationInternals explicitly if the test requires FoundationInternals types.

@swift-ci please test

@swift-ci test

Also if you rebase the Linux tests should now pass.

@swift-ci please test

@swift-ci please test

/Users/ec2-user/jenkins/workspace/pr-swift-foundation-macos/branch-main/swift-foundation/Sources/FoundationEssentials/JSON/JSONEncoder.swift:23:1: error: expected expression
@_objcRuntimeName(_TtC10Foundation13__JSONEncoder)
^
[220/562] Compiling FoundationEssentials StringProtocol+Stub.swift
/Users/ec2-user/jenkins/workspace/pr-swift-foundation-macos/branch-main/swift-foundation/Sources/FoundationEssentials/JSON/JSONEncoder.swift:23:1: error: expected expression
@_objcRuntimeName(_TtC10Foundation13__JSONEncoder)

What's this Linux failure about? We haven't touched that right?

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test


Document better how to trigger workflows manually

I needed a way to bypass the webapp and upload my assets directly to S3. After digging a little bit, I managed to do it with help of getAccessToken.py and DEVELOPER_QUICK_START.md#step-6-test-your-operator.
The trickiest part was to figure out all the options to configure the workflow. After checking the logs, I got this structure which can be a nice addition to the documentation:
{
    "Name": "MieCompleteWorkflow",
    "Input": {
        "Media": {
            "Video": {
                "S3Bucket": "'$UPLOAD_BUCKET'",
                "S3Key": "'$S3_KEY'"
            }
        }
    },
    "Configuration": {
        "defaultTextSynthesisStage": {
            "Polly": {
                "Enabled": false
            }
        },
        "defaultAudioStage": {
            "Transcribe": {
                "Enabled": true,
                "TranscribeLanguage": "pt-BR"
            }
        },
        "defaultTextStage": {
            "Translate": {
                "Enabled": false,
                "SourceLanguageCode": "pt",
                "TargetLanguageCode": "en"
            },
            "ComprehendEntities": {
                "Enabled": true
            },
            "ComprehendKeyPhrases": {
                "Enabled": true
            }
        },
        "defaultVideoStage": {
            "faceDetection": {
                "Enabled": true
            },
            "celebrityRecognition": {
                "Enabled": true
            },
            "GenericDataLookup": {
                "Enabled": false
            },
            "labelDetection": {
                "Enabled": true
            },
            "personTracking": {
                "Enabled": false
            },
            "Mediaconvert": {
                "Enabled": true
            },
            "contentModeration": {
                "Enabled": false
            },
            "faceSearch": {
                "Enabled": false
            }
        }
    }
}

Of course you may need to get rid of all those whitespaces, as when using curl:
curl -k -X POST -H "Authorization: $MIE_ACCESS_TOKEN" \
                -H "Content-Type: application/json" \
                --data '{"Name":"MieCompleteWorkflow","Input":{"Media":{"Video":{"S3Bucket":"'$UPLOAD_BUCKET'","S3Key":"'$S3_KEY'"}}},"Configuration":{"defaultTextSynthesisStage":{"Polly":{"Enabled":false}},"defaultAudioStage":{"Transcribe":{"Enabled":true,"TranscribeLanguage":"pt-BR"}},"defaultTextStage":{"Translate":{"Enabled":false,"SourceLanguageCode":"pt","TargetLanguageCode":"en"},"ComprehendEntities":{"Enabled":true},"ComprehendKeyPhrases":{"Enabled":true}},"defaultVideoStage":{"faceDetection":{"Enabled":true},"celebrityRecognition":{"Enabled":true},"GenericDataLookup":{"Enabled":false},"labelDetection":{"Enabled":true},"personTracking":{"Enabled":false},"Mediaconvert":{"Enabled":true},"contentModeration":{"Enabled":false},"faceSearch":{"Enabled":false}}}}' \
                $WORKFLOW_API_ENDPOINT/workflow/execution

Hi tuliocasagrande,
I'm glad you worked out the input for the POST /workflow/execution API call for the MieCompleteWorkflow.
Automatically documenting APIs is a painpoint for us right now.  We are using AWS Chalice to generate our APIs and it doesn't have support for Models and Documentation as part of the API defintions.  As a stopgap, we have been using the docstrings in the API code source/dataplaneapi/app.py and source/workflowapi/app.py to manually (with a script) generate API docs using Sphinx.
To address this there are a few related issues and ideas of what we could do:

Move APIs to straight CloudFormation and OpenAPI so we can include models and docstrings.  This would allow us to generate documentation from the code using a package like ReDoc.
Add documentations information to the POST /operation API.  The COnfiguration block for each worklfow is generated using the configuration blocks from the operators and stages in the workflow.  If we include operator documentation such as description, inputs, outputs when we create a new operator, we can get the documentation for specific workflows via API calls.  This is #45

Alex

One other thing that is available now that will help if you are building new workflows:
GET /workflow/configuration/
This API returns the default configuration block for any workflow.  Once you have this, you can modify it to set custom runtime operaiton.

Here are some instructions for executing workflows manually:
https://github.com/aws-solutions/aws-media-insights-engine/blob/development/IMPLEMENTATION_GUIDE.md#step-6-test-your-new-workflow-and-operator


Off Canvas like jQuery mmenu

I had always used the the jQuery.mmenu for off-canvas purposes. But I would like to move completely to foundation if possible. How crazy is it to make the off canvas plugin behave more like the mmenu? Like adding options to slide on the canvas as well and having a good integration of a drilldown menu?
Here you can see the mmenu: http://mmenu.frebsite.nl/
:+1:  :-1:  ?

Which features specifically are you looking for?

The off-canvas menu container is an empty box. The existing drilldown menu, accordion menu integrate nicely in the off canvas. If there is another feature you're missing, let us know in a new issue!


Transforms and bbox

This SVG doc:
<svg width="102" height="124" viewBox="0 0 102 124" fill="none" xmlns="http://www.w3.org/2000/svg">
   <rect width="124" height="102" transform="translate(102) rotate(90)" fill="#7B61FF"/>
</svg>

...and this code:
use usvg::NodeExt;

fn main() {
    let tree = usvg::Tree::from_str(
        include_str!("../simplified.svg"),
        &usvg::Options { ..Default::default() }.to_ref(),
    )
    .unwrap();

    let bbox = tree.root().calculate_bbox().unwrap();
    println!(
        "bbox: {}x{}+{}+{}",
        bbox.width(),
        bbox.height(),
        bbox.x(),
        bbox.y()
    );
}

reports a bbox of 124x102+0+0. Since the rect is rotated by 90 degrees, I'd expect a bbox of 102x124+0+0. resvg renders the document honoring the transform (and only sets pixels within 102x124).
Am I misunderstanding bbox? I really want to know the bounds of the pixels that will be painted by a given document, and I know bbox doesn't consider filter bounds (like drop shadows), so I think I need to write an alternative implementation of bbox anyway, so I am really asking if this is a bug that you'd like a fix for, or if this is expected behavior and any "paint bounds" implementation I make should either exist outside of usvg or be a new method.

This change gives me the bbox result I am expecting;
diff --git a/usvg/src/lib.rs b/usvg/src/lib.rs
index 739535f..7042e13 100644
--- a/usvg/src/lib.rs
+++ b/usvg/src/lib.rs
@@ -794,7 +794,9 @@ fn calc_node_bbox(
             let mut bbox = PathBbox::new_bbox();

             for child in node.children() {
-                if let Some(c_bbox) = calc_node_bbox(&child, ts) {
+                let mut child_transform = ts.clone();
+                child_transform.append(&child.transform());
+                if let Some(c_bbox) = calc_node_bbox(&child, child_transform) {
                     bbox = bbox.expand(c_bbox);
                 }
             }

Looks like a bug to me. This method is not used by the renderer, it's just a utility.
Fill free to send a patch.


Initial geoarrow.shapely implementation

Change list

Add pyarrow extension types for each geometry type

The pyarrow type definitions support both interleaved and separated coords, and XY, XYZ, XYM, XYZM dimensions.

Add pyarrow extension arrays for each geometry type. These have a to_shapely method to convert back to a shapely array.
Add pyarrow extension scalars for each geometry type. Designed to support PointArray()[i].as_py() to get a shapely object.
Add some cursory tests for shapely -> geoarrow -> shapely

This is loosely based on @jorisvandenbossche 's python-geoarrow (ref https://github.com/jorisvandenbossche/python-geoarrow/issues/2), but updated to use shapely instead of pygeos and updated to have a separate extension array for each geometry type.
Questions:

Thoughts on the package name? This mixes some core pyarrow extension array classes with the shapely IO. In the future we might want to have the core pyarrow arrays without a GEOS dependency via shapely, but we can probably punt that decision for later?

TODO:

[ ] CRS support (probably storing in Python as a pyproj CRS object and (de)serializing through arrow when needed
[ ] Handle struct coordinates when converting from pyarrow to shapely
[ ] Handle offsets correctly for scalars after the first index

I am still exploring all the work you and Dewey have been doing, but so there are also pyarrow extension type and array definitions in the geoarrow-pyarrow package. So that's something to discuss how we see that interact or work together? I assume we want to keep a version of the pyarrow extension types that doesn't require shapely as a dependency? But at the same time we can't really extend those classes from another namespace package like geoarrow-shapely. This could also live in geoarrow-pyarrow with an optional dependency on shapely? Or would there be a use case of having the geoarrow<->shapely conversions without a pyarrow dependency?

so there are also pyarrow extension type and array definitions in the geoarrow-pyarrow package

yeah I didn't know those existed when I wrote these 🙈

I assume we want to keep a version of the pyarrow extension types that doesn't require shapely as a dependency? But at the same time we can't really extend those classes from another namespace package like geoarrow-shapely.

This might be a case like in Shapely's API design, where you might like to put methods directly on the array class, but in shapely's case, that's a numpy array, and you can't add methods here. And so likewise even if I'd like an API design that's PointArray.to_shapely(), maybe that's too difficult to square with our namespacing.

Those to_shapely methods could also live in geoarrow-pyarrow with an optional dependency on shapely? Or would there be a use case of having the geoarrow<->shapely conversions without a pyarrow dependency?

I think my questions are:

(more for @jorisvandenbossche because Dewey and I chatted a little about this already) is there a usefulness in having pyarrow extension types and arrays that aren't intricately linked to the C parsing. The existing extension arrays in geoarrow-python are very closely linked to geoarrow-c

What kind of API design makes sense to make clear that the C and Rust bindings are largely equal citizens in terms of how they can handle the geometry arrays. Like we could have

geoarrow.core which is pure-python pyarrow-extension types
geoarrow.shapely which is pure-python interop to shapely
geoarrow.c which are the C bindings to use the geoarrow.core classes
geoarrow.rs as the Rust bindings to use the same geoarrow.core classes

The .c and .rs names do leak some implementation details. 🤷♂
I would also love for the API to be designed with good static typing support, but I understand if that's not a priority for you.


Document project with Dokka/KDocs

Now that this is in a monorepo, it is a good opportunity to document everything from the code and how to use it.  Being a Kotlin project, Dokka is the obvious choice.
https://github.com/Kotlin/dokka
https://kotlin.github.io/dokka/1.5.30/

Proof of concept at https://stevenzeck.github.io/kotlin-toolkit/ based on https://github.com/stevenzeck/kotlin-toolkit/tree/gh-pages.  This is a bare minimum HTML implementation with no customization.  I've seen quite a few projects using mkdocs as opposed to HTML, including Dokka itself.

Yes that would definitely be valuable. Ideally it's something that could be generated automatically from a GitHub Actions workflow when something is merged on develop.

A different proof of concept is available at the same URL:  https://stevenzeck.github.io/kotlin-toolkit/.  This one uses both Dokka and MkDocs.  I prefer Dokka's HTML layout of API docs over MkDocs generated HTML from Dokka Markdown, but I think this gives us much more flexibility and ease of use.
There are plenty of oddities I haven't figured out such as random ~ characters all over, several broken links (though these were present on Dokka HTML too).  The GitHub workflow is also not 100% correct, as I have to delete the gh-pages branch manually when I want to deploy it fresh because of this error:  https://github.com/stevenzeck/kotlin-toolkit/runs/3773391231?check_suite_focus=true.  I'm sure there are plenty of other things that can be done to optimize it, like only update documentation when it has actually changed.
If you want to try it yourself locally (this is on a Mac)...
Dokka HTML

Checkout the dokka branch
Run the dokkaHtmlMultiModule gradle task
When it completes, look in the root docs folder for an index.html file.

Note that the search and side navigation don't work locally, they require a server.  Push to a branch and use GitHub Pages if you want to try that out.
Dokka Markdown/MkDocs

Install MkDocs (pip install mkdocs or python3 -m pip install mkdocs)
Install MkDocs material (python3 -m pip install mkdocs-material)
Checkout the dokka branch
If necessary, delete anything in the docs folder that was previously auto-generated
Run the dokkaGfmMultiModule gradle task
Run python3 -m mkdocs serve

It will take a minute or two, but eventually it will give you the local URL to view it.  I also have a cleanDocs gradle task that deletes the auto-generated readium folder and index.md files to re-run the process.  You'll also want lsof -ti tcp:8000 -sTCP:LISTEN | xargs kill so it can reuse the address.


New peertube servers deploy

Added 5 new video servers

peertube22.pocketnet.app
peertube23.pocketnet.app
peertube24.pocketnet.app
peertube25.pocketnet.app
peertube26.pocketnet.app

Switched off

peertube19mirror.pocketnet.app

@andyoknen, can you check that the Peertube servers are reachable by provided IP's and are correctly configured? Do we need mirrors for the btw?


Adding Hifo

I didn't have a chance to do a proper code review yet, but I did some initial black box testing: see attached test_hifo.ods. The test_hifo.ods file uses the standard test format of other RP2 tests: it has 4 sheets (B1, B2, B3, B4) and can be easily integrated with the existing unit tests. The B1 sheet contains your original test and I added new tests in B2 and B3 (B4 is a placeholder for a future test if we need it). The good news is that I couldn't break your HIFO plugin with my tests, so it's looking good!
To integrate test_hifo.ods with the RP2 automated unit test framework (so that it doesn't regress) do the following:

run rp2 with test_hifo.ods:
rp2_us -m hifo -p test_hifo_ config/test_data.config input/test_hifo.ods
copy the hifo golden files:
cp output/test_hifo_*.ods input/golden
apply this diff to tests/test_ods_output_diff.py

diff --git a/tests/test_ods_output_diff.py b/tests/test_ods_output_diff.py
index 59351cd..0b3e7df 100644
--- a/tests/test_ods_output_diff.py
+++ b/tests/test_ods_output_diff.py
@@ -64,6 +64,8 @@ class TestODSOutputDiff(AbstractTestODSOutputDiff):  # pylint: disable=too-many-
         AbstractTestODSOutputDiff._generate(
             cls.output_dir, test_name="test_many_year_data", config="test_data", method="fifo", from_date=date(2019, 1, 1), to_date=date(2019, 12, 31)
         )
+        AbstractTestODSOutputDiff._generate(cls.output_dir, test_name="test_hifo", config="test_data", method="hifo")
+

     def setUp(self) -> None:
         self.maxDiff = None  # pylint: disable=invalid-name
@@ -100,6 +102,12 @@ class TestODSOutputDiff(AbstractTestODSOutputDiff):  # pylint: disable=too-many-
         for method in self.METHODS:
             self._compare(output_dir=self.output_dir, test_name="test_data3", method=method, output_plugin=OutputPlugins.TAX_REPORT_US)

+    def test_test_hifo_rp2_full_report(self) -> None:
+        self._compare(output_dir=self.output_dir, test_name="test_hifo", method="hifo", output_plugin=OutputPlugins.RP2_FULL_REPORT)
+
+    def test_test_hifo_tax_report_us(self) -> None:
+        self._compare(output_dir=self.output_dir, test_name="test_hifo", method="hifo", output_plugin=OutputPlugins.TAX_REPORT_US)
+
     def test_test_many_year_data_rp2_full_report(self) -> None:
         for method in self.METHODS:
             self._compare(output_dir=self.output_dir, test_name="test_many_year_data", method=method, output_plugin=OutputPlugins.RP2_FULL_REPORT)

remove hifo_crypto_example.ods (which is now included in test_hifo.ods anyway)

One more thing can you update this tree to the latest rp2 version? I have some local (unpublished) tests that make use of the latest rp2 features and I'd like to try them with hifo (right now they don't work because the code doesn't have the latest changes). Thanks!

One more thing: can you add reference to HIFO in README.md, docs/user_faq.md and setup.cfg? Just look for LIFO in there and update as necessary.

I found a bug in the hifo plugin and was able to reduce the input to a 2-line spreadsheet. Here's the error:
ERROR: Fatal exception occurred:
Traceback (most recent call last):
  File "/Users/marcoz/prj/rp2/src/rp2/rp2_main.py", line 100, in _rp2_main_internal
    computed_data: ComputedData = compute_tax(configuration=configuration, accounting_method=accounting_method, input_data=input_data)
  File "/Users/marcoz/prj/rp2/src/rp2/tax_engine.py", line 44, in compute_tax
    unfiltered_gain_loss_set: GainLossSet = _create_unfiltered_gain_and_loss_set(configuration, accounting_method, input_data, unfiltered_taxable_event_set)
  File "/Users/marcoz/prj/rp2/src/rp2/tax_engine.py", line 163, in _create_unfiltered_gain_and_loss_set
    raise RP2ValueError("Total in-transaction crypto value < total taxable crypto value") from None
rp2.rp2_error.RP2ValueError: Total in-transaction crypto value < total taxable crypto value

Here's the input file: hifo_bug_1.ods
And here's how to repro:
rp2_us -m hifo config/test_large_input.config hifo_bug_1.ods

I found a bug in the hifo plugin and was able to reduce the input to a 2-line spreadsheet. Here's the error:
ERROR: Fatal exception occurred:
Traceback (most recent call last):
  File "rp2/src/rp2/rp2_main.py", line 100, in _rp2_main_internal
    computed_data: ComputedData = compute_tax(configuration=configuration, accounting_method=accounting_method, input_data=input_data)
  File "rp2/src/rp2/tax_engine.py", line 44, in compute_tax
    unfiltered_gain_loss_set: GainLossSet = _create_unfiltered_gain_and_loss_set(configuration, accounting_method, input_data, unfiltered_taxable_event_set)
  File "rp2/src/rp2/tax_engine.py", line 163, in _create_unfiltered_gain_and_loss_set
    raise RP2ValueError("Total in-transaction crypto value < total taxable crypto value") from None
rp2.rp2_error.RP2ValueError: Total in-transaction crypto value < total taxable crypto value

Here's the input file: hifo_bug_1.ods
And here's how to repro:
rp2_us -m hifo config/test_large_input.config hifo_bug_1.ods

Thanks for your nits and comments ! I think that I resolve this bug by replace less by less than equal in the timestamp condition to find the acquired lot.

Thanks for your nits and comments ! I think that I resolve this bug by replace less by less than equal in the timestamp condition to find the acquired lot.

Nice work! That fix looks good and does solve the specific problem in hifo_bug_1.ods. I have some more ideas for testing: I'll report here what I find. Feel free to also stress test the plugin as much as you can: let's try to break it in order to make it more robust. Accounting methods are a central and critical component of RP2, so they require special care before we can merge. Thanks for the good work!

Thank you for your words. I'll try my best to break the plugin.

BTW, let's incorporate the repro into the testing suite, to make sure it doesn't regress: can you copy the spreadsheet from hifo_bug_1.ods to input/test_hifo.ods (specifically to sheet B4, which is a placeholder for a new test)?

Strange: if I undo your fix (remove the = from <=) and run the new version of test_hifo.ods you just added I don't see the bug... Can you check on your machine?

Strange: if I undo your fix (remove the = from <=) and run the new version of test_hifo.ods you just added I don't see the bug... Can you check on your machine?

Scratch that... it was my mistake: I was still running the old test_hifo.ods by mistake :-/

I found another bug and was able to reduce the input to a 3-line spreadsheet. Here's the error:
ERROR: Fatal exception occurred:
Traceback (most recent call last):
  File "rp2/src/rp2/rp2_main.py", line 100, in _rp2_main_internal
    computed_data: ComputedData = compute_tax(configuration=configuration, accounting_method=accounting_method, input_data=input_data)
  File "rp2/src/rp2/tax_engine.py", line 44, in compute_tax
    unfiltered_gain_loss_set: GainLossSet = _create_unfiltered_gain_and_loss_set(configuration, accounting_method, input_data, unfiltered_taxable_event_set)
  File "rp2/src/rp2/tax_engine.py", line 155, in _create_unfiltered_gain_and_loss_set
    raise RP2ValueError("Total in-transaction crypto value < total taxable crypto value") from None
rp2.rp2_error.RP2ValueError: Total in-transaction crypto value < total taxable crypto value

Here's the input file: hifo_bug_2.ods
And here's how to repro:
rp2_us -m hifo config/test_large_input.config hifo_bug_2.ods

Hi, I found a way to fix the bug but i don't know if it's the best way. I changed the way the internal_id for set in the avl tree. To incorporate this new test, do I have to create a new asset or I try to incorporate the new test in B4 ?

Hi, I found a way to fix the bug but i don't know if it's the best way. I changed the way the internal_id for set in the avl tree. To incorporate this new test, do I have to create a new asset or I try to incorporate the new test in B4 ?

Great! I'll take a look in the weekend. Every test shares the same config file, which allows for 4 assets / sheets (B1 to B4), so you can add a test_hifo2.ods and assing the second repro to B1 (and just leave B2 to B4 as one-line placehoders for future tests).

I made a few changes:

fixed the last bug, discussed here: https://github.com/eprbell/rp2/pull/41/#pullrequestreview-996041175),
optimized seek_acquired_lot() so that no slicing/copying/reverting of the list is necessary anymore,
made all tests run with HIFO (not just test_hifo* ones),
various small improvements.

Let's keep trying to break this and fixing the bugs we find. I think this PR is looking quite promising at this point.

@ninideol, I don't have any more ideas for new ways of testing this plugin (here's the last one I tried): do you have any more thoughts? If not I think it's OK to go ahead and merge.


Add link to our FB page in app

Now that we have a somewhat active Facebook page , it might be a good idea to add it to the app in a non-intrusive way so that users can follow for updates if they want to (also good for fostering a community around the app). The absolute most non-intrusive way would be to add it to the About activity, though that would be a bit obscure. If we can figure out a nice layout, adding it to the nav drawer instead (via the 'f' icon) could be an idea - though I am always open to opposition. ;)
This could be made a beginner-friendly task once we decide what exactly we want to do.

My vote goes to the About page :-) I think that's the right place for it, and people who would be interested in the content of the Facebook page are the same people who are likely to check the About dialog.

About page sounds good to me. It may be a good idea to organize it a little bit perhaps, have little icons for "GitHub", "Facebook", "Google groups forum" etc instead of just a lot of text links?


Support allowing traffic in on an entire interface

Specifying interface: parameter works like the app parameter now, and calls "allow in on {interface}"

Opened another request on a branch so that I can continue making other changes on master.


Signal profiler & proto changes

This PR adds a series of changes:

It adds ckb-vm-signal-profiler to the monorepo.
Since signal profiler and pprof converter both uses pprof proto file, a single crate is added to handle proto compilation.
Vendored protoc is now only used on Linux. We will rely on homebrew to provide protoc on macOS, since vendored protoc does not provide binary for Apple Silicon.

Failed to run cargo run --example simple with outputs:
error[E0061]: this function takes 1 argument but 2 arguments were supplied
   --> ckb-vm-signal-profiler/examples/simple.rs:61:32
    |
61  |     let mut machine = Box::pin(AsmMachine::new(core, None));
    |                                ^^^^^^^^^^^^^^^       ---- argument of type `Option<_>` unexpected
    |
note: associated function defined here
   --> /home/ubuntu/.cargo/registry/src/github.com-1ecc6299db9ec823/ckb-vm-0.22.2/src/machine/asm/mod.rs:430:12
    |
430 |     pub fn new(machine: DefaultMachine<'a, Box<AsmCoreMachine>>) -> Self {
    |            ^^^
help: remove the extra argument
    |
61  |     let mut machine = Box::pin(AsmMachine::new(core));
    |                                               ~~~~~~

For more information about this error, try `rustc --explain E0061`.
error: could not compile `ckb-vm-signal-profiler` due to previous error

Failed to run cargo run --example simple with outputs:
error[E0061]: this function takes 1 argument but 2 arguments were supplied
   --> ckb-vm-signal-profiler/examples/simple.rs:61:32
    |
61  |     let mut machine = Box::pin(AsmMachine::new(core, None));
    |                                ^^^^^^^^^^^^^^^       ---- argument of type `Option<_>` unexpected
    |
note: associated function defined here
   --> /home/ubuntu/.cargo/registry/src/github.com-1ecc6299db9ec823/ckb-vm-0.22.2/src/machine/asm/mod.rs:430:12
    |
430 |     pub fn new(machine: DefaultMachine<'a, Box<AsmCoreMachine>>) -> Self {
    |            ^^^
help: remove the extra argument
    |
61  |     let mut machine = Box::pin(AsmMachine::new(core));
    |                                               ~~~~~~

For more information about this error, try `rustc --explain E0061`.
error: could not compile `ckb-vm-signal-profiler` due to previous error

Already fixed.


DC was not imported successfully

Issue just started where the WSLabs Deploy script no longer works correctly. Any time Deploy.ps1 is ran the following error occurs and is logged . I tried a completely fresh setup us WSLabs and get the same results on multiple systems.
Directory: C:\NewLabs\scripts\LAB

Mode                LastWriteTime         Length Name

d-----        4/17/2019   9:47 AM                VMs
Looking for Tools Parent Disks
Tools parent disk C:\NewLabs\scripts\ParentDisks\tools.vhdx found
Looking for DC to be imported
DC was not imported successfully Press any key to continue ...
Press enter to continue ...

Weird, can you naviflgate to lab\DC and check if vhdx and config files are there? 2_createparentdisks.ps1 finished without errors?

I checked both setups and the 2_createparentdisks.ps1  file ran clean with out errors. On my original system the lab\DC vhdx and config files were all there. On the reinstallation I noticed the VHDX file did not have the DC name it had the random GUID name. I deleted the files and reran the scripts which seem fine now the DC is now being deployed from the fresh setup. I'm not sure what happened to my original WSLab setup since I've been using it for about 2 weeks without issue running some testing with AD. So original setup is broken but after rerunning the script the new setup is fixed.

Looks like DC was deleted. Or createparentdisks did not create it successfully (it uses convert-windowsimage and it creates temporary vhd with guid in name). Anyway, are you happy with WSLab?

Or maybe you ran 2_createparentdisks and it wiped DC, but you canceled it so new DC was not created? I need to double check if it cleans DC files or not.

WSLabs works great for dev testing and learning. It may be possible that I ran the 2_createparentdisks since I was adding a win2019 server to the lab. Everything is work again now.

You can add 2019 vhds (if any other vhd) by running createparentdisk.ps1 from parent disks folder. Ok, ill close this issue.

@jaromirk ,
I have had the same error.
So I exchanged expand-archive with Microsoft.PowerShell.Archive\Expand-Archive
Now it works well!

Fixed, happy? :) THX for heads up!


Mook Generator does not parse resistance based attacks

E.g. a Bodak death gaze from this page:
http://gurpswiki.wikidot.com/m:bodak
Here is the attack text from that page:
Punch (14): 1d crushing. Reach C.
Death Gaze (Resisted by HT): Kills target instantly. Vision-based attack. Range 10.

Unfortunately,  it won't be possible to parse every variation on a stat block.   As of the upcoming release (v0.8.4), melee and ranged attacks are recognized if they follow 1 of 2 patterns:
Name (Skill #) damage-formula optional-attributes
Name (Skill Text) "damage text" optional-attributes
The "Punch" attack follows the first pattern, but the "Death Gaze" attack doesn't follow either.    Since it isn't recognized as an attack (but it seems to be in the attack section), it is added a comment (a line starting with #):

You can add it as a ranged attack with a little editing.   First, cut the line from the Melee section, and add it to the Ranged section, removing the leading #.    If you press TEST MOOK, it will show:

Indicating that it cannot match either pattern.   Since this attack doesn't use a Skill roll or a Damage roll, you must indicate the damage by enclosing it in quotes.    Once you make the change and press TEST MOOK again, it will show:

Indicating that "Vision-based attack." is not one of the recognized optional attributes of a ranged attack such as "range", "acc", etc. (the complete list is here),
Since "Vision-based attack." is just a comment, move that to the next line, with a preceding # to indicate that it is a comment and test again:

Which does not produce an error.   If you create the mook, and look at it using the Full Sheet, it will look like:

Unfortunately,  it won't be possible to parse every variation on a stat block.   As of the upcoming release (v0.8.4), melee and ranged attacks are recognized if they follow 1 of 2 patterns:
Name (Skill #) damage-formula optional-attributes
Name (Skill Text) "damage text" optional-attributes
The "Punch" attack follows the first pattern, but the "Death Gaze" attack doesn't follow either.    Since it isn't recognized as an attack (but it seems to be in the attack section), it is added a comment (a line starting with #):

You can add it as a ranged attack with a little editing.   First, cut the line from the Melee section, and add it to the Ranged section, removing the leading #.    If you press TEST MOOK, it will show:

Indicating that it cannot match either pattern.   Since this attack doesn't use a Skill roll or a Damage roll, you must indicate the damage by enclosing it in quotes.    Once you make the change and press TEST MOOK again, it will show:

Indicating that "Vision-based attack." is not one of the recognized optional attributes of a ranged attack such as "range", "acc", etc. (the complete list is here),
Since "Vision-based attack." is just a comment, move that to the next line, with a preceding # to indicate that it is a comment and test again:

Which does not produce an error.   If you create the mook, and look at it using the Full Sheet, it will look like:


Encrypting and signing

Hi, when using something like Kleopatra, when you encrypt a piece of text, you can encrypt it for multiple people and sign it, is there any way of signing the encrypted data?
        let rsa_key = RsaPublicKey::from_public_key_pem(pub_key)?;
        let padding = Oaep::new::<sha2::Sha256>();
        let encrypted_data = rsa_key.encrypt(OsRng.borrow_mut(), padding, data)?;

This is the current code I have, the thing is that it does not require any kind of private key, and I would like to provide it with a private key to sign the encrypted data, so the user knows the data source is actually legitimate

I think you're looking for #231


Spot logging

Add support for logs collection from spot instances.

The test failure is due to https://github.com/banzaicloud/logging-operator/issues/1077
I'll send a PR upstream to fix it.

ugh, we should have got the artifacthub annotations in here :cry:

oh no! sorry Toby, maybe we need a CI check for that?


Output enthalpy values not matching expected values

I'm running your example script for C1CO1 but for other simple hydrocarbons such as methanol and propane and comparing the numbers outputted from the script and those published in Benson's Thermochemical Kinetics. There seems to be a large disparity between the two as for methanol the outputted value is -80.65 kcal/mol whereas the published value is -48 kcal/mol. Can you please provide either a reason or a fix if possible?

Fixed by using get_H() and specifying units of kcal/mol instead of using get_HoRT.

Sorry I missed your earlier issue post...Getting ready for AIChE in Orlando! You are correct if you use the method get_HoRT (Literally means H over RT) then you get a dimensionless enthalpy. The method get_H with units specified will give you enthalpy in the chosen units. The same is true of each thermodynamic quantity. If you use the dimensionless method you can also use the pMuTT constants function to convert to desired units. This can be useful if your calculation requires dimensionless but you would like to plot/print with dimensions.
import pmutt.constants as c HoRT = <object>.get_HoRT(298.15) H = HoRT * c.R('kcal/mol/K') * 298.15 print(H, ' [kcal/mol]')


eccodes: 2.8.0 -> 2.8.2

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/eccodes/versions.
meta.description for eccodes is: '"ECMWF library for reading and writing GRIB, BUFR and GTS abbreviated header"'.

Checks done (click to expand)

built on NixOS
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_compare_dir had a zero exit code or showed the expected version
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/codes_info passed the binary check.
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/codes_count had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/codes_split_file had a zero exit code or showed the expected version
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_histogram passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_filter passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_ls passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_dump passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_merge passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib2ppm passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_set passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_get passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_get_data passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_copy passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_compare passed the binary check.
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/codes_parser had a zero exit code or showed the expected version
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_index_build passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_ls passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_dump passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_set passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_get passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_copy passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_compare passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_index_build passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/gts_get passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/gts_compare passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/gts_copy passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/gts_dump passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/gts_filter passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/gts_ls passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/metar_dump passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/metar_ls passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/metar_compare passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/metar_get passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/metar_filter passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/metar_copy passed the binary check.
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_count had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_count had a zero exit code or showed the expected version
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/grib_to_netcdf passed the binary check.
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/codes_bufr_filter passed the binary check.
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/tigge_check had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/tigge_name had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/tigge_accumulations had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/tigge_split had a zero exit code or showed the expected version
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_filter passed the binary check.
35 of 45 passed binary check by having a zero exit code.
33 of 45 passed binary check by having the new version present in output.
found 2.8.2 with grep in /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2
directory tree listing: https://gist.github.com/0688b7b069f129c64bcd00c51a8c9384
du listing: https://gist.github.com/b88b028ae51e3a1c0c8c7249eb707995

Test this build with Cachix (click to expand)

One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout 5e081cc5e247464687d2308874e413f8f52bac9f && nix-shell --pure -I nixpkgs=. -p eccodes

cc @knedlsepp for testing.

Success on x86_64-linux (full log)
Attempted: eccodes
Partial log (click to expand)
shrinking /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/metar_compare
shrinking /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/gts_get
shrinking /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/codes_parser
shrinking /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_index_build
strip is /nix/store/gpc2wld1s0c6qzx9326cwn1wcx29xzsj-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/lib  /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin
patching script interpreter paths in /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2/bin/bufr_filter: interpreter directive changed from "/bin/sh" to "/nix/store/56nrxy58wbhvs2sy3rir1jqa68p0kkm5-bash-4.4-p23/bin/sh"
checking for references to /build in /nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2...
/nix/store/n5sy08jswvkgyva47qag1glrkmz04kjw-eccodes-2.8.2


Fixing the provided flag usage in the read me

The provided flag should be added as the scope:
<scope>provided</scope>

Merged into master.
Thank you very much for the pull request! Keep them coming! :-)


There is no cockpit API

Description
The cockpit API page hasn't any APIs to be tested even If when I load it.
https://cockpit-demo-3.aydo2.com/api/apidocs/index.html?raml=api.raml

File is there : https://cockpit-demo-3.aydo2.com/api/apidocs/api.raml
But it seems it contains some error. Probably someone did some changes in the file that are non valid.

https://github.com/Jumpscale/jscockpit/blob/master/jscockpit/ays_api/specifications/api.raml#L588
This line reference AYSFile wich is defined no where. this is what cause the error in the api-console


set_global_routing_region_adjustment command does not react to -adjustment change

Describe the bug
We are running an experiment to see the impact of reducing resources in congested areas instead of doing a global resource reduction. For this, We are using the set_global_routing_region_adjustment command.
Our target is to find congested areas and the appropriate layer adjustment value to achieve the most DRC reduction.
We have noticed that changing the -adjustment input does not alter the global route solution. Could you please check this?
As a quick example, we ran the test script and found that changing the adjustment value from 0.9 to 0.2 does not make any change in the global route result.
Could you please look into this and fix this problem? Alternatively, please let us know if we are doing something wrong.
Thanks,
Sayak
Expected Behavior
When we change the -adjustment value, we expect the global route result to change.
Environment
[WARNING] Your current OpenROAD version is outdated.
It is recommened to pull the latest changes.
If problem persists, file a github issue with the re-producible test case.
kernel: Linux 4.18.0-552.1.1.el8.x86_64
os: CentOS Stream 8
cmake version 3.25.1
-- The CXX compiler identification is GNU 9.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/tool/gcc/gcc-9.3.0/bin/x86_64-pc-linux-gnu-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: v2.0-13772-ga515fc6
-- System name: Linux
-- Compiler: GNU 9.3.0
-- Build type: RELEASE
-- Install prefix: /usr/local
-- C++ Standard: 17
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- The C compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/tool/gcc/gcc-9.3.0/bin/x86_64-pc-linux-gnu-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Python: /home/tool/python/install/3.8.19/bin/python3.8 (found version "3.8.19") found components: Interpreter
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Performing Test C_COMPILER_SUPPORTS__-Wall
-- Performing Test C_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Failed
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test C_COMPILER_SUPPORTS__-x
-- Performing Test C_COMPILER_SUPPORTS__-x - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-x
-- Performing Test CXX_COMPILER_SUPPORTS__-x - Failed
-- Performing Test C_COMPILER_SUPPORTS__c++
-- Performing Test C_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__c++
-- Performing Test CXX_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17 - Success
-- TCL library: /home/tool/tcl/tcl8.6.6/lib/libtcl.so
-- TCL header: /home/tool/tcl/tcl8.6.6/include/tcl.h
-- Found SWIG: /home/tool/swig/install/4.0.0/bin/swig (found suitable version "4.0.0", minimum required is "4.0")
-- Found Boost: /home/tool/boost/boost_1_81_0/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found version "1.81.0")
-- boost: 1.81.0
-- Found Python3: /home/tool/python/install/3.8.19/include/python3.8 (found version "3.8.19") found components: Development Development.Module Development.Embed
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11")
-- spdlog: 1.8.1
-- Found BISON: /home/tool/bison/install/3.8.2/bin/bison (found version "3.8.2")
-- Found Doxygen: /home/tool/doxygen/install/1.8.15/bin/doxygen (found version "1.8.15") found components: doxygen dot
-- STA version: 2.5.0
-- STA git sha: ee8d3d0fa23bfbc69f3e936ff884c3d30f5bfb59
-- System name: Linux
-- Compiler: GNU 9.3.0
-- Build type: RELEASE
-- Build CXX_FLAGS: -O3 -DNDEBUG
-- Install prefix: /usr/local
-- Found FLEX: /home/tool/flex/2.6.4/bin/flex (found version "2.6.4")
-- TCL library: /home/tool/tcl/tcl8.6.6/lib/libtcl.so
-- TCL header: /home/tool/tcl/tcl8.6.6/include/tcl.h
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- SSTA: 0
-- Found SWIG: /home/tool/swig/install/4.0.0/bin/swig (found suitable version "4.0.0", minimum required is "3.0")
-- STA executable: /home/memzfs_projects/buf_placement/sakudnu/orfs/20240516/OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/sta
-- Found re2: /home/tool/ortools/install/or-tools_cpp_CentOSStream-8-64bit_v9.4.1874/lib64/cmake/re2/re2Config.cmake (found version "9.0.0")
-- Found Clp: /home/tool/ortools/install/or-tools_cpp_CentOSStream-8-64bit_v9.4.1874/lib64/cmake/Clp/ClpConfig.cmake (found version "1.17.7")
-- Found Cbc: /home/tool/ortools/install/or-tools_cpp_CentOSStream-8-64bit_v9.4.1874/lib64/cmake/Cbc/CbcConfig.cmake (found version "2.10.7")
-- Found SCIP: /home/tool/ortools/install/or-tools_cpp_CentOSStream-8-64bit_v9.4.1874/lib/cmake/scip/scip-config.cmake (found version "8.0.0")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- GPU is notNumber of processor cores: 80
 enabled
-- TCL library: /home/tool/tcl/tcl8.6.6/lib/libtcl.so
-- TCL header: /home/tool/tcl/tcl8.6.6/include/tcl.h
-- GUI is enabled
-- Charts widget is not enabled
-- Found Boost: /home/tool/boost/boost_1_81_0/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found version "1.81.0") found components: serialization
-- Found VTune: /home/tool/intel/vtune_amplifier/lib64/libittnotify.a
-- Found Boost: /home/tool/boost/boost_1_81_0/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found suitable version "1.81.0", minimum required is "1.78")
-- TCL library: /home/tool/tcl/tcl8.6.6/lib/libtcl.so
-- TCL header: /home/tool/tcl/tcl8.6.6/include/tcl.h
-- Found Boost: /home/tool/boost/boost_1_81_0/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found version "1.81.0") found components: serialization system thread
-- Found Boost: /home/tool/boost/boost_1_81_0/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found version "1.81.0")
-- Found Eigen3: /home/tool/ortools/install/or-tools_cpp_CentOSStream-8-64bit_v9.4.1874/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.0")
-- TCL readline disabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/tmp.P3sHZVwAOQ

To Reproduce
Here is the link to the test script.
Relevant log output
No response
Screenshots
Derated resource values do not change with changes in -adjustment.

Additional Context
No response

Thank you!!


Fix NPE when defaultVersionStrategy is used with no stage defined + Extends Logging for default strategy

A NPE occurs if the defaultVersionStrategy is used but no stage is defined.
In my opinion, the behaviour should be: when no stage is defined, just take the defined defaultStrategy (respecting that strategy might not be valid for dirty repositories)

Thanks for fixing this!


KB shortcut for History not in the help panel

Hello,
I find in wiki the KB shortcut for object's history (ctrl + shift + H) but I can't find it in Help-KB Shortcut-Tools. So, where is it shown ?
Thx for the answer whatever it is.

It's on the "Tools" section:


Made fix for the problem of filters form vanishing. #6990

Coverage remained the same when pulling 705aed4bd20f41fe202dcaeaf015c7cbadf2d7ad on PritishC:fix/task-6690 into a7109efbf8f71e9d02d9bd0b72d0902e6f0097d6 on openlabs:develop.


Move GetPod from pod.go to taskrun.go

GetPod is only called from taskrun.go, so let's just move it to that
package and unexport it.
Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:

[y] Includes tests (if functionality changed/added)
[n/a] Includes docs (if user facing)
[y] Commit messages follow commit message best practices

See the contribution guide for more details.

/lgtm


Classfile strings

saves compiled classfiles as base64 strings in src/jvm/utils/classfiles.ts

Closed as java-packages has been merged into modules


Roll Engine from b58dbc88fce9 to f205ceda2543 (7 revisions)

https://github.com/flutter/engine/compare/b58dbc88fce9...f205ceda2543
2021-01-20<EMAIL_ADDRESS>Roll Skia from f3087d8297fe to e0fe62adaa3e (9 revisions) (flutter/engine#23781)
2021-01-20<EMAIL_ADDRESS>Implement handling of framework-handled key events (flutter/engine#23655)
2021-01-19<EMAIL_ADDRESS>block thread merging with shared engines (flutter/engine#23733)
2021-01-19<EMAIL_ADDRESS>skip flaky test (flutter/engine#23775)
2021-01-19<EMAIL_ADDRESS>Roll Skia from bde06cc511d2 to f3087d8297fe (7 revisions) (flutter/engine#23772)
2021-01-19<EMAIL_ADDRESS>[web] Add --watch flag to 'felt test' (flutter/engine#23727)
2021-01-19<EMAIL_ADDRESS>Roll Dart SDK from c4214e6daaac to 4a6764bf28c2 (4 revisions) (flutter/engine#23770)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Commit queue failed; closing this roll.

Commit queue failed; closing this roll.


Bluetooth: host: document the connection states

Connection states are non-trivial to understand based on their names only, so add short descriptions in the header file explaining what they do.
Fixes #63514 (see my explanation in https://github.com/zephyrproject-rtos/zephyr/issues/63514#issuecomment-1750448880)

Fixes https://github.com/zephyrproject-rtos/zephyr/issues/63514 (see my explanation in https://github.com/zephyrproject-rtos/zephyr/issues/63514#issuecomment-1750448880)

I disagree that this fixes that issue. This is related to conn states, and the issue is about conn roles. I do not see the the relevance of this PR to the issue it references.

Fixes #63514 (see my explanation in #63514 (comment))

I disagree that this fixes that issue. This is related to conn states, and the issue is about conn roles. I do not see the the relevance of this PR to the issue it references.

Fair enough, will remove that.


ZetaClient might panic if signer is not found in signer map

Signer is fetched in the signer map in zetacore_observer : https://github.com/zeta-chain/node/blob/d1236ba8e6660492b131e224c66c100490401c43/zetaclient/zetacore_observer.go#L184
It is not verified if existing, but still used: https://github.com/zeta-chain/node/blob/d1236ba8e6660492b131e224c66c100490401c43/zetaclient/zetacore_observer.go#L296
The panic is actually caused when the RPC is down (probably the signer entry is not created but still accessed)
We should:

Replace the indexing of the map with chainID instead of the chain object for more reliability
Verify signer existence
Give a warning if a RPC is down

The issue does not exist any more due to recent refactors.

The index of map was already unified as chainID in the Orchestrator struct
The existence of signer/observer is now checked here and here
Error is printed if failed to Dial or Ping endpoint when creating observer/signer object in here, here, here and here


conform doesn't seem to recognize any Mason installed formatter

Neovim version (nvim -v)
0.9.5
Operating system/version
Windows
Add the debug logs

[X] I have set log_level = vim.log.levels.DEBUG and pasted the log contents below.

Log file
09:02:27[DEBUG] Running formatters on C:\Users\gabri.dotfiles\nvim\lua\plugins\conform.lua: {}
09:02:27[DEBUG] No formatters found for C:\Users\gabri.dotfiles\nvim\lua\plugins\conform.lua
09:02:28[DEBUG] Running formatters on C:\Users\gabri.dotfiles\nvim\lua\plugins\conform.lua: {}
09:02:28[DEBUG] No formatters found for C:\Users\gabri.dotfiles\nvim\lua\plugins\conform.lua
Describe the bug
conform doesn't seem to be recognizing any formatter installed with mason
What is the severity of this bug?
blocking (cannot use plugin)
Steps To Reproduce
Maybe I'm missing something obvious, but conform doesn't seem to be recognizing any formatter installed with mason. Is that expected behavior? And if so, how should I be installing formatters?
My config (using lazy.nvim):
return {
    'stevearc/conform.nvim',
    config = function()
        require('conform').setup({
            lua = { "stylua" },
            typescript = { { 'prettierd', "prettier" } },
            typescriptreact = { { 'prettierd', "prettier" } },
            javascript = { { 'prettierd', "prettier" } },
            javascriptreact = { { 'prettierd', "prettier" } },
            json = { { 'prettierd', "prettier" } },
            html = { { 'prettierd', "prettier" } },
            css = { { 'prettierd', "prettier" } },
            log_level = vim.log.levels.DEBUG,
            format_on_save = {
                -- These options will be passed to conform.format()
                timeout_ms = 500,
                lsp_fallback = false,
            },
        })
    end
}

I confirmed formatters are installed with Mason

Output of :ConformInfo (in a lua file)

Your setup call doesn't seem right to me. It lacks formatters_by_ft field.
require("conform").setup({
  formatters_by_ft = {
    lua = { "stylua" },
    -- Conform will run multiple formatters sequentially
    python = { "isort", "black" },
    -- Use a sub-list to run only the first available formatter
    javascript = { { "prettierd", "prettier" } },
  },
})

Damn, brainfart, not sure how I missed that so many times in the documentation!
It works now, thanks for answering!


Improve path handling

This fixes a faulty PathBuf construction and lets all PathBufs be constructed via collecting instead of pushing.

The first commit is fine, even though a // inside a path is not really faulty :wink:
However, I don't really get the advantage of .iter().collect() in this case.

Just to prove my point, that this isn't faulty :stuck_out_tongue: :
From the POSIX standard:

Multiple successive <slash> characters are considered to be the same as one , except for the case of exactly two leading <slash> characters

It certainly is faulty! “Pushing an absolute path replaces the existing path” (PathBuf::push)
As for using collect over push, this is preferential, but this avoids having a mutable PathBuf and avoids spreading the path segments across multiple statements. “push is best used for dynamic situations. This is a better way to do this when you know all of the components ahead of time” (PathBuf)

Fair enough!
bors r+