feat: add wait

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@6adeb32). Click here to learn what that means.
The diff coverage is 100%.

@@           Coverage Diff           @@
##             master     #1   +/-   ##
=======================================
  Coverage          ?   100%
=======================================
  Files             ?      1
  Lines             ?      2
  Branches          ?      0
=======================================
  Hits              ?      2
  Misses            ?      0
  Partials          ?      0

Impacted Files
Coverage Δ

src/index.ts
100% <100%> (ø)

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 6adeb32...55fab7d. Read the comment docs.


any sample code for writing a redis server?

any sample code for using it as a redis server?

Move to duplicate #205 , closing this one.


All grabseqs SRA downloads failing

Looks like some changes on the NCBI side lead to failures in SRA downloads:
grabseqs sra SRR11733975
Traceback (most recent call last):
  File "/users/cdiener/miniconda3/envs/sra/bin/grabseqs", line 11, in <module>
    sys.exit(main())
  File "/users/cdiener/miniconda3/envs/sra/lib/python3.7/site-packages/grabseqslib/__init__.py", line 58, in main
    metadata_agg = process_sra(args, zip_func)
  File "/users/cdiener/miniconda3/envs/sra/lib/python3.7/site-packages/grabseqslib/sra.py", line 31, in process_sra
    metadata_agg)
  File "/users/cdiener/miniconda3/envs/sra/lib/python3.7/site-packages/grabseqslib/sra.py", line 97, in get_sra_acc_metadata
    run_col = lines[0].index("Run")
ValueError: 'Run' is not in list

This seems to be caused by a hardcoded address to download the SRA manifest that is not reachable anymore.

Having exactly the same issue (tried a few min ago)

same issue

Thanks for reporting the issue!
I'll try to figure out a workaround (and see if I can get the automated tests back to passing while I'm at it).

You can also request JSON from esearch which should be easier to convert with Python, for instance for your example: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=sra&term=PRJNA836386&retmax=999&retmode=json .

Hello :) Is there any workaround until this will be fixed?

Looks like some changes on the NCBI side lead to failures in SRA downloads:
grabseqs sra SRR11733975
Traceback (most recent call last):
  File "/users/cdiener/miniconda3/envs/sra/bin/grabseqs", line 11, in <module>
    sys.exit(main())
  File "/users/cdiener/miniconda3/envs/sra/lib/python3.7/site-packages/grabseqslib/__init__.py", line 58, in main
    metadata_agg = process_sra(args, zip_func)
  File "/users/cdiener/miniconda3/envs/sra/lib/python3.7/site-packages/grabseqslib/sra.py", line 31, in process_sra
    metadata_agg)
  File "/users/cdiener/miniconda3/envs/sra/lib/python3.7/site-packages/grabseqslib/sra.py", line 97, in get_sra_acc_metadata
    run_col = lines[0].index("Run")
ValueError: 'Run' is not in list

This seems to be caused by a hardcoded address to download the SRA manifest that is not reachable anymore.

Try replacing /usr/local/lib/python3.6/site-packages/grabseqslib/sra.py line 94 with
metadata = requests.get("https://trace.ncbi.nlm.nih.gov/Traces/sra-db-be/sra-db-be.cgi?rettype=runinfo&term="+pacc)

Thanks. I replaced the info in the file you indicated and is working again!

Thanks ! @zhengjxj

Hi, is grabseqs sra facing the same problem? what would be the solution this time?


Update UI Class diagram

Codecov Report

Merging #272 (d1d3dbc) into master (67c0f1c) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #272   +/-   ##
=========================================
  Coverage     58.02%   58.02%
  Complexity      679      679
=========================================
  Files           131      131
  Lines          2585     2585
  Branches        273      273
=========================================
  Hits           1500     1500
  Misses          986      986
  Partials         99       99

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 67c0f1c...d1d3dbc. Read the comment docs.


Return UNKNOWN when no zpool command available

Actually it returns OK.
That's not what we want, right?

solved in v0.0.3


Initial prototype

The JQ CLI should just BE a ChatGPT client, so there's no pretense of actually understanding this syntax. Cut out the middleman, just look up what I'm trying to do, for me.

https://twitter.com/tqbf/status/1850350668965359801

Similar to https://github.com/simonw/llm-cmd but it only does jq programs, and you can pipe stuff through it.

Claude research:

I want to write a Python program which reads from standard input, if standard input is available - if not it exits with a message
It reads the first 200 bytes from standard input into a string
Then it starts a subprocess running for "jq .blah" and pipes in the 200 bytes it already read, then pipes in the rest of the input from standard input in a stream without reading it all into memory
It streams the output of jq
If jq errors, it streams out the error messages to stderr
It returns the same exit code that jq returned

https://gist.github.com/simonw/484d878877f53537f38e48a7a3845df2

cat big-json.json |  llm jq 'just the profile pics'

Released to PyPI: https://pypi.org/project/llm-jq/


Need a better "test while hacking" setup

We want a better "test while coding" setup than "compile everything by hand, run it with handcrafted configs, and hope you got everything right." For this, I think the answer is going to be Vagrant and Draft.
Vagrant deploys MetalLB by default, with a configuration that fully peers it with Bird+Quagga, so we can test against 2 implementations.
Build Draft packs and Helm configs for each MetalLB component, so that you can do fast iteration on a real cluster. e.g. recompile bgp-speaker, Draft automatically pushes the updated binary into the Vagrant k8s cluster.

The vagrant setup needs to be dual stack, for v4+v6 support, and probably needs to enable a bunch of k8s alpha features (at the very least the ipv6 support in k8s 1.9). Ideally, we should be able to repurpose the Vagrant setup as an integration test harness as well.

 So, for now, we're just going to have a Fabric configuration to help manage minikube, and that will cover a bunch of use cases. My hope is that minikube adds some multi-node support before I need to expand the fabric scripts.


Type "undefined" cannot be used as an index type

I was trying this out and got the title's error.
Because Astro uses undefined for the root, the first object could not be accessed using pages[slug]. If Astro were to use "undefined" instead, no problem would have occurred with this piece of code.
To fix this problem I had to use an if/else to check whether the type of slug was undefined and get the root page from the pages object. Then I was still getting this error for pages[slug]
Element implicitly has an 'any' type because expression of type 'string | number' can't be used to index type '{ undefined: { title: string; text: string; }; products: { title: string; text: string; }; "products/astro-handbook": { title: string; text: string; }; }'.
  No index signature with a parameter of type 'string' was found on type '{ undefined: { title: string; text: string; }; products: { title: string; text: string; }; "products/astro-handbook": { title: string; text: string; };

which could only be solved by instantiating the types for both page and pages.

What kind of changes does this PR include?

Minor content fixes (broken links, typos, etc.)
New or updated content
Translated content
Changes to the docs site code
Something else!

Description

Closes #
What does this PR change? Give us a brief description.
Did you change something visual? A before/after screenshot can be helpful.

My bad. I didn't see the text below my description.
What kind of changes does this PR include?

Minor content fixes (error in code example)

Description

Closes nothing.
What does this PR change? Read above
Did you change something visual? No.

@sarah11918 I see the PR is waiting approval for the execution of a check.
What should I do?

Hi @Astisme! You just have to wait! We have not yet reviewed this contribution. When we review it, then we'll leave comments and be sure to let you know if there's anything further that needs to be done, or if we need to ask you questions. Thanks for your patience!

Let’s go with the array version — doesn’t require any TS trickery and like you say, is equivalent to the example above. Thanks @Astisme!


chore: release main

:robot: I have created a release beep boop
stdlib: 1.0.8
1.0.8 (2023-12-23)
Bug Fixes

update renderer (f6808c9)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/pavophilip/react-shader-fiber/releases/tag/stdlib-v1.0.8 :sunflower:


Version information on projects that use nom.

Hello,
I was wondering if this would be a welcome PR. The readme.md mentions a list of "Parsers written with nom" These are written with many different versions of nom.  I (as a user) would find it useful if I could know which parsers are written in which nom release so that I can browse the projects to learn from them.
I want to modify readme.md , mention the versions specified from the projects cargo.toml that each of the projects use and submit a pull request in a branch.
Like this
Text file formats:
Ceph Crush (nom = "^2.0")
Cronenberg (nom = "4.0.0-alpha2")
I thought I'd ask before I go to the effort.
Thanks in advance.

right, that would be useful (especially when people want examples for specific versions)


feature request: better documentation

Thank you for creating this library! I have used it many times and it's really nice.
That being said I think the documentation could use a bit of work. I still don't understand the order of classNames applied and when to use which. I usually stick to onEnter/ onExit... methods, but it's also unclear what "done" method does. When I get it working, it takes a ton of trial and error
Based on my experience when "done' is called in the onExit phase, that's when the exiting element is actually removed, unless "done" from the onEnter phase called first (race condition of animations), then "done" from onEnter phase is what removes exiting element
It would be nice if the lib had some JSDOC comments for ease of reference.
In fact, I think most of solid libraries could use JSDOC and I think there even might be a way to generate frontend documentation from JSDOC comments to keep then in sync

For me, a few more examples of how it's intended to be used would be great.
How do you use onEnter/ onExit exactly, for example?
Maybe we should start an examples page somewhere.


Allow A/B tests to run as just aggretator of local engine benchmarks

Add --ab-local-engine-only flag to change A/B benchmark aggregate behavior to instead run the number of tasks specified with the local engine only, not the default engine.  This is useful when you are trying to get average and noise results for a particular engine branch, without needing the default engine every time you change the engine.
Fixes https://github.com/flutter/flutter/issues/143770
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] I followed the breaking change policy and added Data Driven Fixes where supported.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@hellohuanlin it's not the most elegant thing, but do you want to try this out and see if it works?

Currently having some crash with Admob dependency, but I think it's just my local machine. Will post back I got it addressed.
[!] CocoaPods could not find compatible versions for pod "Google-Mobile-Ads-SDK":
  In snapshot (Podfile.lock):
    Google-Mobile-Ads-SDK (= 10.11.0, ~> 10.11.0)

  In Podfile:
    google_mobile_ads (from `.symlinks/plugins/google_mobile_ads/ios`) was resolved to 1.0.0, which depends on
      Google-Mobile-Ads-SDK (~> 11.2.0)

Specs satisfying the `Google-Mobile-Ads-SDK (= 10.11.0, ~> 10.11.0), Google-Mobile-Ads-SDK (~> 11.2.0)` dependency were found, but they required a higher minimum deployment target.


Using _ or \n with a collection: End-of-lines immediately following another character from the collection don't match

Execute %s/\_[a-z]//gn or %s/[a-z\n]//gn (description at :help /[\n]) on this text:

a1

b1

Gvim outputs 5 matches on 3 lines as expected, the matches are a, b and the 3 EOLs.

Change the text to

a

b1

The output becomes 4 matches on 3 lines, the EOL after a didn't count.
Gvim: gvim_8.1.0327_x86.zip

I cannot reproduce this on Linux with gvim 8.1.327 (Big 64-bit) with GTK2 GUI. For me, even the second case gives "5 changes on 3 lines" (with both variants of the :s[ubstitute] command).
Best regards,
Tony.

When starting Vim as vim --clean I see the problem.
Here is the output of :set in that case:
--- Options ---
  display=truncate  noloadplugins         scroll=31           ttymouse=xterm2
  helplang=en       nomodeline            scrolloff=5         viminfofile=NONE
  history=200         modified            showcmd             wildmenu
  incsearch           mouse=a             ttimeout
  langnoremap         nrformats=bin,hex   ttimeoutlen=100
nolangremap           ruler               ttyfast
  backspace=indent,eol,start
  fileencodings=ucs-bom,utf-8,default,latin1

and here it is with my usual vimrc, where the problem doesn't appear:
--- Options ---
  autoindent          helpheight=9999     mouse=a             smartindent
  autowriteall        helplang=en         mousemodel=popup    splitbelow
  bomb                history=200         nrformats=          switchbuf=useopen
  cmdheight=2         hlsearch            regexpengine=1      synmaxcol=0
  cscoperelative      ignorecase          ruler               timeoutlen=5000
  cscopeverbose       incsearch           scroll=26           ttimeout
  cursorcolumn      nojoinspaces          scrolloff=6         ttimeoutlen=250
  cursorline          keymodel=startsel   showcmd             verbose=1
  delcombine          langnoremap         showtabline=2       wildmenu
  display=lastline  nolangremap           sidescroll=1        window=66
noequalalways         laststatus=2        sidescrolloff=1     winheight=9999
  errorbells          list                smartcase           winminheight=0
  backspace=indent,eol,start
  clipboard=exclude:cons\|linux
  cscopequickfix=s-,c-,d-,i-,t-,e-
  fileencoding=utf-8
  fileencodings=ucs-bom,utf-8,latin1
  guifont=Bitstream Vera Sans Mono 8
  guioptions=!cgimrLtTp
  listchars=eol:¶,tab:|_,extends:>,precedes:<,conceal:*,nbsp:·
  previewheight=9999
  runtimepath=~/.vim,/usr/share/vim/vimfiles,/usr/local/share/vim/vim81,/usr/local/share/vim/vim81/pack/dist/opt/matchit,/usr/share/vim/vimfiles/after,~/.vim/after
  selectmode=mouse,key
  statusline=%<%f %h%m%r%=%k[%{(&fenc==''?&enc:&fenc)}%{(&bomb?',BOM':'')}][U+%04B] %-14.(%l,%c%V%) %P
  tabline=%!MyTabLine()
  termencoding=utf-8
  toolbariconsize=tiny
  viminfo='1000,!,%,c,r/mnt/
  whichwrap=b,s,<,>,[,]
  wildmode=longest:full,full

I wonder which of these settings makes the problem disappear.
Best regards,
Tony.

The most relevant option is set regexpengine=1, and indeed I see a difference between the two.

I believe this is correct.  When the line is "a" then both [a-z] and [\n] match in the same position, thus only count as one match.

I believe this is correct.

Shouldn't it work the same for both regexpengine=1 and regexpengine=2 then?
I confirm that the 'regexpengine' option / \%#= modifier (:help two-engines), as andymass noted, makes difference for case 2:
%s/\%#=1\_[a-z]//gn outputs 5 matches on 3 lines,
%s/\%#=2\_[a-z]//gn outputs 4 matches on 3 lines.

If instead of replacing by nothing with the n flag (do not replace, but count the matches) we replaced by, let's say, a dash, I would expect :%s/[a-z\n]/-/g to act on
a

b1

by replacing it by
----1-

i.e. replace the first line by -- and join it to the next one, replace the empty line by a dash and join it to the one after that, and replace the b1 line by -1-. That's 5 dashes, and that is what the "old" engine replaces it by: even in the first line, the EOL comes after the letter a, and indeed the 'hlsearch' highlight affects not only the alphabetic letters but also the ends-of-lines, which are displayed if 'list' is on.


Changes to the way we define SLOs

Is your feature request related to a problem? Please describe.
@gtfisher and I will be working on the general UX for the slo init and slo report commands in the coming days.
A first thing that surfaced from a discussion with @Lawouach is the way we currently define an SLO, by asking two questions:

what is your error budget?
what is your latency objective

We have the feeling those are two different SLOs, and we should ask users whether they want to declare a latency SLO or an availability SLO.
We also feel that rather than asking for an error budget, we might ask for an objective (99.9% instead of 0.01%).
Describe the solution you'd like
This would change what the reliably.yaml file looks like.
Here's a first draft for discussion:
slos:
- name: Service A latency
  type: latency
  objective: 400ms
  slis:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  - id: alpha1-e3d83fa0/Google Cloud Load Balancers/reliablyadvicealpha1
    provider: gcp
  dependencies: []
- name: Service A availability
  type: availability
  objective: 99.9
  slis:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  dependencies: []
- name: Service B availability
  type: availability
  objective: 99.95
  sli:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  dependencies: []

What do you think @daidokoro @dmartin35 @mick-roper @xaah ?

Thanks @mperrien
To offer more details, as I haven't coded the features, I ran slo init command and felt it didn't appeal, nor make it very slick to define slo. It was hidden underneath the questions somehow.
The exchange I am looking goes like this:
·```
$ reliably slo init
Hello, what kind SLO would like to configure today?

latency
availability

(Picking latency)
What is a good latency for your service (in ms)? 100
Your service should respond under 100ms for how much of the month (as a %)? 99 <-- here it would be fantastic to display in bracket the calculated time per month it is tolerated to go above that target: [3mn 25s / month above 100ms]
As summary, here is the SLO as you configured it:
You expect a latency below 100ms for 99%/month which means you tolerate 3mn25s of request slower than 100ms per month.
Now that you declared this SLO, could you tell us how to measure it?
What is tyhe cloud provider you are running this service on?

aws
gcp

....

The rest is somewhat similar to our current set of questions.

@mperrien @gtfisher  @Lawouach
I agree with the general thought of tweaking our current slo init and reporting process in this regard.
I would say that comparing to the examples mentioned above, I would structure it slightly differently though:
In the latency example I would gather this info from the user (with default values to help):

Target Latency (what a good request looks like for the user): e.g. 300ms
Target Percentage of "good" requests: e.g. 99%
Time Window: e.g. 1 month (allow this as a variable)

This would mean a calculation like this:
SLI = (good_requests/all_requests) * 100
SLO = 99%
Remaining Error Budget = ((good_requests_last_month/all_requests_last_month) * 100) - 99
or in other words:
Remaining Error Budget = SLI_30days - SLO

This gives us a Remaining Error Budget which is for example 1% if no budget has been used. To take it a step further, for usability (this is common and recommended in main SRE model), is to just divide the Remaining EB by the Total EB:
Remaining Error Budget Percentage = (0.1/0.1) * 100 = 100%

So in this example the user would be requested three variables (with default options). Then, for an SLO report, the user would get something like:
SLI: (requests < 300ms) / total requests
SLO: 99%
Remaining Error Budget: 100%

The example I'm giving is just conceptual, not saying the wording I chose is the best.

@reliablyhq/developers the change above will be impacting the exisiting format of the manifest, I would like to make sure everyone is aware of it and raise their concern asap please.

I came here to comment with pretty much the same thing Sylvain and Xavier said, so I'm just updating the example YAML file.
slos:
- name: Service A latency
  type: latency
  threshold: 400ms
  objective: 99
  slis:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  - id: alpha1-e3d83fa0/Google Cloud Load Balancers/reliablyadvicealpha1
    provider: gcp
  dependencies: []
- name: Service A availability
  type: availability
  objective: 99.9
  slis:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  dependencies: []
- name: Service B availability
  type: availability
  objective: 99.95
  sli:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  dependencies: []

I'm just wondering if we should introduce the time window right now, or as a second step, immediately after we have this.

Let's do in two distinct issues with different commits indeed but that can be part of the same release if we feel it makes the story more complete.

We will also need to add, later, the unique opaque identifier of a SLO for building relationships.

I think the structure is fine, I just got a bit confused with the latency threshold & objective.
For aws for instance, we curently calculate the 99 percentile of all requests under the user-given latency threshold.
is that what's intended with the objective & threshold values ?
as a side note, a percentile value can only be NN.NN two digits before & after the comma
I agree to leave the time window in a separate task

Update from our call:
slo:
- name: Service A latency
  type: latency
  threshold: 400ms
  objective: 99
  sli:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  - id: alpha1-e3d83fa0/Google Cloud Load Balancers/reliablyadvicealpha1
    provider: gcp
  dependencies: []
- name: Service A availability
  type: availability
  objective: 99.9
  sli:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  dependencies: []
- name: Service B availability
  type: availability
  objective: 99.95
  sli:
  - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
    provider: aws
  dependencies: []

@dmartin35 So just to clarify with the latency question.
Just to mention first, what I'm suggesting is to standardize (where possible) what SLIs, SLOs, Error Budgets mean, in the most popular/standard way. So, we have:
SLI: (good_situations / all_situations) * 100
SLO: target SLI
Remaining Error Budget: in a time window, (100% - current_SLI)
So for the latency implementation I'm suggesting, for example on AWS:
a: CLI request -> count of requests with latencies under 300ms in last 30 days-> AWS
b: CLI request -> count of all requests in last 30 days -> AWS
a/b = SLI
The SLO can then be any percentage the user defines.
The Error Budget then can be a standard value across different SLOs: 100% - SLI in a time window.
If we keep current version of Latency, we are mixing terminology between what an SLI, SLO and Error Budget looks like. This would potentially be more confusing in the long term, especially as we add more SLOs. In addition, with the previous way, to modify the percentile, as you mentioned, we only have room for NN.NN on AWS, and just a few values on GCP (99, 95).

@mperrien @Lawouach Just to make sure we're on the same page, so we would eventually map dependencies for each SLO, as opposed to each service in general?

@xaah I think so, because our top-level items are SLOs.
I understand that declaring dependencies by service makes (more) sense, but that would require us to have "service" as a first-level item, and then 1-n SLOs for each service.
The questions would then be:

What is the name the service? my-service
Do you want to declare a SLO for this service? Y
[various questions]
Do you want to declare another SLO? n
Do you want to add another service?

Benefits for this approach:

things might be better organized
easier dependencies

Drawbacks for this approach:

If you forgot to declare an SLO for a service and moved to the next service, you're doomed.

Workaround:

Manually edit the file to add the forgotten SLO.

WDYT @Lawouach?

Could I see what the manifest look like then please?
Also, I'm guessing the golang libs allow you to navigate back if you wanted to.

@Lawouach
I guess in this case the manifest would look something like this:
service:
- name: Service A
  slo:
  - name: Service A latency
    type: latency
    threshold: 400ms
    objective: 99
    sli:
    - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
      provider: aws
    - id: alpha1-e3d83fa0/Google Cloud Load Balancers/reliablyadvicealpha1
      provider: gcp
  - name: Service A availability
    type: availability
    objective: 99.9
    sli:
    - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
      provider: aws
  dependencies: []
- name: Service B
  slo:
  - name: Service B availability
    type: availability
    objective: 99.9
    sli:
    - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
      provider: aws
  dependencies: []

That's a list of services, each with their SLOs and a dependencies array, instead of a list of SLOs, each with their dependencies.
I'm not sure what you mean with "navigate back"?

If the user forgot a slo, we can always let them edit back.

What are dependencies in that context?

@Lawouach I think the service dependencies, as in, other services.

Following on from chats with @mick-roper and @mperrien, a few points came up, but for the sake of isolating this issue to a distinct set of changes, the above manifest works from my perspective, except possibly one thought which is that under "sli" are the resources:
    sli:
    - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
      provider: aws

I would consider changing that maybe to "resources" and then having a separate sli field that has a short description of the sli in question:
    sli: latency-threshold
    resources:
   - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
     provider: aws

However if that requires more discussion we could see as separate issue and go with proposed manifest.

I think this is a bit confusing.
The term resources is not helpful here. At least, I'd rather do it differently:
 sli:
    - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
      type: resource
      provider: aws

This would allow us to have something like this someday:
 sli:
    - id: arn:912823331559:apigateway:eu-west-3::/apis/8vdt1fhj3f
      type: resource
      provider: aws
    - type: bash
      cmd: call something

wdyt?

@Lawouach my rationale was that sli is just a formula in reality so if we add things below it that are resources and other aspects might be confusing, however if my proposal is also confusing then we can leave that as is for now.
Another thing is what if we changed the "slo" and the "objective" fields. Semantically, seems having an objective under a service level objective might be confusing. Maybe:
service:
- name: Service A
  service-levels:
  - name: Service A latency
    type: latency
    threshold: 400ms
    slo: 99
    sli:

Agreed on renaming objective too. Threshold is fine by me.

I'm a bit lost in the usage of singular/plural fields.

service is singular, while multiple services can be declared
service-levels is plural
sli is singular (but I understand it might be different, as it's an acronym)
dependencies is plural

Maybe we need some consistency there, don't we?

@mperrien
I was thinking we'd go for singular if there is only meant to be one. If that is the case then we should just pluralize "service" there. SLI has a collection under it, but there is one SLI for each SLO in reality, and we had said not to pluralize those acronyms anyway, so maybe we just pluralize to "services"? Unless there is a convention I'm missing.

Let's use:

services
slo/sli
dependencies

@xaah @Lawouach
I feel that threshold is not very extensible, as a shared SL parameters, for any type
I was thinking of having a struct that can be empty / optional, that would allow to have different properties for a given type
similar to what GCP is doing:
We could have something like criteria
service:
- name: Service A
  service-levels:
  - name: Service A latency
    type: latency
    criteria:
        threshold: 400ms
    slo: 99
    ...
  - name: Service A availability
    type: availability
    [criteria:]
    slo: 95
    ...

that would allow to have later more different criteria applying to how to compute the SLI, ie we could have a range min/max of threshold, a list of http status codes, ...
  criteria:
    min: 120ms
    max: 250ms

  criteria:
    statusCodes: 200, 400, 403

wdyt? this could also be logged as another issue, being an enhancement to be done later (once we fixed the metrics gcp/aws api computation)

Makes sense to me, this is clean.

@dmartin35 yeah that's a great solution


[EDA] Prevent Deletion of Account Record  if There are Associated Child Records

Critical Changes
Changes
Updates to Ensure Data Integrity
We've expanded the functionality that prevents the deletion of certain records when they have related child records. Now, the following record types cannot be deleted if they have the following related records.

Account records with related Address, Affiliation, Attribute (Agency record type), Course, Contact (Household and Business Org record type), Course Connection, Facility, Program Enrollment, Program Plan, Term, or Time Block records.
Plan requirement records with related Plan Requirement records.
Term records with related Term records.

This functionality is for internal use only and is enabled in Hierarchy Custom Settings for these objects (except Term) by default in new and existing orgs.
If you've disabled any of the object _CannotDelete_TDTM classes for these objects in an existing org, they will remain disabled even if they are enabled in Hierarchy Custom Settings.
Note: We strongly recommend that EDA Admins don't manage Hierarchy Custom Settings directly and, instead, use the EDA Settings UI, which will be provided in an upcoming release.
Issues Closed
Closes #1121
New Metadata
Deleted Metadata
Testing Notes
https://salesforce.quip.com/uDeQAAarQYHZ#EGQACAv00IY

Passes QA - Will merge once block is lifted.

Merging


fix for VFS-662: SftpFileSystem has Thread-safe issue about idleChannel

ref: https://issues.apache.org/jira/browse/VFS-662

Thank you for your patch. Can you add comments to your code to explain why this is a problem and how it is fixed? Also, can you explain if it is really better to synchronize these blocks instead of the whole method? IOW, are there other race conditions that would be addressed by synchronizing the method?

It's suit for my RT env.
synchronize  code only if it need, so I not sync method:)

@qxo ,
I looked at this today and was reminded that DCL is broken: https://www.javaworld.com/article/2074979/double-checked-locking--clever--but-broken.html
I will consider this some more but there are two alternatives: synchronize getChannel() and putChannel() or, more simply, use eager initialization of the idleChannel ivar.
To be continued...

@garydgregory - DCL has not been broken for a long time now as long as you use a volatile instance variable. :)

Hi All:
Combining DCL and volatile still does not get it right in the current state of this patch since the Session is not volatile. While I appreciate the pragmatic approach this patch takes, the fact that it works for now for @qxo is not the complete solution IMO.
Would it not be simpler and therefore less bug prone and easier to maintain to synchronize the get and put methods? Granted this is more expensive. Providing finer grain locking as this patch attempts needs to account for all cases, which would be nice to have.
Thoughts?
@qxo : May you rebase this patch on master please?

@garydgregory - I'm not familiar with the specific code here but the diff that I see here is totally safe - idleChannel is volatile and it's the only variable on which DCL is performed. This is safe since Java 1.5. Why do you think session also has to be?

I'm just going to raise my hand and say from what I've seen,  I didn't think VFS was thread safe.  Even though some bugs like this have been fixed from time to time, in the main I don't think it is is it?

@ottobackwards - well, I've been using VFS for a while now in a multi-threaded environment and it mostly works fine. There are some issues here and there but I think they will be resolved one by one and all will be good in the end.

I'll second @boris-petrov's comment. We've been patching problems here and there when they pop up. I'm sure there are plenty of MT issues here and there. YMMV with each provider. The core probably has it's own issues too.

@garydgregory, @ottobackwards - in that regards, please take a look at this PR which is by @abashev. In his S3 provider he uses a fork of VFS in which he claims he's fixed a number of concurrency issues. He wants to merge them in the upstream repo (this one) so please take a look at the PR I linked (and accept it/comment on it) so he can continue on with the real issues he thinks he's resolved.

Hi All:
Back to https://github.com/apache/commons-vfs/pull/36#issuecomment-487393002:
The session ivar is not final and gets written in the private method ensureSession(), so it is possible for it to get initialized multiple times in a race-condition. The method getChannel() can end up writing to both session and idleChanne, so both values need to be published to other threads. The simplest way to do this is to synchronize the getChannel() method.
Thoughts?

@garydgregory, @ottobackwards - in that regards, please take a look at this PR which is by @abashev. In his S3 provider he uses a fork of VFS in which he claims he's fixed a number of concurrency issues. He wants to merge them in the upstream repo (this one) so please take a look at the PR I linked (and accept it/comment on it) so he can continue on with the real issues he thinks he's resolved.

I do not see anything in that PR about concurrency. That PR just fiddles with POMs. What am I missing?

The session ivar is not final and gets written in the private method ensureSession(), so it is possible for it to get initialized multiple times in a race-condition. The method getChannel() can end up writing to both session and idleChanne, so both values need to be published to other threads. The simplest way to do this is to synchronize the getChannel() method.
Thoughts?

Well, in that case there is still a race-condition because of the executeCommand method which also calls ensureSession so I guess it also should be synchronized...?

I do not see anything in that PR about concurrency. That PR just fiddles with POMs. What am I missing?

This PR has nothing to do with concurrency but as I said @abashev's fork of VFS has some fixes in it which he wants to merge - and this PR is just the first one of a few to come as far as I understand.

Well, let just deal with SftpFileSystem here... we can await for other PRs to come in...
Gary

So, in the DCL+volatile dept, I did this:
https://github.com/apache/commons-vfs/blob/master/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileSystem.java#L220-L242
In this case, a single ivar is in play in one place.

This PR has nothing to do with concurrency but as I said @abashev's fork of VFS has some fixes in it which he wants to merge - and this PR is just the first one of a few to come as far as I understand.

@garydgregory Yes, it will be my first submission into commons-vfs project and I want to understand how it works and the whole process. It looks like pom file was changed so I did rebase on latest master for this one https://github.com/apache/commons-vfs/pull/54 and add one more to fix Java 11 builds https://github.com/apache/commons-vfs/pull/61

BTW, welcome aboard the Apache Commons project :-)


Add persistable context tests for function node

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)

Proposed changes

Current unit test for function node does not include tests for new persistable context.
This PR add tests for persistable context.
Checklist

[x] I have read the contribution guidelines
[ ] For non-bugfix PRs, I have discussed this change on the mailing list/slack team.
[x] I have run grunt to verify the unit tests pass
[x] I have added suitable unit tests to cover the new/changed functionality

Coverage decreased (-0.02%) to 75.071% when pulling cae7949a486ae491ae83a422e58a1adda58beb2d on node-red-hitachi:0.19-add-tests-for-function-node into be58b614e153b579c3591164a1dcf138158c8f88 on node-red:0.19.


Round is undefined when calling inWords() with ordinary_share_subscription, series_aa_sg

Have not determined whether this is a template issue or whether the security type issued by both agreements are breaking something somewhere.
Logs stop here for both templates:
[16-11-21 19:59:23:243 PST] templates fillTemplate: starting ordinary_share_subscription (01 - Ordinary Share Subscription Agreement for Mister Moneybags<EMAIL_ADDRESS>All associated document XML except for the investment agreement itself will generate in both instances.

successfully reproduced! Running against a fresh copy of the Demo Master, using the Ordinary Shares Subscription Agreement template, under Tools / Script Editor, the Execution log shows:

<schedule_header xname="schedule_shareholding">Shareholding Structure</schedule_header>

<schedule_parts>Existing Shareholders</schedule_parts>
]) [0 seconds]
[16-11-25 08:09:14:227 PST] Execution failed: TypeError: Cannot call method "inWords" of undefined. (line 421, file "captable", project "legaleseMain") [14.571 seconds total runtime]

ok, i have solved this for the ordinary_share_subscription template but i have not solved it for the other sg aa template – will need to look at that later.
i think we need to deprecate the data.parties.shareholder approach everywhere, and access via round.() instead. I have started to update the documentation in the google-apps readme as well.

Should I assume that wherever data.parties.shareholder is called to list current members of the company, the members are equivalent to old investors? If so, I'll replace the rest of the occurrences with getOldInvestors()


(PDB-1494) Update release notes for 2.3.4.

This updates our release notes for the 2.3.4 release.

Taking a look.

@wkalt pending the few bits we discussed, looks good to me.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://jenkins.puppetlabs.com/job/platform_puppetdb_intn-sys_pr/1173/

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://jenkins.puppetlabs.com/job/platform_puppetdb_intn-sys_pr/1171/

@rbrw thanks, updated

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://jenkins.puppetlabs.com/job/platform_puppetdb_intn-sys_pr/1174/

This should not be merged until it's changed to include the deprecation PRs currently in flight -- url-prefix and event counts / aggregate-event-counts.


Update d.py and enabled priveleged gateway intents

Discord rolled out a new system to lighten the load on their api, this is called intents and they just recently dropped support for the old system
Docs: https://discordpy.readthedocs.io/en/latest/intents.html#

lgtm


DSpace UI Issue

Not Home Banner Image and Login panel the page https://repository.myuni.edu.
The page is not fully loaded https://repository.myuni.edu/home
in Browser Console:
No _links section found at https://repository.myuni.edu/server/api
hal-endpoint.service.ts:42

That likely means your rest sever can't be reached. What do you see if you go to the url in the "No _links section found" error message?

Closing this ticket as answered.  As this same "No _links section found" error has been encountered by several people on lists & in Slack, I've added it to our "Common Installation Issues" at https://wiki.lyrasis.org/display/DSDOC7x/Installing+DSpace#InstallingDSpace-"No_linkssectionfoundat..."errorfromUserInterface


Revise the general control shortcuts

New Shortcuts:

[ ] Canvas Panning: Change to use RMB drag (currently LMB drag)
[ ] Zoom (In/Out): change to use only Scroll Wheel (currently Shift + Scroll Wheel)
[ ] Marquee Selection: change to use LMB drag (currently Ctrl + LMB drag)
[ ] Undo Keystroke: set this to be Ctrl + Z
[ ] Redo Keystroke: set this to be Ctrl + Y

PS: This can be for sitSim only or we can change it in nodelink as well. however, these shortcuts are typical shortcuts with 3D designers, etc. Seems more common
Ref: https://docs.google.com/document/d/1sAt_t-QBuXoG0FcEr0oT3Zc92PxQ5S4w5kxWLdm2aFE/edit?usp=sharing

Mohsen you can ask Alireza for help. He seems already has some experiences.


Discord Messages over 2000 Charaters Fail

The discord client kicks out an error for lengthy responses to things like "write me a contract". These types of responses should provide a link with the full output, summarize the response in a shorter total length, or break the response up into multiple Discord messages.
Example: https://stackoverflow.com/questions/60686321/discord-js-content-must-be-2000-or-fewer-in-length
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/discord/client.py", line 441, in _run_event
    await coro(*args, **kwargs)
  File "/root/DiscordianAI/bot.py", line 312, in on_message
    await message.channel.send(response)
  File "/usr/local/lib/python3.10/dist-packages/discord/abc.py", line 1561, in send
    data = await state.http.send_message(channel.id, params=params)
  File "/usr/local/lib/python3.10/dist-packages/discord/http.py", line 745, in request
    raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In content: Must be 2000 or fewer in length.```

The message splitting is working but it will split blocks of code in the middle of their backticks, which messes up any readability for the rest of the message and the code.


[GSSoC 23'] Flipkart Scraper

Aim

I wrote this script to help in my project product-matching to scrape products from flipkart, it may be helpful to others for various use cases.

Details

added support for easy product input.
SQLite db for data storage.
selenium backup support in case rate-limiting or blocking happens while scraping.
Multi threading support for faster scraping.
scrape multi parameters of a product.

hey @shubham725809 i am already working on this issue as it was opened by me i am waiting for @avinashkranjan to assign it to me.

I've completed a project on collecting weather data, thus I am familiar with the various libraries used in it. I hope that you consider me for this position, and I look forward to contributing my all to the endeavor. Kindly assign me this project.

Go Ahead @paritoshtripathi935

@avinashkranjan please can you have a look on pr?

@avinashkranjan please can you have a look on pr?

Kindly Mention the Issue No In PR.


[Bug]

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
In my model_b.sql I have something like {% set val_list = dbt_utils.get_column_values(table=ref('model_a'), column='VAL') %}. I try to run a dbt build using a defer flag. model_a does not exist in the the db & schema that I am building in, yet it still will not use the db & schema I am telling it to defer to. When I run dbt ls -s 1+model_b, dbt does recognize that model_a is upstream and being referred to.
Expected Behavior
In the above example, the dbt_utils macro should use the defer db & schema to get the column values from model_a.
Steps To Reproduce
I have model_b like such
{% set val_list = dbt_utils.get_column_values(table=ref('model_a'), column='VAL') %}

{% for val in val_list %}
select
      col_1
    , null as col_2
    , date_trunc('month', col_3) as col_3
    , '{{ val }}' as val
from {{ ref('model_ab') }}
{%- endfor -%}

Then run dbt run -s model_b+1 in the dev environment with a defer to the prod environment.
Relevant log output
Compilation Error in model model_b (models/model_b.sql)
    In get_column_values(): relation DEV.SCHEMA.MODEL_A does not exist and no default value was provided.

Environment
- dbt: 1.8.7

Which database adapter are you using with dbt?
snowflake
Additional Context
No response

Thanks for reporting this @emilee-jurkowski !
Did you happen to try something like this?
{% set model_reference = ref('model_a') %}
{% set val_list = dbt_utils.get_column_values(table=model_reference, column='VAL') %}

I didn't try it myself, but curious if it behaves different or the same as what you are seeing with this:
{% set val_list = dbt_utils.get_column_values(table=ref('model_a'), column='VAL') %}

@dbeatty10 I did try something like that and it appears to have the same issue

@dbeatty10 I did some testing and realized that I was wrong about what the issue is. The dbt build is honoring the defer flag with the macro like you showed above. We are actually running into an issue when trying to execute dbt docs generate --target dev (the log output I listed above). I tried utilizing the defer flag with the docs generate command, like so dbt docs generate --defer --state /Users/ejurkowski/prod-manifest --target dev, and it completed without error. I just want to make sure that this is the correct action to take as I could not find any documentation on the site saying you can/should use the defer flag with docs generate.

@emilee-jurkowski I'm not quite following your example. Could you share the following?

example files
example commands
actual output (either from logs/dbt.log, target directory, or screenshots of our documentation website)
expected output that differs from actual output (please explain)

If you can provide those pieces, then that will help me assess if dbt is operating differently than it is designed.

We have model_b that references model_a in a macro and model_ab in the query like so.

{% set val_list = dbt_utils.get_column_values(table=ref('model_a'), column='VAL') %}
{% for val in val_list %}
select
      col_1
    , null as col_2
    , date_trunc('month', col_3) as col_3
    , '{{ val }}' as val
from {{ ref('model_ab') }}
{%- endfor -%}

We have a github workflow in which we are utilizing pre-commit. For some of our pre-commit checks we need to produce a dbt manifest and catalog for it to use, so we are running dbt docs generate --target dev.
When we have the above model and run the docs generate command for dev, we get the below error. For context, we are running with --target dev because we do not have everything enabled for PROD. In this example, all 3 models are enabled for DEV and PROD, and have been built in PROD.

Compilation Error in model model_b (models/model_b.sql)
    In get_column_values(): relation DEV.SCHEMA.MODEL_A does not exist and no default value was provided.

We are expecting the docs generate command to pass so that we can run our pre-commit checks.

If I run dbt docs generate --defer --state /Users/ejurkowski/prod-manifest --target dev instead of dbt docs generate --target dev, it does pass and we are able to run the pre-commit checks. I would like to make sure that running docs generate with a defer flag makes sense, and is correct usage as there is no documentation on running the docs generate command with the defer flag.

I would like to make sure that running docs generate with a defer flag makes sense, and is correct usage as there is no documentation on running the docs generate command with the defer flag.

@emilee-jurkowski Yeah, running docs generate with a --defer flag is totally supported, and it looks like the perfect candidate for your use-case here! See below for a brief history of when it was first added.
I'm going to close this as resolved since we got to the bottom of things and dbt is behaving as we expect. If you'd like to see any changes/additions to the dbt product documentation, you can reach out to our Docs team by opening an issue in the  docs.getdbt.com repo.
Abbreviated history of --defer for docs generate
dbt-core 1.3.0 - October 12, 2022

Add --defer flag to dbt compile & dbt docs generate (#4110 4514)

dbt-core 1.4.0 - January 25, 2023

fix docs generate --defer by adding defer_to_manifest to before_run (#6488)


The subject hierarchy should be clearer

In the subject drop down you have the subjects sorted as the Destatis-Systematik der Fächergruppen, Studienbereiche und Studienfächer. It looks like that the elements on the second level of the hierarchy are slightly indented. I think the interface would improve if you could give an indication on which level every element is. Especially if you scrolled a bit down I find it hard to identify the levels of items.

Extension Version: 0.0.1
Firefox Version: 72.0.1
OS: macOS

The extension actually only wraps https://skohub.io/editor/, so styles should be fixed here.


Safari  input type="date" issue

Is there any solution for AMPHtml with input type="date" known issue on Safari?

Not yet - feel free to chime in on the related issue at ampproject/amphtml


Consider not requiring authentication to view dashboards?

Not sure how much a big deal this is. However, for reference:
Disable Authentication #2335

Closing for now as this doesn't seem to be an issue for folks.


Clean old plugins and unused tools from the WP instance.

Currently cleaning old plugins and framework from ASRG.io and checking for potential conflicts between those that are live. Will scan through each also to check if live and being updated regularly


An error has occured

Hey great skill thanks!
All commands result in an error has ocurred!
Like:
Hey mycroft, play drake on spotify
Only hey mycroft what devices are available, result in actual output.
Could anyone help me out?

Hi! What platform are you on?
Also in this case it would be helpful if you could check the mycroft-skills.log file for the error information. (on picroft/mark-1 in /var/log/mycroft-skills.log on git installations in mycroft-core/scripts/mycroft-skills.log)

I'm sorry, should have stated my OS and logs of course.
OS: Debian/Ubuntu (Deepin OS)
Logs:
cat scripts/logs/mycroft-skills.log | grep spotify
16:50:58.460 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
16:50:58.557 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/currently-playing HTTP/1.1" 204 0
16:51:10.381 - git.cmd - DEBUG - Popen(['git', 'config', 'remote.origin.url'], cwd=/opt/mycroft/skills/mycroft-spotify.forslund, universal_newlines=False, shell=None)
16:51:20.856 - mycroft.skills.core:load_skill:105 - INFO - ATTEMPTING TO LOAD SKILL: mycroft-spotify.forslund with ID mycroft-spotify.forslund
16:51:23.466 - SKILLS - DEBUG - {"context": {"ident": "1526482280.98677338774778345797868604", "client_name": "mycroft_listener"}, "data": {"utterances": ["what spotify devices are available"], "session": "c970d1cd-5908-4807-950c-87b2f6c1c45e", "lang": "en-US"}, "type": "recognizer_loop:utterance"}
16:51:23.478 - SKILLS - DEBUG - {"data": {"utterance": "what spotify devices are available", "lang": "en-US"}, "context": {"client_name": "mycroft_listener", "ident": "1526482280.98677338774778345797868604"}, "type": "intent_failure"}
16:51:23.480 - mycroft.skills.padatious_service:handle_fallback:107 - DEBUG - Padatious fallback attempt: what spotify devices are available
16:51:24.217 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundSearch", "start": "search"}, "context": null, "type": "register_vocab"}
16:51:24.221 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundSearch", "start": "look for"}, "context": null, "type": "register_vocab"}
16:51:24.224 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundDevice", "start": "device"}, "context": null, "type": "register_vocab"}
16:51:24.227 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundDevice", "start": "unit"}, "context": null, "type": "register_vocab"}
16:51:24.266 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundDevice", "start": "devices"}, "context": null, "type": "register_vocab"}
16:51:24.267 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundDevice", "start": "units"}, "context": null, "type": "register_vocab"}
16:51:24.267 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundTransfer", "start": "transfer"}, "context": null, "type": "register_vocab"}
16:51:24.268 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundTransfer", "start": "move"}, "context": null, "type": "register_vocab"}
16:51:24.269 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundPlay", "start": "play"}, "context": null, "type": "register_vocab"}
16:51:24.269 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundPlay", "start": "listen to"}, "context": null, "type": "register_vocab"}
16:51:24.271 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundPlay", "start": "start"}, "context": null, "type": "register_vocab"}
16:51:24.271 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundSpotify", "start": "Spotify"}, "context": null, "type": "register_vocab"}
16:51:24.273 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundSpotify", "start": "using Spotify"}, "context": null, "type": "register_vocab"}
16:51:24.274 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundSpotify", "start": "with Spotify"}, "context": null, "type": "register_vocab"}
16:51:24.275 - SKILLS - DEBUG - {"data": {"end": "mycroft_spotify_forslundSpotify", "start": "on Spotify"}, "context": null, "type": "register_vocab"}
16:51:24.276 - SKILLS - DEBUG - {"data": {"regex": "search.*for (?P<mycroft_spotify_forslundSpotifyTitle>.+)"}, "context": null, "type": "register_vocab"}
16:51:24.277 - SKILLS - DEBUG - {"data": {"regex": "search.*for the album (?P<mycroft_spotify_forslundSpotifyTitle>.+)"}, "context": null, "type": "register_vocab"}
16:51:24.279 - SKILLS - DEBUG - {"data": {"regex": "album (?P<mycroft_spotify_forslundAlbumTitle>.+)"}, "context": null, "type": "register_vocab"}
16:51:24.280 - SKILLS - DEBUG - {"data": {"regex": "to (?P<mycroft_spotify_forslundToDevice>.+)"}, "context": null, "type": "register_vocab"}
16:51:24.282 - SKILLS - DEBUG - {"data": {"time":<PHONE_NUMBER>.0, "repeat": 300, "data": {}, "event": "mycroft-spotify.forslund:SpotifyLogin"}, "context": null, "type": "mycroft.scheduler.schedule_event"}
16:51:27.740 - SKILLS - DEBUG - {"data": {"file_name": "/opt/mycroft/skills/mycroft-spotify.forslund/vocab/en-us/PlaySomeMusic.intent", "name": "mycroft-spotify.forslund:PlaySomeMusic.intent"}, "context": null, "type": "padatious:register_intent"}
16:51:27.741 - mycroft.skills.padatious_service:_register_object:89 - DEBUG - Registering Padatious intent: mycroft-spotify.forslund:PlaySomeMusic.intent
16:51:27.742 - SKILLS - DEBUG - {"data": {"file_name": "/opt/mycroft/skills/mycroft-spotify.forslund/vocab/en-us/PlayAlbum.intent", "name": "mycroft-spotify.forslund:PlayAlbum.intent"}, "context": null, "type": "padatious:register_intent"}
16:51:27.744 - mycroft.skills.padatious_service:_register_object:89 - DEBUG - Registering Padatious intent: mycroft-spotify.forslund:PlayAlbum.intent
16:51:27.745 - SKILLS - DEBUG - {"data": {"file_name": "/opt/mycroft/skills/mycroft-spotify.forslund/vocab/en-us/PlaySong.intent", "name": "mycroft-spotify.forslund:PlaySong.intent"}, "context": null, "type": "padatious:register_intent"}
16:51:27.747 - SKILLS - DEBUG - {"data": {"file_name": "/opt/mycroft/skills/mycroft-spotify.forslund/vocab/en-us/PlayPlaylist.intent", "name": "mycroft-spotify.forslund:PlayPlaylist.intent"}, "context": null, "type": "padatious:register_intent"}
16:51:27.754 - mycroft.skills.padatious_service:_register_object:89 - DEBUG - Registering Padatious intent: mycroft-spotify.forslund:PlayPlaylist.intent
16:51:27.756 - mycroft.skills.padatious_service:_register_object:89 - DEBUG - Registering Padatious intent: mycroft-spotify.forslund:PlaySong.intent
16:51:28.454 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
16:51:28.455 - SKILLS - DEBUG - {"data": {"event": "mycroft-spotify.forslund:SpotifyLogin"}, "context": null, "type": "mycroft.scheduler.remove_event"}
16:51:28.686 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/devices HTTP/1.1" 200 None
16:51:28.695 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
16:51:28.696 - SKILLS - DEBUG - {"data": {"requires": [["mycroft_spotify_forslundSpotify", "mycroft_spotify_forslundSpotify"], ["mycroft_spotify_forslundDevice", "mycroft_spotify_forslundDevice"]], "optional": [], "name": "mycroft-spotify.forslund:list_devices", "at_least_one": []}, "context": null, "type": "register_intent"}
16:51:28.699 - SKILLS - DEBUG - {"data": {"requires": [["mycroft_spotify_forslundPlay", "mycroft_spotify_forslundPlay"], ["mycroft_spotify_forslundSpotify", "mycroft_spotify_forslundSpotify"]], "optional": [], "name": "mycroft-spotify.forslund:play_spotify", "at_least_one": []}, "context": null, "type": "register_intent"}
16:51:29.017 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/playlists?offset=0&limit=50 HTTP/1.1" 200 None
16:51:29.027 - mycroft.skills.core:load_skill:129 - INFO - Loaded mycroft-spotify.forslund
16:51:29.032 - SKILLS - DEBUG - {"data": {"requires": [["mycroft_spotify_forslundTransfer", "mycroft_spotify_forslundTransfer"], ["mycroft_spotify_forslundSpotify", "mycroft_spotify_forslundSpotify"], ["mycroft_spotify_forslundToDevice", "mycroft_spotify_forslundToDevice"]], "optional": [], "name": "mycroft-spotify.forslund:transfer_playback", "at_least_one": []}, "context": null, "type": "register_intent"}
16:51:29.053 - SKILLS - DEBUG - {"data": {"modified":<PHONE_NUMBER>.85117, "name": "SpotifySkill", "path": "/opt/mycroft/skills/mycroft-spotify.forslund", "id": "mycroft-spotify.forslund"}, "context": null, "type": "mycroft.skills.loaded"}
16:52:14.049 - SKILLS - DEBUG - {"context": {"ident": "1526482331.89871248774778345797868604", "client_name": "mycroft_listener"}, "data": {"utterances": ["what spotify devices are available"], "session": "c970d1cd-5908-4807-950c-87b2f6c1c45e", "lang": "en-US"}, "type": "recognizer_loop:utterance"}
16:52:14.053 - SKILLS - DEBUG - {"data": {"skill_id": "mycroft-alarm.mycroftai", "utterances": ["what spotify devices are available"], "lang": "en-US"}, "context": null, "type": "skill.converse.request"}
16:52:14.160 - SKILLS - DEBUG - {"data": {"mycroft_spotify_forslundSpotify": "Spotify", "__tags__": [{"start_token": 1, "match": "spotify", "key": "spotify", "entities": [{"data": [["Spotify", "mycroft_spotify_forslundSpotify"]], "confidence": 1.0, "match": "spotify", "key": "spotify"}], "from_context": false, "end_token": 1}, {"start_token": 2, "match": "devices", "key": "devices", "entities": [{"data": [["devices", "mycroft_spotify_forslundDevice"]], "confidence": 1.0, "match": "devices", "key": "devices"}], "from_context": false, "end_token": 2}], "utterance": "what spotify devices are available", "mycroft_spotify_forslundDevice": "devices", "intent_type": "mycroft-spotify.forslund:list_devices", "confidence": 0.6666666666666666, "target": null}, "context": {"client_name": "mycroft_listener", "target": null, "ident": "1526482331.89871248774778345797868604"}, "type": "mycroft-spotify.forslund:list_devices"}
16:52:14.163 - mycroft-spotify_forslund:list_devices:815 - INFO - <mycroft-spotify_forslund.SpotifySkill object at 0x7f616807dda0>
16:52:14.168 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
16:52:14.266 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/devices HTTP/1.1" 200 None
16:52:24.271 - SKILLS - DEBUG - {"context": {"ident": "1526482342.18800782757983655706529576", "client_name": "mycroft_listener"}, "data": {"utterances": ["play warming up on spotify"], "session": "c970d1cd-5908-4807-950c-87b2f6c1c45e", "lang": "en-US"}, "type": "recognizer_loop:utterance"}
16:52:24.275 - SKILLS - DEBUG - {"data": {"skill_id": "mycroft-spotify.forslund", "utterances": ["play warming up on spotify"], "lang": "en-US"}, "context": null, "type": "skill.converse.request"}
16:52:24.278 - SKILLS - DEBUG - {"data": {"skill_id": "mycroft-spotify.forslund", "result": false}, "context": null, "type": "skill.converse.response"}
16:52:24.374 - SKILLS - DEBUG - {"data": {"skill_id": "mycroft-alarm.mycroftai", "utterances": ["play warming up on spotify"], "lang": "en-US"}, "context": null, "type": "skill.converse.request"}
16:52:24.479 - SKILLS - DEBUG - {"data": {"mycroft_spotify_forslundSpotify": "on Spotify", "__tags__": [{"start_token": 0, "match": "play", "key": "play", "entities": [{"data": [["play", "mycroft_spotify_forslundPlay"], ["play", "mycroft_npr_news_mycroftaiPlay"], ["play", "mycroft_audio_record_mycroftaiAudioRecordSkillPlayVerb"]], "confidence": 1.0, "match": "play", "key": "play"}], "from_context": false, "end_token": 0}, {"start_token": 3, "match": "on spotify", "key": "on spotify", "confidence": 1.0, "entities": [{"data": [["on Spotify", "mycroft_spotify_forslundSpotify"]], "confidence": 1.0, "match": "on spotify", "key": "on spotify"}], "from_context": false, "end_token": 4}], "utterance": "play warming up on spotify", "intent_type": "mycroft-spotify.forslund:play_spotify", "confidence": 1.0, "target": null, "mycroft_spotify_forslundPlay": "play"}, "context": {"client_name": "mycroft_listener", "target": null, "ident": "1526482342.18800782757983655706529576"}, "type": "mycroft-spotify.forslund:play_spotify"}
16:52:24.482 - SKILLS - DEBUG - {"data": {"name": "SpotifySkill.play_spotify"}, "context": null, "type": "mycroft.skill.handler.start"}
16:52:24.483 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
16:52:24.575 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/currently-playing HTTP/1.1" 204 0
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 625, in play_spotify
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 597, in play_playlist
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 604, in continue_current_playlist
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 464, in get_default_device
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 448, in device_by_name
16:52:24.591 - SKILLS - DEBUG - {"data": {"name": "SpotifySkill.play_spotify"}, "context": null, "type": "mycroft.skill.handler.complete"}

So, this fails:
23:33:43.725 - mycroft.skills.padatious_service:handle_fallback:110 - DEBUG - Padatious fallback attempt: play on ps4
23:33:43.752 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai
23:33:43.760 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "ident": "1528673622.5331688-1374487465"}, "type": "mycroft-spotify.forslund:PlaySong.intent", "data": {"utterance": "play on ps4", "track": "on ps 4"}}
23:33:43.770 - mycroft-spotify_forslund:play_song:526 - DEBUG - I'm in the play_song handler but I've seen an utterance that contains 'playlist.' I want to play the playlist play. Switching handlers.
23:33:43.779 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "ident": "1528673622.5331688-1374487465"}, "type": "mycroft.skill.handler.complete", "data": {"fallback_handler": "PadatiousService.handle_fallback", "handler": "fallback"}}
23:33:43.786 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
23:33:43.816 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "ident": "1528673622.5331688-1374487465"}, "type": "mycroft.skill.handler.start", "data": {"name": "SpotifySkill.play_song"}}
23:33:43.955 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/devices HTTP/1.1" 200 None
23:33:43.977 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
23:33:43.986 - requests.packages.urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "POST /v1/device/48dcf2cd-df8e-4ace-acd1-d91a7c54cac8/metric/timing HTTP/1.1" 200 280
23:33:44.050 - requests.packages.urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "POST /v1/device/48dcf2cd-df8e-4ace-acd1-d91a7c54cac8/metric/timing HTTP/1.1" 200 293
23:33:44.163 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/currently-playing HTTP/1.1" 200 None
23:33:44.183 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
23:33:44.375 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/playlists?limit=50&offset=0 HTTP/1.1" 200 None
23:33:44.403 - mycroft.skills.core:wrapper:607 - ERROR - An error occurred while processing a request in Spotify Skill
Traceback (most recent call last):
  File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/skills/core.py", line 598, in wrapper
    handler(message)
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 528, in play_song
    self.play_playlist(message)
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 600, in play_playlist
    self.start_playlist_playback(dev, self.get_best_playlist(playlist))
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 485, in get_best_playlist
    key, confidence = match_one(playlist, self.playlists.keys())
  File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/util/parse.py", line 56, in match_one
    raise ValueError('a list or dict of choices must be provided')
ValueError: a list or dict of choices must be provided
23:33:44.414 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai

This also fails:
23:34:32.699 - mycroft.skills.padatious_service:handle_fallback:110 - DEBUG - Padatious fallback attempt: play discover weekly
23:34:32.721 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai
23:34:32.723 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "ident": "1528673671.4869094-1159544329"}, "type": "mycroft.skill.handler.start", "data": {"handler": "fallback"}}
23:34:32.727 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "ident": "1528673671.4869094-1159544329"}, "type": "mycroft-spotify.forslund:PlaySong.intent", "data": {"utterance": "play discover weekly", "track": "discover weekly"}}
23:34:32.734 - mycroft-spotify_forslund:play_song:526 - DEBUG - I'm in the play_song handler but I've seen an utterance that contains 'playlist.' I want to play the playlist play. Switching handlers.
23:34:32.748 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com
23:34:32.750 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "ident": "1528673671.4869094-1159544329"}, "type": "mycroft.skill.handler.complete", "data": {"fallback_handler": "PadatiousService.handle_fallback", "handler": "fallback"}}
23:34:32.786 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "ident": "1528673671.4869094-1159544329"}, "type": "mycroft.skill.handler.start", "data": {"name": "SpotifySkill.play_song"}}
23:34:32.919 - requests.packages.urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/currently-playing HTTP/1.1" 200 None
23:34:32.947 - mycroft.skills.core:wrapper:607 - ERROR - An error occurred while processing a request in Spotify Skill
Traceback (most recent call last):
  File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/skills/core.py", line 598, in wrapper
    handler(message)
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 528, in play_song
    self.play_playlist(message)
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 600, in play_playlist
    self.start_playlist_playback(dev, self.get_best_playlist(playlist))
  File "/opt/mycroft/skills/mycroft-spotify.forslund/__init__.py", line 485, in get_best_playlist
    key, confidence = match_one(playlist, self.playlists.keys())
  File "/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/util/parse.py", line 56, in match_one
    raise ValueError('a list or dict of choices must be provided')
ValueError: a list or dict of choices must be provided
23:34:32.964 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai

This doesn't produce an error, but I don't hear anything playing (what device did it use?):
23:35:10.810 - SKILLS - DEBUG - {"type": "recognizer_loop:wakeword", "context": null, "data": {"session": "ee437b64-c3ac-46b0-a6e1-21cb6d575431", "utterance": "mordechai"}}
23:35:11.729 - SKILLS - DEBUG - {"type": "recognizer_loop:utterance", "context": {"ident": "1528673710.78811931683406584", "client_name": "mycroft_listener"}, "data": {"session": "ee437b64-c3ac-46b0-a6e1-21cb6d575431", "utterances": ["next song"], "lang": "en-US"}}
23:35:11.749 - SKILLS - DEBUG - {"context": null, "type": "skill.converse.request", "data": {"lang": "en-US", "utterances": ["next song"], "skill_id": "mycroft-spotify.forslund"}}
23:35:11.769 - SKILLS - DEBUG - {"context": {}, "type": "skill.converse.response", "data": {"result": false, "skill_id": "mycroft-spotify.forslund"}}
23:35:11.845 - mycroft.skills.intent_service:send_metrics:247 - DEBUG - Sending metric if opt_in is enabled
23:35:11.852 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai
23:35:11.868 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "target": null, "ident": "1528673710.78811931683406584"}, "type": "skill-playback-control:handle_next", "data": {"skill_playback_controlNext": "next", "target": null, "intent_type": "skill-playback-control:handle_next", "skill_playback_controlTrack": "song", "__tags__": [{"entities": [{"data": [["next", "skill_reminderReminderSkillAmount"], ["next", "skill_playback_controlNext"], ["next", "skill_weatherNext"]], "confidence": 1.0, "key": "next", "match": "next"}], "key": "next", "end_token": 0, "start_token": 0, "match": "next", "from_context": false}, {"entities": [{"data": [["song", "skill_playback_controlTrack"]], "confidence": 1.0, "key": "song", "match": "song"}], "key": "song", "end_token": 1, "start_token": 1, "match": "song", "from_context": false}], "utterance": "next song", "confidence": 1.0}}
23:35:11.888 - requests.packages.urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai
23:35:11.891 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "target": null, "ident": "1528673710.78811931683406584"}, "type": "mycroft.skill.handler.start", "data": {"name": "Playback Control Skill.handle_next"}}
23:35:11.935 - SKILLS - DEBUG - {"context": null, "type": "mycroft.audio.service.next", "data": {}}
23:35:11.938 - SKILLS - DEBUG - {"context": {"client_name": "mycroft_listener", "target": null, "ident": "1528673710.78811931683406584"}, "type": "mycroft.skill.handler.complete", "data": {"name": "Playback Control Skill.handle_next"}}
23:35:12.125 - requests.packages.urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "POST /v1/device/48dcf2cd-df8e-4ace-acd1-d91a7c54cac8/metric/timing HTTP/1.1" 200 298
23:35:12.141 - requests.packages.urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "POST /v1/device/48dcf2cd-df8e-4ace-acd1-d91a7c54cac8/metric/timing HTTP/1.1" 200 272
23:35:20.448 - SKILLS - DEBUG - {"context": null, "type": "skill-date-time:TimeSkillupdate_display", "data": {}}

Sorrry, I'm on picroft (with AIY fwiw):
pi@picroft:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
...```

Thanks @clebio, I believe the playlist issue is fixed and will be in this weeks release the release I'm working on.

This has been resolved in the latest release of the skill. Closing


Verify No Metadata Pods Were Deployed

erify No Metadata Pods Were Deployed :: Because the product inclu... | PASS |
------------------------------------------------------------------------------
Tests.Ods Dashboard.Data Science Pipelines.Data-Science-Pipelines-... | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Tests.Ods Dashboard.Data Science Pipelines                            | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Tests.Ods Dashboard                                                   | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Tests                                                                 | PASS |
1 test, 1 passed, 0 failed
==============================================================================

IMO, it would be better to move the checks added here inside one of the Pipeline UI tests we already have. In this way we would save execution time in Smoke suite.


Content Control Wrapper AccessAdminPanel permission

Hello.
Shape template Content.ControlWrapper.cshtml by default checks only Permissions.EditContent permission to display "Edit" button and link goes to admin control panel. But maybe it will be more useful to check also StandardPermissions.AccessAdminPanel permission? I think It does not make sense to show button that leads to admin panel if user cannot use the panel.

Does it make sense for a user to have EditContent permission without AccessAdminPanel ?
Is it already possible to remove EditContent on the same role that you removed AccessAdminPanel from?
Otherwise we can also check both permission.

Yes, my opinion is to check both permissions. I constantly override this shape-template im my projects (where the feature is used) and check both permissions. I understand that the issue is not important at all and it is easy to fix by custom template, but maybe such verification should be out of the box


The Route Resolver in Gatsby?

In Nextjs, we have access to https://prismic.io/docs/technologies/the-route-resolver-nextjs which allows us to create a nested url.
A standard use case is having a BlogPost custom type which is linked to a category. So it would allow you to build URLs such as
/[category.uid]/[blog-post.uid]
Is this possible in the current prismic-gatsby plugin? Sorry if it is, I just couldn't find it in the documentation. I remember that it was possible in the old gatsby graphql prismic plugin (I used it to build https://fullstackheroes.com/) but currently I'm migrating over to the new prismic plugin, so just figuring how I could handle that case.
Thanks!

Hey @kb1995, good question. Route Resolvers were not supported in the source and preview plugins, but I just merged and published support for them.
A routes option is now available where you can provide your Route Resolver objects.
An example is included in the PR here: https://github.com/prismicio/prismic-gatsby/pull/479
Support is included as of these versions:

gatsby-source-prismic: v5.2.0
gatsby-plugin-prismic-previews: v5.2.0

Thanks for bringing this up!

As an aside, you can handle nested links like your example using a Link Resolver as well. You would need to write a Link Resolver and provide a fetchLinks option like this:
// gatsby-config.js

module.exports = {
  plugins: [
    {
      resolve: "gatsby-source-prismic",
      options: {
        repositoryName: 'repo-name',
        fetchLinks: ['blog_post.category'],
        linkResolver: (doc) => {
          if (doc.type === 'blog_post') {
            return `/${[doc.data.category?.uid, doc.uid].join('/')}`
          }

          return `/${doc.uid}`
        },
      },
    },
  ],
};


Fix various typos in the documentation

Description of the change:
Fixes for a couple wording issues I found while reading through the docs.
Reason for the change:
Fix wording.
Link to original source:

N/A

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hello @spencerbyw,Thanks again for the PR! It's HACKTOBERFEST! We want to show our appreciation by sending                                              you some special Hacktoberfest swag. If you have not already, could you please fill out                                              this form so we can send it to you? Thanks!                                             Team SendGrid DX

Hello @spencerbyw,Thanks again for the PR!                                         We noticed that you have earned 1 out of the 5 points needed to receive glorious SendGrid Hacktoberfest swag.                                         Please take a moment to checkout this link to find more issues to get you past the required threshold.                                         Also, please be sure that you have officially registered here.                                         Thank you and Happy Hacktobering!                                         Team SendGrid DX

Hello @spencerbyw,Thanks again for the PR!                                         You have earned 1 out of the 5 points needed to receive glorious SendGrid Hacktoberfest swag.                                         Please take a moment to checkout this link to find more issues to get you past the required threshold or to simply continue the celebration.                                         Also, please be sure you have officially registered with us here by November 1, 2018 to qualify.                                         If you have any questions you can email us at<EMAIL_ADDRESS>                                        Thank you and Happy Hacktobering!                                         Team SendGrid


Where do you get the configuration details for the dispatch section of the bot file?

In general the Microsoft documentation is quite weak on bot configuration.  There isn't an easily accessible page that outlines exactly how it works.  In this specific page there is no treatment given to explaining which app id to use in the dispatch section of the bot file.
If it is the LUIS application id then why do we not use the qna application?
{
            "type": "dispatch",
            "serviceIds": [
                "50",
                "201",
                "7"
            ],
            "name": "nlp-with-dispatchDispatch",
            "appId": "",
            "authoringKey": "",
            "subscriptionKey": "",
            "version": "Dispatch",
            "region": "",
            "id": "161"
        }

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

ID: f68e3448-ea66-7aab-26d2-37de5f44527c
Version Independent ID: 30c9096c-926c-3b92-6ab0-cc49edf63842
Content: Use multiple LUIS and QnA models - Bot Service
Content Source: articles/v4sdk/bot-builder-tutorial-dispatch.md
Service: bot-service
Product: bot-framework
GitHub Login: @DeniseMak
Microsoft Alias: v-demak

@andybeak We recently updated the how to deploy using the Azure CLI article. There's a section on how to use the Emulator to update your .bot file. We're waiting on the dev team to publish the .bot file schema, and we'll link to it once it's available.
With respect to deploying samples, they assume that you will not be touching the associated .bot file. It's not ideal, but that how the dev team has decided to manage the samples. Please reopen if this doesn't address your issue.


[GSSoC'23] Improve functionalities of YouTube-Video-Downloader

Is your feature request related to a problem? Please describe.

The current solution doesn't allow the feature of downloading playlists, only single videos
So, I propose a solution where users can download entire playlists

Describe the solution you'd like

Use the inbuilt functions from pytube to be able to download entire playlists

Additional context

I have previously worked with pytube and would like to implement a better solution with this repository. Kindly assign me this issue under the GSSoC'23.

Go Ahead @anandanmukh


Initialize module for all exercises

Awesome work @dstockto! Thanks!

Perfect! Can we get this merged?


Bump Tendermint version to v0.26.0?

I see that the develop branch is already on version = "=v0.26.0-rc0".
As v0.26.0 is quite a large release, and it also moves from 20 bytes to 32 bytes hashes, would you consider bumping the Tendermint version in Gopkg.toml of the master branch to v0.26.0?

Thanks for the nudge @nnkken. Updated in https://github.com/tendermint/iavl/pull/118 (review pending).


Allow all versions of the OSB API

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Pull Request Test Coverage Report for Build 85

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 3.197%

Totals

Change from base Build 83:
0.02%

Covered Lines:
25

Relevant Lines:
782

💛  - Coveralls


SKSurface.Create returns null in 1.59.1

SKSurface.Create started to return null in 1.59.1, but worked fine in 1.57.1
int w = 1968;
int h = 1412;
double dpi = 2.5;
WriteableBitmap bmp = new WriteableBitmap(w, h, dpi, dpi, PixelFormats.Pbgra32, null);
bmp.Lock();
using (var surface = SKSurface.Create(
width: w,
height: h,
colorType: SKColorType.Bgra8888,
alphaType: SKAlphaType.Premul,
pixels: bmp.BackBuffer,
rowBytes: w * 4))
{
SKCanvas canvas = surface.Canvas;   //surface is null at this point
}
bmp.Unlock();

Just tried it in a new project and it worked fine with 1.59.1, so likely not a Skia issue

Happened to me as well:
var newInfo = new SKImageInfo( 	width, 	height, 	SKColorType.Rgba8888, 	SKAlphaType.Premul); using (var surface = SKSurface.Create(newInfo)) { 	this.DrawBlocks(surface.Canvas, newInfo); <- happens here, surface is null }

Hi there guys - I need a bit more info. What platform is this? UWP? WPF?

Tested on iOS and Android, did not get to UWP yet.
I have a guess that one of sizes was invalid like width or height is <= 0 or something?
I will be able to check the sizes tomorrow.

My guess was correct: the width was negative.
It works now.

Alright, it crashed again with surface being null on iOS and UWP (unable to test on Android right now) with positive values of width and height this time.
The newInfo from the sample above has the following:
- newInfo	{SkiaSharp.SKImageInfo}	SkiaSharp.SKImageInfo
	AlphaType	Premul	SkiaSharp.SKAlphaType
	BitsPerPixel	32	int
	BytesPerPixel	4	int
	BytesSize	338032	int
	BytesSize64	338032	long
+	ColorSpace	null	SkiaSharp.SKColorSpace
	ColorType	Rgba8888	SkiaSharp.SKColorType
	Height	148	int
	IsEmpty	false	bool
	IsOpaque	false	bool
+	Rect	{{Left=0,Top=0,Width=571,Height=148}}	SkiaSharp.SKRectI
	RowBytes	2284	int
	RowBytes64	2284	long
+	Size	{{Width=571, Height=148}}	SkiaSharp.SKSizeI
	Width	571	int

@entdark The cause might be the incorrect color types per platform. Android and iOS should be fine with Rgba8888, but UWP must be Bgra8888. To avoid having to guess or try and determine the correct color, SKImageInfo.PlatformColorType. The key word here is "typically", The actual color type depends on the underlying architecture and platform.
I am closing this as I think this solves the issue, but feel free to re-open if this is still null. NOTE: Make sure you have also installed the NuGets into the platform projects as well as any library projects.


Run integrity_test in externalities

We should probably run all of then inside externalities. In the past I was concerned about unintended consequences, but it just annoyed us again in: https://github.com/paritytech/polkadot/pull/6957
Since there a parameter type was configured to be storage instead of const, so it would fail outside externalities.

Note: There are cases were we explicitly want to run something outside of externalities.
For example complicated weight annotations in pallet alliance use config constants. These could be factored out into helper functions and ran outside of externalities as a test to ensure that they dont access state.

I don't see any problem in using storage parameter_type! if there is a justification. Before we started to make all of them "const' all of these parameters where stored in the storage. However, it doesn't make any sense to read something from the storage that isn't ever changing. But some implementations may have a reason to have some value dynamic.

So you mean that reading storage in weight annotations is fine? Or how does your comment relate to mine?
Someone on SE pointed out that Polkadot does this.

I mean reading storage for the weight needs to be done with a lot of caution to not open a DDOS door.
The linked weight looks wrong as the weight should not depend on the number of digests.

You can always create externalities in the integrity_test, like here https://github.com/paritytech/substrate/pull/13092/files so this should not block you.
Although we can also run the test in externalities per default, the only catch would be that the genesis state is not configurable, which could be weird.

@ggwpez oh thanks, but in fact our panic appears from transaction-payment pallet 🤣🤣🤣


TDS 522 - Unify documentation experience

Description

Link to related issues: TDS-522

Dev Acceptance Criteria

[x] Code passes automated tests and style checks
[ ] Code passes Pull Request review with 1 approval

@theetrain

that way they're navigable both within GitHub and GitBook.

For context, when Laura and I kicked off the story, we explicitly decided to not really worry about the experience in Github, as we want everyone to be using the Gitbook experience.
But if its as simple as changing some absolute paths to relative paths then that seems fine :)

Bringing back relative links was a quick update. They are back!


SmartOS under Container Runtime

Project or Product name: SmartOS
Is it open source?: Yes
What are the best URL(s) for it? Repo and homepage (if different) for open source, product homepage for closed source.:

Product home page
Repo

What category does it belong in?: Container Runtime
What's the URL for the best logo (and it needs to include the name)?: SmartOS Logo

@fayazg will add to upcoming version

@fayazg closing as this update was included in the most recent version https://github.com/cncf/landscape#current-version


Blurried name

Hello! I would have two questions and a error.

How do I join beta?
What is the app subscription I heard from?

Also, my name is blurried in the app. Is there any way to remove this?

Hey @0w9!
The v3 beta is not yet open to the public, but I will add a link to join the TestFlight in the PR when I’m ready for external testers: #67

What is the app subscription I heard from?
The in-app subscription used to provide access to push notifications, but I recently made this feature available to all Zeitgeist users. If you still see references to in-app subscriptions, would you mind sharing a screenshot so I can remove it?

My name is blurried in the app. Is there any way to remove this?
This happens when Zeitgeist is unable to decode your account information from the Vercel API. This could be because the account name isn't set, which is a bug I recently discovered. You may be able to fix this by going to vercel.com/account and entering a name in the “Your Name” section. If the issue persists, please let me know and I’ll give you further instructions for debugging!


falling behind & stalls during streaming

During high volume events Twitter's streaming API can send warnings when you are falling behind. It would be useful to ask for these, log them, and act accordingly. It might be important to decouple json parsing from writing the data so that things move faster. Also, maybe we could accept gzip from the API?
We also need to make sure that we guard against stalls, which are periods of > 90 seconds if no data is received.

imho: could be better have gzip enable with an option when starting twarc. Being useful with low volume having json unzipped

I don't really understand what gzip has to do with this ticket. If you want to gzip just send the output through gzip?
twarc.py --search foo | gzip - > tweets.json.gz

Perhaps it would be useful for utils/archive.py though. If that's the case please open another ticket for that.

FWIW I was seeing up to 70 tweets/second when archiving #CharlestonShooting and didn't fall behind. But this may have been the result of running on a good connection on Amazon EC2.

I misunderstood the meaning of your "Also, maybe we could accept gzip from the API?" when remembering one of your past question about: "what if twarc result *.json.gz instead .json" :-)
I wrote on another issues that since a while --stream works fine always with huges quantity, I agree. Usually I use too high-end servers on DigitalOcean/Amazon EC2 with best location for loads. And possibly at best tmz when using archive.py.
But for first time I was unable to archive #pride #lovewins. So I missed it

This ticket only concerns the streaming API. When using Twitter's search API results are rate limited by Twitter, which is currently handled by twarc.

Also would be useful to look for and log Limit Notices.


Add holder node namespace to targets when referencing scene with picker

@luckylyk this should improve referencing workflow

Damned Kalemas ... I feel that each time, I take longer to reply :/
I'm so sorry.
This looks perfect ! I'm merging


Fixed txn proof logs not rendering correctly

Txn ident was being printed twice.
Only the first 4 chars of the ident were being printed.

Just from the chat on Slack, we decided that it's worth having a very small identifier so we can run multiple workers and still have useful logs (eg. just use grep ident = ...).


fixed compare.go compile error

What does this PR do?
Fixes #(issue_number)
Which TC components are affected by this PR?

[ ] Documentation
[ ] Grove
[ ] Traffic Analytics
[ ] Traffic Monitor
[X] Traffic Ops
[ ] Traffic Ops ORT
[ ] Traffic Portal
[ ] Traffic Router
[ ] Traffic Stats
[ ] Traffic Vault
[ ] Other _________

What is the best way to verify this PR?
Run the compare tool
Check all that apply

[ ] This PR includes tests
[ ] This PR includes documentation updates
[ ] This PR includes an update to CHANGELOG.md
[ ] This PR includes all required license headers
[ ] This PR includes a database migration (ensure that migration sequence is correct)
[ ] This PR fixes a serious security flaw. Read more: www.apache.org/security

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/trafficcontrol-PR/2423/
Test PASSed.


No way to know whether a MySQL connection is available when querying

It seems that there isn't any way to find out whether a connection in the pool is available when running a query. Consider the example situation:

Instantiate Knex and connect to MySQL as normal
Stop MySQL server
Issue a select * query using Knex
The returned promise never resolves or times out, and Knex itself throws no errors

Is there a way to avoid this? The issue is not affected by adding the timeout option to the underlying connection, as described in #803. Ideally the Promise would resolve immediately as an error.

I found out a way to solve this myself.
Since the pool object as part of the knexfile.js is passed directly into the constructor of the Pool class (provided by the pool2 library), the requestTimeout option of the pool2 library can be used to specify a timeout on how long the Pool class will wait before giving up trying to grab an available SQL Connection, and reject the original Promise with an error.
Example knexfile change:
 client: 'mysql',
 connection: ...,
 pool: {
     min: 2,
     max: 10,
+    requestTimeout: 2000, // milliseconds
 },


mss 5.0 requires python >=3.7

With the metpy depencency we have to skip py3.6 on all platforms
+ mswms -h
Traceback (most recent call last):
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/bin/mswms", line 7, in <module>
    from mslib.mswms.mswms import main
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/mslib/mswms/mswms.py", line 33, in <module>
    from mslib.mswms.wms import mss_wms_settings, server
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/mslib/mswms/wms.py", line 63, in <module>
    from mslib.utils import conditional_decorator
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/mslib/utils.py", line 36, in <module>
    from metpy.units import units
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/metpy/__init__.py", line 35, in <module>
    from .xarray import *  # noqa: F401, F403, E402
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/metpy/xarray.py", line 28, in <module>
    import xarray as xr
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/xarray/__init__.py", line 3, in <module>
    from . import testing, tutorial, ufuncs
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/xarray/testing.py", line 9, in <module>
    from xarray.core.dataarray import DataArray
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/xarray/core/dataarray.py", line 24, in <module>
    from . import (
  File "/home/conda/feedstock_root/build_artifacts/mss_1627921693786/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/xarray/core/computation.py", line 4
    from __future__ import annotations
    ^
SyntaxError: future feature annotations is not defined
Tests failed for mss-5.0.0-py36h5fab9bb_0.tar.bz2 - moving package to /home/conda/feedstock_root/build_artifacts/broken
WARNING:conda_build.build:Tests failed for mss-5.0.0-py36h5fab9bb_0.tar.bz2 - moving package to /home/conda/feedstock_root/build_artifacts/broken
WARNING conda_build.build:tests_failed(2955): Tests failed for mss-5.0.0-py36h5fab9bb_0.tar.bz2 - moving package to /home/conda/feedstock_root/build_artifacts/broken

xarray added the dependency to python >=3.7
This is used by metpy.
https://github.com/conda-forge/xarray-feedstock/blob/master/recipe/meta.yaml

We should add the minimum python version to our docs.

With the current update/install procedure we will get always a version of MSS independent if we know what the minimum python version is.
We have not any requires ... line in the current doc and won't start this now.


Add new LiveTradingDataFeed unit tests

Description

Adding a new set of unit tests for the LiveTradingDataFeed.

Note: this PR includes changes in #3336 and #3381 and requires them for the tests to pass

Related Issue
n/a
Motivation and Context
Missing unit test coverage for the LiveTradingDataFeed.
Requires Documentation Change
No.
How Has This Been Tested?
Unit tests included.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Non-functional change (xml comments/documentation/etc)

Checklist:

[x] My code follows the code style of this project.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Should this be added to #3336 to keep things together? Seems like we wouldn't merge one without the other.

Closing for now as the new unit tests are still failing and need to be updated, will be reopened when fixed.