Building the latest source doesn't make it the same.

Cloning and building from below does not change the appearance.
https://github.com/4RTools/4RTools.git
■build

■deliverables

@oasis2024 What's the bug? Please provide additional information, otherwise we'll close the issue.

Sorry, the method of reporting was incorrect.
It is not a bug, and cloning the following URL or the latest source did not result in the same condition.
Is the latest status still not reflected?
https://github.com/4RTools/4RTools/archive/refs/tags/v2.9.2.zip
OR
https://github.com/4RTools/4RTools.git


[EventHubs] prep release

API change check for azure-eventhub
API changes are not detected in this pull request for azure-eventhub

/azp run python - eventhub - ci


Cannot run tests with Jasmine Spec Runner

I am trying to run tests with Jasmine Spec Runner but opening the Spec Runner just ends up in a blank screen:

Brackets continues to work normally except it cannot be exited anymore without killing the process. Latest master (https://github.com/adobe/brackets/commit/be50533b8575b1f2602f546d01289151e9a671ea), brackets-shell shipped that shipped with 1.4. Cannot build the shell myself ATM, so I'll have to wait until 1.5. to test against that unless someone has some better ideas... Clearing out the cache folder etc. didn't help.

I am also seeing the same error.

@le717 https://github.com/adobe/brackets/pull/9622 lead to this break.
Console logs:
Failed to load resource: net::ERR_FILE_NOT_FOUND
require.js:141 Uncaught Error: Script error for: project/FileIndexManager
http://requirejs.org/docs/errors.html#scripterror
file:///C:/Users/abose/Documents/brackets/brackets/src/file/NativeFileSystem.js Failed to load resource: net::ERR_FILE_NOT_FOUND
require.js:141 Uncaught Error: Script error for: file/NativeFileSystem
http://requirejs.org/docs/errors.html#scripterror
file:///C:/Users/abose/Documents/brackets/brackets/src/file/NativeFileError.js Failed to load resource: net::ERR_FILE_NOT_FOUND
require.js:141 Uncaught Error: Script error for: file/NativeFileError

Here's the offending lines on test/SpecRunner.js
https://github.com/adobe/brackets/blob/0303dc53b1bc61c7d7305b7f0d8227c4e0804cbf/test/SpecRunner.js#L74
    // Also load compatibility shims for now, in case legacy extensions are still using old file APIs
    require("project/FileIndexManager");
    require("file/NativeFileSystem");
    require("file/NativeFileError");

Good call on checking network errors, I just checked the console and didn't see anything :hamburger:

Fixed in #11787, ping @abose


Last update timestamp for page

Following pages should have information when they were last updated:

http://netdevelopers.pl/groups
http://netdevelopers.pl/blogs
http://netdevelopers.pl/facebook

Background jobs should update that field.
Possible solution: After job is executed a entry for key-value in mongodb table is updated. This entry is read  by nancyfx when page is requested.

I can do it

Great, go for it!

@pawelklimczyk is this issue resolved after the merge? or still some work needs to be done?

i think it can be resolved


Disable snippet interactivity

Another issue with an interactive snippet:

This is the first snippet in the following section:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/statements/jump-statements#the-goto-statement
If you prefer interactivity over the KeyValuePair deconstruction, please let me know: I'll refactor the loop then.
In general, is there any work done/planned on improving the interactive experience in the docs, like this or supporting C# 8 and later?
/cc: @IEvangelist

Hi @pkulikov, I too prefer the interactivity. I'm honestly not sure about the plans for that functionality, I'm certain @BillWagner would know.


Improved footer-blue-04

Closes #775 . Improved footer-blue-04. Here is a screenshot of that.
Before:

After:

Great work @Dibyendu303


Deno

Yolk suggestion: Deno (https://deno.land/)

I'm pretty sure you can modify this: https://github.com/parkervcp/yolks/blob/master/nodejs/18/Dockerfile

I already have a deno egg that doesn't need a custom image - https://github.com/parkervcp/eggs/blob/master/bots/discord/deno/egg-deno-generic.json

Oh ok


Cloudinary images have strangely long TTFB on AJAX load

I'm seeing TTFB upwards of 7 seconds. Then all 6 images load at once.

Seems fine on initial load. Could this be a Cloudinary thing? Very weird.

From the deploy preview of #44 I can see this helps, but I'm still getting 2-3 second TTFB on some requests.
This is probably worth checking out on the Cloudinary side. I'm pretty sure we were getting better timings from Netlify, but we should check in older deploys.
From a UX perspective, we could add a little spinner to the background of the images' stage. Comparing fonts usually means going back and forth between images that are already cached, so IMO this isn't a very terrible problem. Mostly just weird.

My guess is that it's just the fact we're using the "fetch" URL format for Cloudinary, so it has to pull it, transform it, store it, and all that. Once it's done it once, then it's fast. 2-3 seconds is pretty bad though. Maybe a possibility is hitting all these URL's during a deploy build process so no real user has to deal with it. GitHub Actions maybe.
I'd say it's still probably worth it for performance to have the optimized versions with responsive images on a global CDN and all that, even thought the first-request-ever is pretty rough.

Yeah, it seems to have resolved itself. Hope that's that.


Fix applying rustc flags in substrate-wasm-builder

rustc flags seem to not affect when applied via RUSTFLAGS environment variable.
Better to pass these flags as command line parameters.

Ty for the pr, however the proper fix is this https://github.com/paritytech/substrate/pull/9637/commits/73acb2a156c42dde93da76feb99314a05a841fc8


Add Line Items to checkout missing in example

Updated the example with add, update and, remove line items for checkout in v1.4.3


Fix form data issue switching viz types (#5100)

Fixing issue with extra params in formData

Pass in param use_slice_data to decide whether to use slice data

Fixing core_tests to not use explore_json overrides

(cherry picked from commit bf0afef7a9b0212e339d823b632a7e2ddbf46f6d)
@john-bodley @graceguo-supercat

Codecov Report

Merging #91 into airbnb-master will increase coverage by 0.02%.
The diff coverage is 100%.

@@                Coverage Diff                @@
##           airbnb-master      #91      +/-   ##
=================================================
+ Coverage          63.23%   63.25%   +0.02%
=================================================
  Files                351      351
  Lines              22040    22034       -6
  Branches            2470     2468       -2
=================================================
+ Hits               13936    13937       +1
+ Misses              8092     8085       -7
  Partials              12       12

Impacted Files
Coverage Δ

superset/assets/src/explore/visTypes.jsx
57.14% <ø> (ø)
:arrow_up:

...ts/src/explore/components/ExploreViewContainer.jsx
0% <ø> (ø)
:arrow_up:

superset/assets/src/explore/store.js
24% <ø> (+1.21%)
:arrow_up:

superset/assets/src/explore/controls.jsx
45.8% <ø> (ø)
:arrow_up:

superset/views/core.py
73.69% <100%> (+0.01%)
:arrow_up:

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 2d7c833...988dcc7. Read the comment docs.


Revert "Migrate driver tests in example/ to NNBD"

Reverts flutter/flutter#75022
platform_channel_sample_test tests are failing
platform_channel_sample_test_swift
platform_channel_sample_test_ios
https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket.appspot.com/8856475614555404576/+/steps/run_platform_channel_sample_test/0/stdout
[platform_channel_sample_test] [STDOUT] stdout: [ +625 ms] 00:00 +0 -1: button tap test (setUpAll) [E]
[platform_channel_sample_test] [STDOUT] stdout: [   +1 ms]   DriverError: Failed to fulfill GetHealth due to remote error
[platform_channel_sample_test] [STDOUT] stdout: [        ]   Original error: type '() => Null' is not a subtype of type '(() => FutureOr<Map<String, dynamic>>)?' of 'onTimeout'
[platform_channel_sample_test] [STDOUT] stdout: [        ]   Original stack trace:
[platform_channel_sample_test] [STDOUT] stdout: [        ]   #0      Future.timeout (dart:async/future_impl.dart)
[platform_channel_sample_test] [STDOUT] stdout: [        ]   #1      _warnIfSlow (package:flutter_driver/src/driver/vmservice_driver.dart:633:6)
[platform_channel_sample_test] [STDOUT] stdout: [        ]   #2      VMServiceFlutterDriver.sendCommand (package:flutter_driver/src/driver/vmservice_driver.dart:315:25)
[platform_channel_sample_test] [STDOUT] stdout: [        ]   #3      FlutterDriver.checkHealth (package:flutter_driver/src/driver/driver.dart:187:34)
[platform_channel_sample_test] [STDOUT] stdout: [        ]   #4      VMServiceFlutterDriver.connect (package:flutter_driver/src/driver/vmservice_driver.dart:232:40)
[platform_channel_sample_test] [STDOUT] stdout: [        ]   <asynchronous suspension>
[platform_channel_sample_test] [STDOUT] stdout: [        ]   #5      StackZoneSpecification._registerUnaryCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart)
[platform_channel_sample_test] [STDOUT] stdout: [        ]   <asynchronous suspension>

Merging to green the build.


Weekly scrum – [March 6 to March 13]

Please comment on this issue with answers the following questions:

what have I done this week?
what will I do next week?
what is holding me back? (if applicable)

Expected length: 1-2 sentences per item.

what have I done this week? Added back-end and front-end validation
what will I do next week? TBD
what is holding me back? N/A

This week: Add github pull request template file, create wiki page to explain how to update diagrams, reviewing & testing PRS, starting to work on backend for User Login/Authentication
Next week: Finish User Login/Authentication backend with unit & integration tests, integrate backend with User login & registration UI pages.

This week:

Incorporated sb-admin template
Moved kanban board from Trello to GitHub
Added login, registration and updated error page

Next week:

Develop shopping cart

This week:
Reviewed merge requests
Looked at integrating postgresql to the project
Next week:
Integrate postgresql with project
Implement book recommendations

This week:

Fixed bug on the input fields
templated data table
Created application controller
Created fragment controller
Added Jquery Table
Decoupled Index from one page two multi pages
Revamped the CSS Style sheet


Small title on input fields with field type and variable name

Right now we have it on the placeholder, which works, but after you edit it, you lose the placeholder reference.
I think it would be nice to have it back, not sure about the best solution. We could replicate it in a small title like in v1, or show the title only when placeholder is not showing, or show a tooltip when you hover the field that has data on it... (or any other creative solution we can think 🙃)

Completed in #44


refactor

Changes:

The binary component and library component are separated as two packages in the same workspace.

lychee is the binary component, in lychee-bin/*.
lychee-lib is the library component, in lychee-lib/*.
Users can now install only the lychee-lib, instead of both components, that would require fewer dependencies and faster compilation.
Dependencies for each component are adjusted and updated. E.g., no CLI dependencies for lychee-lib.
CLI tests are only moved to lychee, as it has nothing to do with the library component.

Status::Error is refactored to contain dedicated error enum, ErrorKind.

The motivation is to delay the formatting of errors to strings. Note that e.to_string() is not necessarily cheap (though trivial in many cases). The formatting is no delayed until the error is needed to be displayed to users. So in some cases, if the error is never used, it means that it won't be formatted at all.

Replaced regex based matching with one of the following:

Simple string equality test in the case of 'false positivie'.
URL parsing based test, in the case of extracting repository and user name for GitHub links.
Either cases would be much more efficient than regex based matching. First, there's no need to construct a state machine for regex. Second, URL is already verified and parsed on its creation, and extracting its components is fairly cheap. Also, this removes the dependency on lazy-static in lychee-lib.

types module now has a sub-directory, and its components are now separated into their own modules (in that sub-directory).
I followed suggestion from cargo clippy, with clippy::all and clippy:pedantic.

Benchmark results of running the refactored version and the current origin/HEAD version is listed below.
The sample size is very small (n=6)
Frankly, I don't know which part contribute to most of improvement.

The data is obtained by heaptrack, and I did some t-tests.
My conclusion is there's no significant improvement in speed, but in memory usage.
The difference in run-time is insignificant.
data:  c(126.91, 129.91, 133.03, 130.06, 126.17, 128.88) and c(125.21, 137.37, 111.35, 128.21, 127.47, 118.25)
t = 1.1916, df = 5.7553, p-value = 0.2802
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -4.854592 13.887925
sample estimates:
mean of x mean of y
 129.1600  124.6433

My refactored version has 3.22% fewer calls to memory allocation in total.
data:  c(5290434, 5240945, 5275566, 5263350, 5262841, 5244248) and c(5434387, 5309354, 5455931, 5449631, 5484685, 5496514)
t = -6.1582, df = 5.7684, p-value = 0.000975
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -245945.6 -105093.8
sample estimates:
mean of x mean of y
  5262897   5438417

The memory allocation calls per second is less significant, and it's 7.03% fewer.
calls/s:
data:  c(41687, 40341, 39658, 40470, 41713, 40689) and c(43403, 38649, 48996, 42505, 43025, 46480)
t = -2.0728, df = 5.5129, p-value = 0.0877
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -6802.6509   635.9842
sample estimates:
mean of x mean of y
 40759.67  43843.00

The difference in temporary memory allocation in total and per second are not significant
data:  c(510614, 604372, 515672, 514999, 517575, 501116) and c(522805, 450923, 525175, 513906, 524612, 517626)
t = 0.93237, df = 9.3099, p-value = 0.3747
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -25758.59  62192.25
sample estimates:
mean of x mean of y
 527391.3  509174.5

data:  c(4023, 3882, 3876, 3959, 4102, 3888) and c(4175, 3282, 4716, 4008, 4115, 4377)
t = -0.79212, df = 5.371, p-value = 0.4618
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -656.7887  342.4554
sample estimates:
mean of x mean of y
 3955.000  4112.167

My refactored version has 12.79% fewer peak memory usage, and it's very significant.
peak heap:
data:  c(29.88, 29.43, 30.81, 31.18, 30.89, 31.02) and c(33.69, 35.33, 34.23, 34.08, 35.28, 36.04)
t = -9.0237, df = 9.4371, p-value = 6.048e-06
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -5.295475 -3.184525
sample estimates:
mean of x mean of y
   30.535    34.775

My refactored version has 4.14% fewer peak resident memory.
data:  c(108.36, 111.94, 111.99, 108.42, 118.81, 107.58) and c(114.86, 116.04, 115.83, 116.75, 116.85, 115.59)
t = -2.7615, df = 5.3159, p-value = 0.03724
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -9.195788 -0.410879
sample estimates:
mean of x mean of y
 111.1833  115.9867

The only downside, I have significantly much more leaked memory (25.90% increase).
My guess is this probably is caused by my usage of Box<dyn Error> (as a result of refactoring Status::Error) or static reference of RegexSet.
This should not be a big deal though. And notice that heaptrack's analysis on memory leak is not as fine as valgrind, so it could overestimate.
data:  c(279.68, 301.38, 299.75, 322.15, 300.96) and c(242.67, 251.02, 240.71, 232.52, 232.52, 234.05)
t = 8.4081, df = 5.572, p-value = 0.0002269
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 43.52331 80.21469
sample estimates:
mean of x mean of y
  300.784   238.915

In the latest forced push, I replaced regex based matching with url parsing based matching.
Note that we stored URL in URI, where URL is parsed and verified when created.
And extracting host, path, or any other components from URL is cheap.
So for example, to extract repo and user name from a github URL, there's really no need to use regex at all.

Updated benchmark with a few more optimizations (replacing regex with string matching and etc):
$total_runtime

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = -1.0993, df = 17.69, p-value = 0.2864
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -10.401486   3.261486
sample estimates:
mean of x mean of y
  125.394   128.964

$calls_to_allocation_functions

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = -1.2081, df = 10.879, p-value = 0.2526
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -172992.12   50492.72
sample estimates:
mean of x mean of y
  5312026   5373276

$calls_to_allocation_functions_per_second

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = 0.72679, df = 16.662, p-value = 0.4774
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1386.879  2841.079
sample estimates:
mean of x mean of y
  42483.7   41756.6

$temporary_memory_allocations

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = 2.7132, df = 16.527, p-value = 0.01503
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
  2887.776 23282.224
sample estimates:
mean of x mean of y
 520759.9  507674.9

$temporary_memory_allocations_per_second

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = 1.9783, df = 17.864, p-value = 0.06353
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -13.54774 446.54774
sample estimates:
mean of x mean of y
   4164.4    3947.9

$peak_heap_memory_consumption_MB

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = -0.37202, df = 11.858, p-value = 0.7164
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.414081  1.002081
sample estimates:
mean of x mean of y
   34.785    34.991

$`peak_RSS_(including_heaptrack_overhead)_MB`

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = -0.41003, df = 10.717, p-value = 0.6899
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -3.958803  2.718803
sample estimates:
mean of x mean of y
  116.284   116.904

$total_memory_leaked_KB

	Welch Two Sample t-test

data:  SD[ID == "develop", ..var] and SD[ID == "master", ..var]
t = -19.724, df = 9.0098, p-value = 1.012e-08
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -41.89709 -33.27691
sample estimates:
mean of x mean of y
  197.761   235.348

This is great! Love the improvements. 👏
One thing: can we keep lychee for the name of the library instead of lychee-lib? I'd like to keep the old name because it looks a bit nicer when calling it. 🙂

Need to do more investigation on the performance changes.
Then should lychee-bin be the name for the binary?
Also, the CI would fail unless the library component is actually published.

Need to do more investigation on the performance changes.

Thanks. 👍

Then should lychee-bin be the name for the binary?

Yes, please.

Also, the CI would fail unless the library component is actually published.

All good. Just let me know when this is ready for review and I'll try it locally and then we can merge this.

It looks good, but there are a few outliers.

To replicate, you need to install heaptrack
git checkout develop
cargo clean && cargo build --release --all
mkdir develop
cd develop
for _i in {0..9}; do heaptrack ../target/release/lychee --no-progress -E https://wiki.archlinux.org/index.php/List_of_applications &> /dev/null; done
popd

git checkout master
cargo clean && cargo build --release
mkdir master
cd master
for _i in {0..9}; do heaptrack ../target/release/lychee --no-progress -E https://wiki.archlinux.org/index.php/List_of_applications &> /dev/null; done
popd

echo "ID, total_runtime, calls_to_alloc, calls_to_alloc_per_second, temp_mem_alloc, temp_mem_alloc_per_second, peak_heap_mem_MB, peak_RSS_MB, total_mem_leaked_KB" > data.csv
for _i in ./develop/heaptrack*; do echo "ID: developer"; heaptrack_print $_i | tail -n 6; done >> data.csv
for _i in ./master/heaptrack*; do echo "ID: master"; heaptrack_print $_i | tail -n 6; done >> data.csv

The next part is data cleaning. You can do that in vim

:2,$s/[[:alnum:]| ()]*: //
:2,$s/s\.$\|MB$\|KB$//
:2,$s/\ (/\r/
:2,$s/\/s)$//
:2,$j
:2s/ \(developer\|master\)/\r\1/g
:2,$s/ /, /g

Next is to generate the output, you need R and install a few packages
install.packages(c("ggplot2", "ggpubr", "stringi", "data.table", "rlang"))

library(ggplot2)
library(ggpubr)
library(stringi)
library(data.table)
library(rlang)

DT <- data.table::fread(file = "data.csv")

pps <-
  lapply(names(DT)[-1],
         function (var) {
           df <- DT[, .SD, .SDcols = var, by = ID]
           caption <-
             DT %>% wilcox_test(new_formula(sym(var), sym("ID"))) %>% get_test_label(detailed = TRUE)
           names(df) <- c("ID", "Measure")
           ggplot(df, aes(x = ID, y = Measure, color = ID)) +
             geom_boxplot() +
             geom_jitter() +
             labs(x = "", y = "", caption = caption) +
             theme_minimal() +
             theme(legend.position = "none")
         })

labels <-
  sapply(names(DT)[-1],
         function (name) {
           name %>%
             stri_replace_all_fixed("_", " ") %>%
             stri_trans_totitle() %>%
             stri_replace_last_fixed("b", "B")
         },
         USE.NAMES = FALSE)

pp <-
  eval(expr(
    ggarrange(
      !!!pps,
      labels = labels,
      ncol = 2,
      nrow = 4,
      font.label = list(size = 10)
    )
  ))

ggexport(
  pp,
  filename = "figure1.png",
  width = 1000,
  height = 1400,
  res = 100
)

When running on test data (those under fixtures), my refactored version is way much better.

I'm replacing ad-hoc errors (via anyhow) to structural errors (via this-error).
The biggest disadvantage of anyhow is that errors are basically strings which is readable to human readers, but the computer library is not able to differentiate different types of errors.

I'm replacing ad-hoc errors (via anyhow) to structural errors (via this-error).

Yeah that was on the list anyway. Thanks for tackling this as well. 😀

@mre
I had handwritten the errors without using this-error.
You can take a look.
As for the naming:
If you want the library component to keep the name lychee, it will cause breaking error in CIs and other applications that uses cargo install lychee. That's why I have the binary component to take the name.

If this looks good I will do some final clean ups.

That pull request is great! I learned a lot about making the code more ergonomic.
Just added a few more hints and then we're good to go.
Let's keep lychee-lib because you have a point about cargo install lychee. My guess is that more people will use the cli than the library. 👍

Well a few things happened during last few days.
I further slimmed downed the new ErrorKind and figured out that we can have HttpError(reqwest::Error), instead of HttpError(String, StatusCode). Note that we can extract the error message and status code from reqwest::Error.
The only downside is we are not able to create create a superficial http error with empty message and a status code. The impact is minimal because we only need to do that in tests ( specifically lychee::stat::test module), and I figured out a way to fix this by returning a real reqwest::Error from a mock server. This would be a bit more resource intensive during test but no impact on any other parts of the program.
I updated dependencies, and ordered in alphabetically. Now wiremock would be a dev-dependency and lychee-lib::test_utils is only compiled for tests. The downside is I have to duplicate two functions in lychee (binary component)'s test modules. But cutting down dependency would greatly benefit CI usage of lychee.

And about the performance gain.
I wrote quite a lot on the benchmarks. To sum up

I found no significant change in speed when testing on the real world case ( that arch wiki page with hundreds of external links ). But my refactored version cuts off many memory allocations.
I found HUGE improvement in both speed and memory allocations when testing on fixutres/*. It's actually 4 times faster.

So

The bottom line is my refactor is not making things worse.
My refactor seems to optimize extremely well with certain cases.

My guess is, fixtures/* contains links which are either right away excluded, or known to work or known to fail. There's hardly any timeouts. So timeout is the real culprit why you see no improvement in speed.
To verify my hypothesis, I made a markdown file with top 1,000 websites in Alexa's rank, and removed any of them that timed out.
𝛌> hyperfine --min-runs 5 -i './develop/lychee --no-progress -E -t 5 top-1k-no-timeout.md' './master/lychee --no-progress -E -t 5 top-1k-no-timeout.md'
Benchmark #1: ./develop/lychee --no-progress -E -t 5 top-1k-no-timeout.md
  Time (mean ± σ):     29.645 s ±  1.900 s    [User: 1.379 s, System: 0.471 s]
  Range (min … max):   27.431 s … 31.543 s    5 runs

  Warning: Ignoring non-zero exit code.

Benchmark #2: ./master/lychee --no-progress -E -t 5 top-1k-no-timeout.md
  Time (mean ± σ):     33.484 s ±  6.254 s    [User: 1.392 s, System: 0.474 s]
  Range (min … max):   26.550 s … 39.519 s    5 runs

  Warning: Ignoring non-zero exit code.

Summary
  './develop/lychee --no-progress -E -t 5 top-1k-no-timeout.md' ran
    1.13 ± 0.22 times faster than './master/lychee --no-progress -E -t 5 top-1k-no-timeout.md'

As you can see, my refactored version IS faster for about 13%.

Please take a look of the changes and I will rebase them.

Well well well...
Just find out I can further optimize lychee-lib::Uri. It would be a wrapper of url::Url.
There's no need to differentiate whether its Uri::Website(_) or Uri::Mail(_) at creation, because mail address would have scheme mailto.
Also, currently we check GitHub url by matching the domain "www.github.com" and "github.com". I will change it to matching host "github.com". So something like https://raw.githubusercontent.com/lycheeverse/lychee/cefe38ee25d433dd3b7c61a96ccacbec66aa70a8/.gitignore will also work.
(In the future we definitely will want to support other git repos as well.)

Well I should stop now.
I end up refactored some of the tests. I introduced two macros and it's much shorter now.
One significant change is, for the integration change, it's now matching the json output instead of matching the CLI output. This should be more robust.

Just added a few more comments, but apart from that it's all nice and dandy. Guess you can rebase after that and we'll be good to go.

Guess by now you have touched almost all the lines in the codebase. 😆

Merged in #217 to fix #183. Guess you have to merge that into your branch. Hope that's okay. 😅

Will merge #217 later.

Ready to rebase and merge.
I've merged #217 and fixed a bug. (the ignored test is passed)

@lebensterben, guess there is one more CI issue to fix before we can finally merge this:
 error[E0277]: the trait bound `types::error::ErrorKind: From<reqwest::error::Error>` is not satisfied
   --> src/types/error.rs:126:45
    |
126 |             hubcaps::Error::Reqwest(e) => e.into(),
    |                                             ^^^^ the trait `From<reqwest::error::Error>` is not implemented for `types::error::ErrorKind`

Source: https://github.com/lycheeverse/lychee/pull/208/checks?check_run_id=2331614860

@mre
This doesn't make any sense...
It passes the cargo test CI, and how's it possible to fail?

BTW...
I've found other interfaces for further refactor. But I will keep them in another PR.
I'll be back to the HTTPS PR later.

@mre
You didn't merge it right. Now the problem should be fixed.

Since it passes both cargo test and cargo lint, I'm going to squash those commits.

You can merge with git merge -s theirs. That's the safest way.

You didn't merge it right. Now the problem should be fixed.

Resolved the conflict via Github directly as it only showed a single file to be changed: the Cargo.toml in the project root. It looked like a trivial change because the diff only showed that the dependencies had moved into the individual lib and bin crates, so I wonder how this could have happened. My only guess is that Github squashed the commits right after and deleted the history. 😨 Anyway, sorry for that.
I'm seeing a list of conflicting files now. Given my bad experiences with the last merge, perhaps you could try to resolve that this time to avoid further churn.
Other than that, let's merge it in. 😊

@mre
I just merged them and there's no conflict now.

Hate to say it, but there is one more lint error. 😅
Also our old friend is back:
   Compiling lychee-lib v0.6.0 (/home/runner/work/lychee/lychee/target/package/lychee-lib-0.6.0)
error[E0277]: the trait bound `types::error::ErrorKind: From<reqwest::error::Error>` is not satisfied
   --> src/types/error.rs:127:45
    |
127 |             hubcaps::Error::Reqwest(e) => e.into(),
    |                                             ^^^^ the trait `From<reqwest::error::Error>` is not implemented for `types::error::ErrorKind`
    |
    = help: the following implementations were found:
              <types::error::ErrorKind as From<(PathBuf, std::io::Error)>>
              <types::error::ErrorKind as From<(std::string::String, url::ParseError)>>
              <types::error::ErrorKind as From<(std::string::String, url::ParseError, fast_chemail::ParseError)>>
              <types::error::ErrorKind as From<Infallible>>
            and 6 others
    = note: required because of the requirements on the impl of `Into<types::error::ErrorKind>` for `reqwest::error::Error`

I swear I didn't touch it this time. 🤞
Also, shouldn't
cargo install --path lychee-bin

just work? I'm getting
error[E0277]: the trait bound `url::Url: uri::_::_serde::Serialize` is not satisfied
  --> lychee-lib/src/uri.rs:15:5
   |
15 |     /// Website URL or mail address
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `uri::_::_serde::Serialize` is not implemented for `url::Url`
   |
   = note: required by `uri::_::_serde::ser::SerializeStruct::serialize_field`

error[E0277]: the trait bound `url::Url: Deserialize<'_>` is not satisfied
  --> lychee-lib/src/uri.rs:15:5
   |
15 |     /// Website URL or mail address
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Deserialize<'_>` is not implemented for `url::Url`
   |
   = note: required by `next_element`

error[E0277]: the trait bound `url::Url: Deserialize<'_>` is not satisfied
  --> lychee-lib/src/uri.rs:15:5
   |
15 |     /// Website URL or mail address
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Deserialize<'_>` is not implemented for `url::Url`
   |
   = note: required by `next_value`

error: aborting due to 3 previous errors

What's the right command to install it locally?

@mre
Mystery solved:
   --> src/types/error.rs:127:62
    |
127 |             hubcaps::Error::Reqwest(e) => Self::ReqwestError(e),
    |                                                              ^ expected struct `reqwest::Error`, found struct `reqwest::error::Error`
    |
    = note: perhaps two different versions of crate `reqwest` are being used?

This is some restriction of rust. These two are the same struct.
I cannot use reqwest::error::Error because reqwest::error is private.
But rustc cannot figure out they're the same.
I solved it by introduced a new enum variant.

Nicely done. Should cargo install --path lychee-bin work?

Yes it works.
   Compiling reqwest v0.11.3
   Compiling hubcaps v0.6.2 (https://github.com/softprops/hubcaps.git#a9e6616e)
   Compiling check-if-email-exists v0.8.21
   Compiling lychee-lib v0.6.0 (/home/lucius/GitHub/lycheeverse/lychee-lib)
   Compiling lychee v0.6.0 (/home/lucius/GitHub/lycheeverse/lychee-bin)
    Finished release [optimized] target(s) in 1m 40s
  Installing /home/lucius/.cargo/bin/lychee
   Installed package `lychee v0.6.0 (/home/lucius/GitHub/lycheeverse/lychee-bin)` (executable `lychee`)

Once lychee-lib is published, lychee should pass the publish check.

Yaaaay! You've done it. 🚀 Great success. Thanks a lot for pushing through and for your patience. 👏

I'll publish lychee-lib now.
P.S.: we forgot to adjust the Dockerfile, but it's not a big deal; will fix.


update-nim

Updated nim to the latest version. Also under recent updates, 'nimrod' was renamed to 'nim'.

Awesome :+1:


Python solution for Max sum problem in DSA 450

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Additional context
Add any other context or screenshots about the feature request here.
link to the problem :
https://practice.geeksforgeeks.org/problems/maximum-sum-problem2211/1

Please assign me this issue

Sure @dsrao711, you can go ahead !


Abstract logical code away from the routes

Abstract logical code away from the routes into their own appropriate controllers to follow the MVC design pattern

LGTM


Add Endpoint for Non-Mutating AQL Queries

Solves #43
This PR creates an endpoint at GET /api/workspaces/{workspace}/aql/, which accepts a string parameter, query, and attempts to execute that string as an AQL query for the given workspace.
It adds default time and memory limits to the ArangoQuery class, and implements a class to aid in the serialization of Cursor objects returned by the python-arango API.

@naglepuff PTAL at 6fd45d4 and b883e26.
The first commit removes get_or_create_db. Looking back at this function, it doesn't really have a place, and introduces more confusion, as an arango db could be created with that func (by simply trying to retrieve it) or by saving a workspace instance. Now, calling save on the workspace model is the only way to create that db (aside from retrieving the arango system db and creating it manually).
The second commit removes the default readonly argument for the low level db func. My reasoning for this is that for this function, you should need to be explicit in how you intend to use that function. Since it's so low level, the use could vary wildly, so assuming a default can be hairy. This commit also sets a readonly=True parameter for arango_system_db, to be consistent with the other uses of this parameter.

@AlmightyYakob
I took a look at your changes, and I'm fine with them. I agree defaults should be consistent, and removal of get_or_create_db makes sense as well.


add description submit-api service

This is not immediately obvious.
Lack of context, one could at first think its submit-api's socket.

bors r+


Site XNM, nodes 433, 380, 275, 374 not saving data regularly

Example:
https://drive.google.com/file/d/1RsLPIjfuwL1Am26U9YwQh4qyT6yKHA6C/view?usp=sharing
Tauana has gone to the field to download data from the nodes multiple times, and this is an example where she printed them off the tablet on 7/13, but there is no data being printed since 6/28.
This is true for all four nodes at this site, as well as one node at another site, UHC.
Any ideas? @alondrathompson @elhenriq

All nodes at KKD are in the same situation.

@brianwdavis Based on the file you shared, it looks like the nodes may have gotten stuck after having missed communication with the gateway more than 3 consecutive times and while trying to perform the daily handshake with the gateway (happens at 18:35 every day). This is a scenario I missed that screws up the alarms and stops the whole program. The main alarm never gets updated and remains in the past so it never triggers again.
@tauanafa You can either: a) set the nodes to not use the gateway, or b) make sure the gateway is as close as possible to the nodes and restart everything.


SHOW_FAKE_CAPACITY does not work

I tried many times but original size does not change on windows 11.

Revision is 1.3
Firmware is updated to latest version firmware_13003.dfu

That is probably because you have not reformatted the partition, as shown in this video:
https://www.youtube.com/watch?v=ZsajkLqX0K4  (starting from 7:37 timestamp)
The thing is, windows file explorer shows available partitions, not all available space on the drive.
And the MBR partition table still has the old partition size written in it, and possibly, existing filesystem
has this old information written somewhere as well. I found that just reformatting the partition
via windows disk management utility fixes that.

Yeah, formatting drive after setting fake capacity fixed the issue. Thanks!


FIX key-cache destroys updates on multiWindow

When localstorage-down is used on more than one open tab, the other tabs dont notice changes because of the key-caching.
Reproduce bug:

Open this fiddle on 2 browser-windows
Open the developer-console on both windows.
One the first window, click "insert" and "getAll"
As you can see, the getAll shows the inserted document
Press "getAll" on the second window.
Here it wont find any document
If you reload window #2, the "getAll" can now find the inserted document.

Coverage increased (+0.04%) to 86.364% when pulling 64badc3744162cd9c3c90b865668df52d22e3ba5 on pubkey:master into 49967acff72c20c745eed821705cb3d958c6bc8d on No9:master.

For some reason the SauceLabs credentials are failing, so I'll probably need to add my own SauceLabs credentials and/or use Ngrok. Thanks for the PR; LGTM and will merge once it's green!

Closing in favor of #84 because sadly I had to make a bunch of changes to get tests passing again, sorry

No problem. Thx for fixing the bug.


fix: merge main

:tada: This PR is included in version 1.0.0-alpha.43 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

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


feat(invariant): support fuzz with random msg.value

Motivation
Currently, the foundry's invariant fuzz testing doesn't support txs with value > 0, which makes it unable to find sequences in some situations. For example, the Pay contract below will only set the hacked variable if the calls are C() --> B() --> A() with 2, msg.value>0.11 ether, 0, but foundry can't generate such calls.
contract Pay {
    uint256 private counter;
    bool public hacked; // CBA with 2,msg.value>0.11,0

    function A(uint8 x) external {
        if (counter == 2 && x == 0) hacked = true; else counter = 0;
    }
    function B() external payable {
        if (counter == 1 && msg.value > 0.11 ether) counter++; else counter = 0;
    }
    function C(uint8 x) external {
        if (counter == 0 && x == 2) counter++;
    }
}

contract PayTest is Test {
    Pay public pay;

    function setUp() public {
        pay = new Pay();
    }
    /// forge-config: default.invariant.runs = 10000
    function invariant_Pay() view external {
        assertEq(pay.hacked(), false);
    }
}

Solution
When generating a tx, we set the msg.value as a random number (uint96) if the target function is payable. After applying this strategy, foundry can find the sequence quickly:
qiuhao@pc:~/tmp$ ./forge test
[⠊] Compiling...
[⠑] Compiling 1 files with Solc 0.8.26
[⠘] Solc 0.8.26 finished in 564.77ms
Compiler run successful!

Ran 1 test for test/Counter.t.sol:PayTest
[FAIL. Reason: invariant_Pay replay failure]
        [Sequence]
                sender=0x0000000000000000000000000000000000000190 addr=[test/Counter.t.sol:Pay]0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f calldata=C(uint8) args=[2]
                sender=0x0000000000000000000000000000000000000851 addr=[test/Counter.t.sol:Pay]0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f calldata=B() args=[] value=[79228162514264337593543950333]
                sender=0x0000000000000000000000000000000000000103 addr=[test/Counter.t.sol:Pay]0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f calldata=A(uint8) args=[0]
 invariant_Pay() (runs: 1, calls: 1, reverts: 1)
Suite result: FAILED. 0 passed; 1 failed; 0 skipped; finished in 3.95ms (1.31ms CPU time)

CC @grandizzy @mds1

thanks for your PR! Generally this is recommended https://github.com/foundry-rs/foundry/issues/8449 but will consider making it automatically (I think we want this only if fuzzed function is payable)

thanks for your PR! Generally this is recommended #8449 but will consider making it automatically (I think we want this only if fuzzed function is payable)

Thanks for the info, handlers can help! Yeah, we will use random values only for payable target functions.

Hi @DaniPopes @mattsse , could you help review this PR?


Design Implementation for RS Home Page

Problem statement
As a prospective or existing user, when I land on the ReportStream home page I want to quickly understand what it is and whether it's relevant to me so that I can continue to read on and learn more about the product.
As ReportStream team, we want prospective and existing users to land on the home page and for our content to hook them into reading more information that will help them decide to sign up, contact us, or learn more about our product.
What you need to know
We can adapt some of previously revised (but not yet published) content work for this upcoming redesign so we don't have to reinvent the wheel.

Here's the Content Design folder that contains previously revised web copy prior to this current June 2022 redesign.

Here's the ReportStream Content Style Guide we adhere to for public-facing content

Here's the Figma with designs (in progress)

Acceptance criteria
Content:

adheres to ReportStream Content Style Guide
follows federal plain language guidelines

Design:

follows USWDS guidelines
if diagrams/graphics are needed where indicated by Content, include them on the relevant page/section
if template is not built, design needs to create it

User voices: Sender is an API user (phase out CSV uploader content), Receiver represents a public health dept (STLTs)
Review/QA:

Content shares work with Exp. Product and Design team to review before publishing
Design shares work with Exp. Product and Design team to review before publishing (staging for review? how does this work / let's discuss)

@fmccaf1 @drew-usds Doesn't look like a UI ticket. I'll add design, and let y'all decide whether this is pertinent to our current goals or not! :)

Closing out as it will come up again naturally in the future.


Use Field alias when generating data

Hi again!
Here's a simple fix for an issue with data generation
The case presented below is where the model prioritizes the field name vs. the alias. This led to inconsistency issues since the generated spark model would prioritize the alias.
I also thought that when setting the ColumnGenerationSpec it would be more intuitive to use the field name instead of the alias, hence why I explicitly correct the name after getting the spec.
class AliasModel(SparkModel):
    val: int = Field(alias='_val')

gen_df = AliasModel.generate_data(spark)

assert '_val' in gen_df.columns
> AssertionError

Thanks again! Will do a release now


Version 2.5.0

Landed in https://github.com/metarhia/impress/commit/cd7952c920aee4e0dcf10c69e71453caf09e1a25


[SPARK-43265] Move Error framework to a common utils module

What changes were proposed in this pull request?

Move Error framework to a common utils module so that we can share it between Spark and Spark Connect without introducing heavy dependencies on Spark Connect module.
Why are the changes needed?

Reduce Dependencies on Spark Connect.
Does this PR introduce any user-facing change?

Error framework is internally API so this should be fine.
How was this patch tested?

Existing UT.

@cloud-fan @hvanhovell

This PR fails on
Error:  running /home/runner/work/spark/spark/dev/mima -Phadoop-3 -Pdocker-integration-tests -Pyarn -Pkubernetes -Pspark-ganglia-lgpl -Pmesos -Pconnect -Phive -Phadoop-cloud -Pkinesis-asl -Phive-thriftserver -Pvolcano ; received return code 1

but there is no error messages about how to fix. I run this locally which output nothing as well.
Stuck on mima stuff now,

Trying to exclude the MIMA check for common-utils.

ok looks like we also have compatibility checks on Spark-core
[error] spark-core: Failed binary compatibility check against org.apache.spark:spark-core_2.12:3.4.0! Found 4 potential problems (filtered 4036)
[error]  * interface org.apache.spark.QueryContext does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.QueryContext")
[error]  * class org.apache.spark.SparkException does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.SparkException")
[error]  * object org.apache.spark.SparkException does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.SparkException$")
[error]  * interface org.apache.spark.SparkThrowable does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.SparkThrowable")

Are we ok to update the check?

continuous-integration/appveyor/pr seems to be stuck.

Hi @LuciferYang , do you have any idea why mima fails for this PR? The error message says nothing. Thanks!

Looking

@amaliujia @cloud-fan
https://github.com/apache/spark/blob/b461cdea92ea08ce39bb3c9d733f0af7c56abf8d/project/SparkBuild.scala#L405
should add commonUtils to this Seq now due to 3.4.0 no common-utils module:
[error] sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-common-utils_2.12:3.4.0
[error]   Not found
[error]   Not found
[error]   not found: /Users/yangjie01/.ivy2/local/org.apache.spark/spark-common-utils_2.12/3.4.0/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/org/apache/spark/spark-common-utils_2.12/3.4.0/spark-common-utils_2.12-3.4.0.pom
[error] 	at lmcoursier.CoursierDependencyResolution.unresolvedWarningOrThrow(CoursierDependencyResolution.scala:344)
[error] 	at lmcoursier.CoursierDependencyResolution.$anonfun$update$38(CoursierDependencyResolution.scala:313)
[error] 	at scala.util.Either$LeftProjection.map(Either.scala:573)
[error] 	at lmcoursier.CoursierDependencyResolution.update(CoursierDependencyResolution.scala:313)
[error] 	at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:60)
[error] 	at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:59)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:133)
[error] 	at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:73)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$20(LibraryManagement.scala:146)
[error] 	at scala.util.control.Exception$Catch.apply(Exception.scala:228)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:146)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:127)
[error] 	at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219)
[error] 	at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:160)
[error] 	at sbt.Classpaths$.$anonfun$updateTask0$1(Defaults.scala:3687)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] 	at java.lang.Thread.run(Thread.java:750)
[error] (oldDeps / update) sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-common-utils_2.12:3.4.0
[error]   Not found
[error]   Not found
[error]   not found: /Users/yangjie01/.ivy2/local/org.apache.spark/spark-common-utils_2.12/3.4.0/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/org/apache/spark/spark-common-utils_2.12/3.4.0/spark-common-utils_2.12-3.4.0.pom

@amaliujia @cloud-fan
https://github.com/apache/spark/blob/b461cdea92ea08ce39bb3c9d733f0af7c56abf8d/project/SparkBuild.scala#L404-L407
should add commonUtils to this Seq now due to 3.4.0 no common-utils module:
[error] sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-common-utils_2.12:3.4.0
[error]   Not found
[error]   Not found
[error]   not found: /Users/yangjie01/.ivy2/local/org.apache.spark/spark-common-utils_2.12/3.4.0/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/org/apache/spark/spark-common-utils_2.12/3.4.0/spark-common-utils_2.12-3.4.0.pom
[error] 	at lmcoursier.CoursierDependencyResolution.unresolvedWarningOrThrow(CoursierDependencyResolution.scala:344)
[error] 	at lmcoursier.CoursierDependencyResolution.$anonfun$update$38(CoursierDependencyResolution.scala:313)
[error] 	at scala.util.Either$LeftProjection.map(Either.scala:573)
[error] 	at lmcoursier.CoursierDependencyResolution.update(CoursierDependencyResolution.scala:313)
[error] 	at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:60)
[error] 	at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:59)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:133)
[error] 	at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:73)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$20(LibraryManagement.scala:146)
[error] 	at scala.util.control.Exception$Catch.apply(Exception.scala:228)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:146)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:127)
[error] 	at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219)
[error] 	at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:160)
[error] 	at sbt.Classpaths$.$anonfun$updateTask0$1(Defaults.scala:3687)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] 	at java.lang.Thread.run(Thread.java:750)
[error] (oldDeps / update) sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-common-utils_2.12:3.4.0
[error]   Not found
[error]   Not found
[error]   not found: /Users/yangjie01/.ivy2/local/org.apache.spark/spark-common-utils_2.12/3.4.0/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/org/apache/spark/spark-common-utils_2.12/3.4.0/spark-common-utils_2.12-3.4.0.pom

with this change and rebase the code, then run the mima check:
[warn] multiple main classes detected: run 'show discoveredMainClasses' to see the list
[info] spark-examples: mimaPreviousArtifacts not set, not analyzing binary compatibility
[error] spark-core: Failed binary compatibility check against org.apache.spark:spark-core_2.12:3.4.0! Found 4 potential problems (filtered 4035)
[error]  * interface org.apache.spark.QueryContext does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.QueryContext")
[error]  * class org.apache.spark.SparkException does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.SparkException")
[error]  * object org.apache.spark.SparkException does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.SparkException$")
[error]  * interface org.apache.spark.SparkThrowable does not have a correspondent in current version
[error]    filter with: ProblemFilters.exclude[MissingClassProblem]("org.apache.spark.SparkThrowable")
[error] java.lang.RuntimeException: Failed binary compatibility check against org.apache.spark:spark-core_2.12:3.4.0! Found 4 potential problems (filtered 4035)
[error] 	at scala.sys.package$.error(package.scala:30)
[error] 	at com.typesafe.tools.mima.plugin.SbtMima$.reportModuleErrors(SbtMima.scala:89)
[error] 	at com.typesafe.tools.mima.plugin.MimaPlugin$.$anonfun$projectSettings$2(MimaPlugin.scala:36)
[error] 	at com.typesafe.tools.mima.plugin.MimaPlugin$.$anonfun$projectSettings$2$adapted(MimaPlugin.scala:26)
[error] 	at scala.collection.Iterator.foreach(Iterator.scala:943)
[error] 	at scala.collection.Iterator.foreach$(Iterator.scala:943)
[error] 	at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[error] 	at com.typesafe.tools.mima.plugin.MimaPlugin$.$anonfun$projectSettings$1(MimaPlugin.scala:26)
[error] 	at com.typesafe.tools.mima.plugin.MimaPlugin$.$anonfun$projectSettings$1$adapted(MimaPlugin.scala:25)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] 	at java.lang.Thread.run(Thread.java:750)
[error] (core / mimaReportBinaryIssues) Failed binary compatibility check against org.apache.spark:spark-core_2.12:3.4.0! Found 4 potential problems (filtered 4035)
[error] Total time: 92 s (01:32), completed 2023-4-26 13:46:13

@LuciferYang thank you!
@cloud-fan then probably it goes back to what I did last time. What do you think?

Yea we have to exclude it

Merging to master


updating peering az specification

Specification for Azure CLI generation

/azp run automation - sdk

Can one of the admins verify this patch?


Create a new persona: Historian

What this PR does
This PR creates a new persona, Travel Historian, which uses the Command model.
How it was tested
Unit test.
Test on Streamlit. See examples is this doc: [https://www.notion.so/cohereai/Experiments-with-Command-for-Persona-66e3328d139145f79d2f694fa9f0c73f]
PR checklist

[x] No API keys or other secrets committed to source?
[x] New functionality is added alongside appropriate tests?
[x] All source files have the following header?

# Copyright (c) {YEAR} Cohere Inc. and its affiliates.
#
# Licensed under the MIT License (the "License");
# you may not use this file except in compliance with the License.
#
# You may obtain a copy of the License in the LICENSE file at the top
# level of this repository.

Thanks for the comprehensive experiments documented on the Notion doc! I had hunches of

the importance of role consistency / alignment
that we are able to prompt command models to have domain grounding (a la character ai)

and I'm glad now there are experiments to back these up! Great work on the historian persona, I think we can transition every other persona to the command model too!