Is Erizo really a MCU, not a Router/Relay?

As far as I can see Erizo supports so far neither mixing nor transcoding, but receiving one stream and publishing it to many receivers. That is what usually is called "Router/Relay" or?
Actually this naming is not such important, but it confuses me. I tried to find anywhere transcoding/mixing options and then I noticed, that there obviously is none. However there are source files in C++ (https://github.com/ging/licode/tree/de028ed66ce24995d8e98b57039cb8967d92dfb6/erizo/src/erizo/media). Have you just not updated the documentation / not created the client API so far, so that it will be a future feature?

so when is transcoding and mixing gonna join the licode and make it more scalable


Fix Package Update Build Script to Allow GitHub Issue References

Summary
The build script that updates NuGet package specs and crawls git history to generate changelogs currently interprets all hashtags as state change tags (ADD / REMOVE / CHANGE / FIX / ...) regardless of the actual content or position in the text. This leads to parsing errors in issues references such as #532.
Analysis

This should be a simple fix.
Could be done by filtering out tag candidates that don't contain letters.

Fixed in the above linked commit.


Reading input from paramInput for optimizer

Issue Description
Is your feature request related to a problem? Please describe.
GradientBasedOptimizer and its inheritors does not  use the paramInputs, instead it uses the xml node as the input.
Describe the solution you'd like
A clear and concise description of what you want to happen.

remove _readMoreXML inside Optimizer
return paramInput as the output of  _readMoreXMLbase
Passing xmlNode and paramInput to localInputAndChecks

For Change Control Board: Issue Review
This review should occur before any development is performed as a response to this issue.

[x] 1. Is it tagged with a type: defect or task?
[x] 2. Is it tagged with a priority: critical, normal or minor?
[x] 3. If it will impact requirements or requirements tests, is it tagged with requirements?
[x] 4. If it is a defect, can it cause wrong results for users? If so an email needs to be sent to the users.
[x] 5. Is a rationale provided? (Such as explaining why the improvement is needed or why current code is wrong.)

For Change Control Board: Issue Closure
This review should occur when the issue is imminently going to be closed.

[ ] 1. If the issue is a defect, is the defect fixed?
[ ] 2. If the issue is a defect, is the defect tested for in the regression test system?  (If not explain why not.)
[ ] 3. If the issue can impact users, has an email to the users group been written (the email should specify if the defect impacts stable or master)?
[ ] 4. If the issue is a defect, does it impact the latest release branch? If yes, is there any issue tagged with release (create if needed)?
[ ] 5. If the issue is being closed without a pull request, has an explanation of why it is being closed been provided?

Checklist closure passed... Closure approved via #1062


:arrow_up: Update docs to Beta 7

Updating docs and samples to Beta 7 - except for cross-plat ones which
will come in a separate commit.
Note that UWP is currently broken on Beta 7, so adding docs to use Beta
6 for the moment.

:shipit: I didn't actually test the samples on UWP, but I'm assuming you did.

Yep :smile: I started by updating the samples, then the docs


ceph support

Does it support distributed storage ceph?
Is there a configuration document for docking with ceph?

Currently no.

Very much looking forward to supporting ceph.

close as duplicate of https://github.com/harvester/harvester/issues/888


Virtual pages break non-inline editing

How to reproduce
Easiest repro steps are:

Set DNADesign\Elemental\Models\BaseElement.inline_editable: false in your config
Create a virtual page, point it to your home page, Save & Publish
Create a new page, add a content block, Save & Publish
Edit the virtual page, change it to point to your new page, Save & Publish
Edit your new page again, now you can’t edit any content blocks - clicking on one results in an error: I can't handle sub-URLs on this handler.

What’s happening
The problem is (maybe) this query: https://github.com/dnadesign/silverstripe-elemental/blob/4.3.1/src/Models/ElementalArea.php#L211. When there’s a virtual page added which points to a page with content blocks, there are two records with the same ElementalAreaID added to the Page/Page_Live table:
ID	ElementalAreaID
2	123
3	123

The above query just returns the first row, so if the VirtualPage is added last everything is fine. However, if the VirtualPage is added first and then changed to point to a page that’s added after it, the first record returned will actually be the VirtualPage and not the source page. That results in jumping from a URL like /admin/pages/edit/show/2 to a URL like /admin/pages/edit/EditForm/3/field/ElementalArea/item/123/edit. Notice the ID has changed from 2 (the normal, source page’s ID) to 3 (the VirtualPage’s ID).
Solution
Haven’t had time to look in detail. I’m not sure why the VirtualPage is storing an ElementalAreaID - when you first create one without a source page assigned, it writes a record to the Page table with ElementalAreaID = 0. That changes as soon as you pick a source page. Not sure if that’s core VirtualPage behaviour, or a bug in that core behaviour, or something in this module...
Changing the query in getOwnerPage() to include a ClassName filter also seems to work:
$table = DataObject::getSchema()->tableForField($class, $areaID);
$baseTable = DataObject::getSchema()->baseDataTable($class);
$page = DataObject::get_one($class, [
    "\"{$table}\".\"$areaID\" = ?" => $this->ID,
    "\"{$baseTable}\".\"ClassName\" = ?" => $class
]);

I’m using the following workaround, which shows where the bug comes from pretty well:
SilverStripe\CMS\Model\VirtualPage:
  extensions:
    - App\Extensions\PageTypes\VirtualPageExtension

<?php

namespace App\Extensions\PageTypes;

use DNADesign\Elemental\Extensions\ElementalAreasExtension;
use SilverStripe\Core\Extension;

class VirtualPageExtension extends Extension
{
    public function onBeforeWrite()
    {
        /** @var ElementalAreasExtension $owner */
        $owner = $this->owner;
        foreach ($owner->getElementalRelations() as $elementalRelation) {
            $field = "{$elementalRelation}ID";
            $owner->$field = 0;
        }
    }
}

As above, I don’t know if the behaviour (copying values from the source page and storing them in the database) is:

How VirtualPage is supposed to work (I doubt this)
A bug in VirtualPage
A bug triggered by something in this module

I have just come across this exact problem and wanted to check it hadn't already been reported..

Fixed in #777.


Play nice with Expandinizr

In addition to this extension, I use the excellent plugin from @thecodejunkie to maxmize the amount of space on the page:
https://github.com/thecodejunkie/github.expandinizr
Having just installed your extension, I immediately noticed this:

Is there anyway that these two extensions can work together?

// @thecodejunkie

@sindresorhus thanks to @khellang for pointing this out:
https://github.com/thecodejunkie/github.expandinizr/pull/60
I believe this problem has already been fixed 😄 Will re-open this if I still see issues after the next release of expandinizr.


Proofing

Name
Dione Oates
Description
opening link redirections in order to stop a transaction of Service
Addresses
0x830017756Ce93b471f90A0502985766C9bb9bAF4
Meta Article URLs
https://math.org
https://Google.com

I'm having trouble with my digital NetSpend account my money is being removed from my account and rendered to another account in my name separate location

@GenuisXio1 It sounds like your query would be best dealt with by the support team.
Please see the link below to our dedicated support line:
Support :Avalanche Live Support
Note: Click on the live chat icon at the bottom corner of the page to start a conversation

As mentioned in the issue template, this repository is not for reporting individual losses, only for large scale smart contract exploits. If you need support, please join the Revoke.cash Discord (see website footer for a link).


Configure Azure Pipelines

This pipeline configuration builds the application and produces a build for the Release configuration.

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


Unexpected results with clock times after fontawesome icons

Thanks so much for such a handy plugin! I use it quite a bit for my Grav Course Hub site this term.
I think I've run across an issue though: including a series of times seems to produce unexpected results (i.e. extra fontawesome icons):
Markdown:
**Instructor Design Review Meetings, No Regular Class**
:fa-book: [How to Give and Receive Criticism](http://scottberkun.com/essays/35-how-to-give-and-receive-criticism/)
:fa-users: HC 1500 10:00am - 11:30am
:fa-users: HC 2156 1:00pm - 2:30pm
:fa-users: HC 2154 3:30pm - 9:00pm

Screenshot:

Please let me know if you need any more details, or would like me to test anything.
UPDATE: If anyone else encounters this issue, you can use the HTML for a : and the issue should then be avoided. The HTML code for : is :
Thanks very much,
Paul

It's been a long time without an answer, so I have forked this plugin and will be re-releasing it. The new version can be found at grav-plugin-fontawesome-emoji.
The issue above is due to an over-zealous regex, so I implemented a stricter regex that avoids this issue. I also added support for variants (eg. fas, fal), and additional classes.

Note: The plugin repo has now been moved to N-Parsons/grav-plugin-markdown-fontawesome (see getgrav/grav#2544).
I appreciate that it's been a long time since this issue was created, but it has now been resolved in v1.1.0 by adjusting the regex.

Hi @N-Parsons , thanks so much for addressing this issue and also taking over this useful Plugin!


Add the AuthorAssociation field to PullRequestReview

#892 and #802, electric boogaloo.

Thank you, @qaisjp.
As in #892, could you please contact<EMAIL_ADDRESS>and request that they update their examples where appropriate on this page: https://developer.github.com/v3/pulls/reviews/#list-reviews-on-a-pull-request
to include this field and report back their response?

sent.
I suspect there will be more places where this is missing, a future PR author can use this canned message:
Some of the responses on https://developer.github.com/v3/pulls/reviews/ are missing the `author_association` key, specifically https://developer.github.com/v3/pulls/reviews/#list-reviews-on-a-pull-request.

The API is returning that info, but it's not documented. Is that a documentation mistake or should `author_association` not actually be in the response?

Hello -
Thanks for the report and sorry for the delay!
I believe this is a documentation issue - we'll go ahead and mention this to our documentation team and if I find out differently, we'll let you know.
Thanks again for reporting!

Thank you for reporting back their response, @qaisjp!
It is greatly appreciated!


Vite 3.0.0-alpha.12 cannot work in CJS-only environments

Describe the bug
In environments where ESM isn't supported, such as VS Code (see issue), Vite 3 cannot be loaded.
This is likely because the CJS version of Vite 3 is just a proxy that itself loads ESM modules: https://github.com/vitejs/vite/pull/8178. See Anthony's explanation: https://twitter.com/antfu7/status/1538173828492595201.
This will prevent VS Code extensions such as Preview.js from migrating to Vite 3.
Reproduction
https://github.com/fwouts/vite3-vscode-test
System Info
  System:
    OS: macOS 12.3.1
    CPU: (8) arm64 Apple M1
    Memory: 68.30 MB / 8.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.15.0 - ~/.nvm/versions/node/v16.15.0/bin/node
    Yarn: 1.22.19 - ~/.yarn/bin/yarn
    npm: 8.9.0 - ~/.config/yarn/global/node_modules/.bin/npm
  Browsers:
    Chrome: 102.0.5005.115
    Firefox: 101.0.1
    Safari: 15.4
  npmPackages:
    vite: ^3.0.0-alpha.12 => 3.0.0-alpha.12

Used Package Manager
yarn
Logs
TypeError: Invalid host defined options
	at Object.module.exports.<computed> [as createServer] (/Users/fwouts/.vscode/extensions/fwouts.vite3-vscode-test-0.0.1/node_modules/vite/index.cjs:22:36)
	at /Users/fwouts/.vscode/extensions/fwouts.vite3-vscode-test-0.0.1/extension.js:27:10
	at o._executeContributedCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:62521)
	at o.$executeContributedCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:83:63225)
	at s._doInvokeHandler (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:86:13828)
	at s._invokeHandler (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:86:13512)
	at s._receiveRequest (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:86:12173)
	at s._receiveOneMessage (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:86:10843)
	at /Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:86:8949
	at g.invoke (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:145)
	at b.deliver (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:2265)
	at v.fire (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:1843)
	at a.fire (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:66:19025)
	at /Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:34863
	at g.invoke (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:145)
	at b.deliver (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:2265)
	at v.fire (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:1843)
	at a.fire (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:66:19025)
	at r._receiveMessage (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:66:23606)
	at /Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:66:21140
	at g.invoke (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:145)
	at b.deliver (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:2265)
	at v.fire (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:58:1843)
	at v.acceptChunk (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:66:15856)
	at /Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:66:14986
	at Socket.R (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:102:13798)
	at Socket.emit (node:events:390:28)
	at addChunk (node:internal/streams/readable:315:12)
	at readableAddChunk (node:internal/streams/readable:289:9)
	at Socket.Readable.push (node:internal/streams/readable:228:10)
	at Pipe.onStreamRead (node:internal/stream_base_commons:199:23)

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 https://github.com/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.

Perhaps we may want to publish a CJS-variant only package of Vite to support this? Or a community maintained version specifically for VSCode 🤔

Perhaps we may want to publish a CJS-variant only package of Vite to support this? Or a community maintained version specifically for VSCode 🤔

The problem I see with that approach is that a VS Code extension may still transitively depend on the "normal" version of Vite via one of its dependencies, so I'm not sure that can work (that's the case for my extension).

@fwouts do you know the position of the VS Code team regarding this issue?
I don't think publishing a separate CJS version will work. I don't know what are our options here, we need VS Code extensions to work with Vite v3.
@antfu any ideas?

Does Preview.js bundle a Vite into the extension, or it will use the one from users' local Vite? If it bundles, maybe you could use a bundler to directly transpile the ESM entry for VS Code to consume as CJS?

@fwouts do you know the position of the VS Code team regarding this issue?

I'm not aware of any official plans aside from what's in https://github.com/microsoft/vscode/issues/130367

Does Preview.js bundle a Vite into the extension, or it will use the one from users' local Vite? If it bundles, maybe you could use a bundler to directly transpile the ESM entry for VS Code to consume as CJS?

Preview.js runs an npm install on first startup in its own install directory, so that the user gets the right package for their platform (e.g. esbuild-linux-64). Here's the package.json and package-lock.json for the current release if you're curious: https://github.com/fwouts/previewjs/tree/main/loader/src/release
I've tried bundling before (with Vite 2) but ran into a few issues with some dependencies. I will try that again with Vite 3 when I find the time :)
Appreciate the help here by the way! I would totally understand if you decide to push forward with the current approach—it really is a VS Code issue at its core.

Quick update: I tried bundling again with esbuild. Unfortunately it looks like at least some code depends on Vite being an NPM module in its own right, such as https://github.com/vitejs/vite/blob/49c089662916bb2c0ae2aae649c7c8b714509922/packages/vite/src/node/constants.ts#L54 so it crashes on startup.

@fwouts given your comment here https://twitter.com/fwouts/status/1538699965740232704?s=20&t=qIxqqVnJHh_IXhdy5tt5yg, you are not blocked by this issue, no?

@fwouts given your comment here https://twitter.com/fwouts/status/1538699965740232704?s=20&t=qIxqqVnJHh_IXhdy5tt5yg, you are not blocked by this issue, no?

You're right, I wouldn't be blocked entirely.
I'd likely choose to stay on V2 as late as possible as this change would be a big refactor that impacts performance of the extension negatively (there would be a fair bit of cross-process communication with this alternative model). I guess that's extra motivation to try fixing VS Code's loader myself 🙂

The best would be to fix VS Code's loader, and I imagine the pressure will raise for them during the next months. So maybe we should move forward with the current approach for v3. And we are going to continue to backport important fixes to v2, please flag them if you see something that we should take into account.
If a better solution is found, we can also change the dist model in v3.1

This is affecting us as we use ESM on frontends, CommonJS on backends, and a dev script that spins up vite instances via createServer in a CommonJS context. Is there a current workaround for using the dev server in commonjs?

You can create the dev server with commonjs, just that using import() on an ESM file should work too, which the supported node versions should. Are you using a different environment other than node?

Closing as Preview.js has achieved working with Vite v3 and I think we won't be stepping back to CJS.


Provide additional options for SSL MongoDB connections in configuration

Describe the bug
There are some options which can only be passed to the MongoDB driver via an options object.  (Not supported on the URI query string.) . Specifically, the ability to specify CA or key/cert files needed for connections to some MongoDB instances.  (And important for testing, the ability to turn off SSL certificate checking.) . They are the options that correspond to the mongo CLI options below:
--sslCAFile arg
--sslPEMKeyFile arg
--sslPEMKeyPassword arg
--sslCRLFile arg
--sslAllowInvalidCertificates
To Reproduce
Steps to reproduce the behavior:

Generate a self-signed cert/key and start up a mongo instance (docker run -p 27018:27017 --name mongo --rm -v $PWD:/etc/ssl mongo:4 --sslMode requireSSL --sslPEMKeyFile /etc/ssl/mongodb.pem -v)
Verify connections work to the database with the needed flags set (simplest case: mongo localhost:27018 --ssl --sslAllowInvalidCertificates)
Attempt to connect to this database using mongodb://localhost:27018/?ssl=true as the connect string with prisma

Expected behavior
An additional yml dictionary of connection options which could be passed along to the connection objects.
Versions (please complete the following information):

Connector: MongoDB
Prisma Server: 1.31.0

Further information:
I continued hacking to see what I could come up with locally.  It looks like the forcing of netty by system property as in the files below may be triggering the error described here: https://jira.mongodb.org/browse/SCALA-501
Sounds like netty may no longer be needed for the MongoDB connections?
MongoDatabasesFactory.scala
MongoInternalDatabaseDefs.scala

Is there any way to connect to a mongo instance which requires certificates currently?

any update on this issue

Using scalegrid.io as the database provider, SSL is required for MongoDB. This functionality must be supported in prisma for the mongodb connector to make sense.

I have so far been using Mongo DB 3.4 (and upgrading isn't necessarily trivial), but it seems like 4.2 has added the possibility to specify the certificates, etc in the connection string, e.g. tlsCertificateKeyFile. Did anyone try this with prisma yet? It would be a kind of workaround at least.

So I'm not sure if this is the global solution to certificates in the Java world, but it seems like every question on how to set certificates there, also when using Mongo, is to use the Java certificate store. So I have made a fork and a pull request where I have made a mechanism to the prisma build tool, such that it is possible build your own Docker image with the relevant certificates.
The prerun_hook.sh script can have something like this:
`#!/usr/bin/env bash
keytool -storepasswd -new mysecretpassword -keystore /etc/ssl/certs/java/cacerts -storepass changeit
echo "yes" | keytool -import -trustcacerts -file /app/prerun_hook_files/my-mongod-cert.crt -keystore /etc/ssl/certs/java/cacerts -storepass mysecretpassword
rm -f /app/prerun_hook_files/my-mongod-cert.crt
`

FWIW, I have this running on Heroku now, after following some suggestions on how to build Docker images for the service. In doing this I ditched the idea of the pull request above, and instead I built a new Docker image based on the prisma one, and added the certs (using the commands from above) via the Dockerfile.
See https://github.com/dpetrick/prisma-heroku for general instructions on how to make a Docker image for Heroku.


PP-291: Search tuning part 1

Added more fields to indices
Added custom proccessors for fields
Fix frontpage search form to pass params correctly
Bumped paatokset_search application to version 0.2.2
To test:
Make sure you have decision / issue content imported before testing.

Remove old files to (just to make sure composer actually installs the new ones) rm -rf vendor/paatokset. Also remove old asset files to make sure they're deleted rm -rf public/modules/custom/paatokset_search/assets/*.
Run make shell and inside container composer update paatokset/paatokset_search --prefer-source
Either run make new or drush cr; drush cim -y.
Check your Search API decisions-index's settings. You should see 2 new fields there, decisions_url and color_class.
Check the index status. All content should be queued for reindexing. If not, press the Queue all items for reindexing -button and then run run the indexing proccess by clicking Index now-button, (Edit: sometimes you need to rebuild the tracking information. This is the case if you have decision content imported, but the index status indicates 0/0 content is indexed)
Go to your frontpage. If you don't have search form hero added, add it from edit page -> add hero -> select paatokset search form as paragraph type. After you have the search form hero added, write a search phrase and submit. The search page should render with the inputted search phrase filled in.
Remove the query from the search page url  and refresh. The search form should now render with no text input and the search results should be hidden.
Make a new search. Make sure that the search results have the correct color as the highight color on top of the result card and you can navigate to decision / issue pages by clicking the cards.

Everything seems to be working as intended (other than the CORS issues in Firefox), but I found an issue in the paatokset-search repository. The organisation name is still hardcoded to "kaupunginvaltuusto" in all results: https://github.com/City-of-Helsinki/paatokset-search/blob/develop/src/modules/decisions/components/results/ResultsContainer.tsx#L118

☝ Organization name fixed in the 'part 2' PR. Merging this for now


Dockerize ShinyDAG

Biggish PR here to dockerize shinyDAG.
The big diff on app.R is mostly because I ran styler::style_file() on it first (note to self: next time do this in and commit immediately to isolate the changes).
A few other details:

texPreview recently updated and this version should work with the new version. I pinned the package version in Docker to the texPreview version I've tested.

Save all files into session-specific folders to that there is no chance of clash between users

I made a small change to the reactivity structure of output$tikzOut. The TeX files are now processed inside an observer() that separately triggers a reloading of the iframe in tikzOut. There shouldn't be any differences in app behavior, it just separates the logic for rendering and displaying the PDF.

I imported a small version of the GerkeLab logo into the repo

I updated the "About" tab text

I also pushed this image to docker hub. If you have docker installed, you can run the following to pull the image and run it. Once the container starts up, go to <IP_ADDRESS>:38383/shinyDAG to view the app.
docker run -d -p 3838:3838 --name shinydag grrrck/shinydag:latest

Build docker image
Inside the ShinyDAG directory
docker build -t shinydag .

Or for pushing to docker hub
docker build -t grrrck/shinydag:latest
docker push grrrck/shinydag

Rebuilding docker container
If you use docker run --name shinydag ... and you want to rebuild the image, you need to first remove the image named shinydag
docker stop shinydag
docker rmi shinydag

and then you can rebuild using the commands above.

Also for development purposes, I'll replace the FROM statement in the Dockerfile
FROM rocker/shiny-verse:3.5.1

with
FROM rocker/tidyverse:3.5.1

and comment out the last four lines that are related to setting up shiny-server.
ARG SHINY_APP_IDLE_TIMEOUT=600
RUN sed -i "s/directory_index on;/app_idle_timeout ${SHINY_APP_IDLE_TIMEOUT};/g" /etc/shiny-server/shiny-server.conf
COPY . /srv/shiny-server/shinyDAG
RUN chown -R shiny:shiny /srv/shiny-server/

Then build the image with a new tag, like shinydag-dev
docker build -t shinydag-dev

and use the following command to run the container.
docker run -d -p 8787:8787 \
  -e PASSWORD="ThrowawayPassword" \
  -v $(pwd):/home/rstudio \
  --name shinydag-dev \
  shinydag-dev

Once it starts up, navigate to localhost:8787 to log in to rstudio with rstudio user and the password you used in the docker run command.


Comment

Comment branch :

relation ManyToOne between Article and Comment
add comment
view comments
delete comment
design

Ok ! But... This is not a clear MVC struct.
We should use services to handle access to Comment or other objects.
I suggest for the future a Service Manager with for exemple CommentService and method like:

getCommentByArticleAndDate($article,$date),
saveComment($comment),
addCommentByArticle($comment,$article),
removeCommentByArticle($comment,$article),
.........

Good work by the way :+1:


Adding Search Routes for Vue component in the In-Page File Chooser

As requested by #8754 we are adding the Route and logic for the Search component in our In-Page File Chooser.

Looks good; we had conflicts so I had to manually merge in https://github.com/concrete5/concrete5/pull/8825


bug: the tranlsation of route with plugin_config is pathological

Issue description
https://github.com/apache/apisix-ingress-controller/blob/de522437bd3db3dc3e8d8f33c92f322de67531b8/pkg/kube/translation/apisix_route.go#L534-L539
The code snippet pasted above has two problems:
1). The plugin config id generation should not rely on the name of backend service name, which will cause all routes with the same backend generated with the same plugin config id.
2). add the plugin_config id reference even if users don't specify the plugin config on the ApisixRoute explicitly
Environment

your apisix-ingress-controller version (output of apisix-ingress-controller version --long):
your Kubernetes cluster version (output of kubectl version):
if you run apisix-ingress-controller in Bare-metal environment, also show your OS version (uname -a):

Minimal test code / Steps to reproduce
Nope.
Actual result
Nope.
Error log
Nope.
Expected result
No response

cc @neverCase

ok, got it.

#845 has been merged. I will close this issue. If you have any question, feel free to reopen it.


[Lake] integrate pdr_truevals into GQL Data Factory

Motivation
TrueVals are not being fetched from subgraph and added to lake. There is similar logic being used to determine predictions for predictoor, but we need to figure out if the trueVal is available or not.

Everything here should follow the GQLDataFactory integration. Using the same date-range args, and structure. Due to subgraphs tables having records (or not), the Data Factory should elegantly handle empty gql quries, empty parquet files, and it's basic interface of get_dfs() without any issues.
DoD:

[ ] Improve gql_data_factory so it can handle empty fetches, empty parquet files, and general mis-matches between fs.
[ ] Improve gql_data_factory to return an empty dataframe of the expected schema if nothing is availbale.
[ ] Add fn to fetch truevals from subgraph
[ ] Create truevals object for models
[ ] Create truevals schema for lake
[ ] Hook truevals to lake
[ ] Add mock utils for truevals
[ ] Add tests that verify that truevals objects, subgraph, and components are working as expected

@KatunaNorbert please make sure that all parameters required to build the ID are available. Please review the event id in subgraph/contract to identify it. I think in the case of truevals it's {contract-slot}.


Introduce FromSource trait

The idea is to provide an ability to get HIR from AST in a more general way than it's possible using source_binder.
It also could help with #1622 fixing.

bors r+


Add scripts to composer.json for lint, phpcs, and phpunit

Refer to composer.json in ramsey/uuid for an example.

Added the scripts, also changed some code to have phpstan working, but will crash on travis <7.0 php versions, check:
PHPStan requires PHP >= 7.1. You have to run it in environment with PHP 7.x but the actual code does not have to use PHP 7.x features. (Code written for PHP 5.6 and earlier can run on 7.x mostly unmodified.)
What do you want to do in this case?

Please check the pull requests to make sure this work hasn't already been done. I'll merge in a bunch of this later today. https://github.com/ramsey/collection/pulls


Added file for The faculty of Computer Information Science, The University of Ain Shams, Egypt

Link to the faculty's official website: https://cis.asu.edu.eg/

@mariamelkondakly cis.txt I am sorry, I have to close the request without merging, because you made a mistake in a request and did not specify any filepath. Please ensure that you are familiar with this repository rules located at the bottom of this page and make a new correct request. Thank you for your understanding!

@philipto I tried twice after reading the instructions and they don't appear that clear, can you tell me what exactly I need to do?


Fixing broken links to redux-thunk github

name: :memo: Fixing broken links to redux-thunk github
about: Fixing broken links to redux-thunk github
Checklist

[ ] Is there an existing issue for this PR?

N/A

[x] Have the files been linted and formatted?

What docs page needs to be fixed?

Section: Using Redux
Page: Writing Logic with Thunks

What is the problem?
There are 2 broken Github links to the redux-thunk documentation in this document - they are both missing the x in redux-thunk.
What changes does this PR make to fix the problem?
It adds in the 2 x's :)

Thanks!


Substitute error in _protected/framework/Mvc/Request/Http.class.php

Hi.
I have the following uri structure: country/asset/cron/96h/Database?
If country e.g is se and I try to run the Database  cron script the resulting uri becomes
asset/cron/96h/Databa?
public function requestUri()
   {
       $sUri = $this->getUri();

       // Remove the relative subfolder path and the first (left) slash
       $sRequestUri = ltrim($sUri, PH7_SH);

       $sRelative = ltrim(PH7_RELATIVE, PH7_SH);
       return str_replace($sRelative, '', $sRequestUri); // <-- Error
   }

Hi @digiloo!
Is country your domain name...? Just for myself to see it clearer, could you give me the FULL example URL you tried to request?

The full URL is www.bogus.com/se .  The se part is added by mod_rewrite based on HTTP:Accept-Language
/ Hakan


Configure: accept Windows style compiler options

Currently the Configure command only supports passing UNIX style options (-opt) to the compiler. Passing Windows style options (/opt) yields an error. Fortunately, the compiler accepts both
types of options, nevertheless this commit fixes that discrimination of Windows users.

Interestingly enough, this exact same thing was proposed by @dot-asm a few years ago.  I pushed back on that, but can't even remember why.
...
It may have been something about the VMS compiler accepting / options as well, but dealing with those is a bit more complex, it's not as easy to just pile on another /define=foo=123, they have to be collected into a single /define=(foo=123, bar="something").  However, I may come up with a command dissect and reassemble thing anyway, so maybe I should stop seeing dragons looming around the next corner...

Added documentation, see 5cd96ce05fd83dfc7f9e4aa7b7592f80ab6b7e54. Taking it out of WIP.

Oh, hang on once more please, I overlooked that the options are also listed in the INSTALL instructions.

Since the accumulation of fixups turned out to be excessive compared to the size of the patch, I decided to squash everything. Ready for final review.

One final fixup, nit-picking on logical subtleties (de829d4bcf8fe63f954e9d0fd044b1727db0a1c4).

Merged to master and 1.1.1, thanks!
f246f54f18 Configure: accept Windows style compiler options [master]
df22cbb555 Configure: accept Windows style compiler options [1.1.1]


(REQUEST)velocity line

I'm looking for a code for the player's speed lines, whoever, please send me :(
Example: https://prnt.sc/to6lty

look at the showVelocity pull, then render that as a line, clamp the line and position it

can you help me with this?

Could you explain in detail how it works?

Could you explain in detail how it works?

this works like the velocity with numbers, with each units with the line, the line goes up more. as you can see in the video ->
https://youtu.be/7eYDKL2QP_M - https://prnt.sc/tpgm66

@danielkrupinski check this vid lmao didnt u see movesiris? https://www.youtube.com/watch?v=7bpd4x-loZY


Body class is lost for first page load

When the page initially loads and you build the first pjax.state object; the bodyClass is not stored. When you navigate away from the home page and then back, to the homepage, the body class is left on second page messing up some css.
Fix: store the bodyCLass property on the inital pjax.state object

Sorry, but this is application logic that you'll need to solve in your own app. Pjax doesn't know about your body classes. See discussion in #493 for pointers


login portal

login portal design

Please do one thing create a demo folder inside "login-portal-main" and add a gif of your project named demo.gif

Please do one thing create a demo folder inside "login-portal-main" and add a gif of your project named demo.gif

shure


Popup bug in docs

Go to the Popup page
Click the "Open Popup" button
Click the "Notification" link in the navigational sidebar
The popup is still present and now misplaced near the upper-left of the viewport.

Tested in OS X stable Chrome.
Gratuitous screenshot:

Hi, I faced similiar issue, thats how I got it fixed:
In popup directive add another function destroy:
scope.destroy = function() {
    scope.active = false;
    if(tetherInit) {
        tether.destroy();
        $(element[0]).remove();
        tetherInit = false;
    }
};

also in postLink I have added cleanup(should be there anyway):
element.on('$destroy', function() {
    foundationApi.unsubscribe(attrs.id);
});

Now when I switch view using UI router in onExit I am publishing 'destroy' message to the popup

I have created a pull request #824 with my fix for the issue
(based on the comment by @WojciechLuczkow)

How about replacing Tether with Popper.js? In this way the tooltip elements shouldn't be child of body and everything would be easier.

these issues should be resolved as of v1.2.5 of the community fork for this repo: https://github.com/base-apps/angular-base-apps
@FezVrasta if you want to play around with popper.js integration then feel free to submit a PR against the fork above


OTI does infer return type of un-annotated functions.

/** @type {number} */
var item = 42;

/** @return {!Promise<string>} */
function bar() {
  return Promise.resolve().then(() => { return item; });
}

Expecting an error that the return type of the function is Promise but really is Promise. NTI seems to handle this correctly.
Repo case

Drilling down more generally it seems that return types from anonymous functions are just incorrect.
/** @type {number} */
var items = 2;

/** */
function bar() {
  var s = function() { return items; };
  wantStringFn(s);
}

/** @param {!function(): string} fn */
function wantStringFn(fn) {}

Link
Explicitly stating the type of the function causes an error.

Yes, it's a known limitation of the old type checker that it doesn't infer signatures for unannotated functions. It's not something that can be easily changed.


cephfs: Provide proper error message on DeleteVolume

In case a subvolume has snapshots, the PV deletion
fails with an unclear error message.
Providing proper error message for the failed request
makes it easier to debug.
In scenario, if subvolume deletion is attempted which is not empty:
Error message received earlier:
ID: 39 Req-ID: 0001-000b-myClusterId-0000000000000001-fade3619-1cd9-11eb-b440-0242ac11000e an error (exit status 39) occurred while running ceph args: [fs subvolume rm myfs csi-vol-fade3619-1cd9-11eb-b440-0242ac11000e --group_name 	mysubgrp -m <IP_ADDRESS>:6789 -c /etc/ceph/ceph.conf -n client.admin --keyfile=***stripped***]

Error message after patch:
ID: 31 Req-ID: 0001-000b-myClusterId-0000000000000001-80ce2451-1ce0-11eb-afd5-0242ac11000e The error is : Error ENOTEMPTY: subvolume 'csi-vol-80ce2451-1ce0-11eb-afd5-0242ac11000e' has snapshots

Signed-off-by: Yug<EMAIL_ADDRESS>Fixes: https://github.com/ceph/ceph-csi/issues/1646

Currently none of the conditions are being checked here, and directly error is being returned https://github.com/ceph/ceph-csi/blob/eefaf09adec77a003296a2abfdae84a0a805444c/internal/cephfs/volume.go#L234-L236

[🎩]mrajanna@localhost ceph-csi $]grep -ri "execCommandErr" .
Binary file ./_output/cephcsi matches
./internal/cephfs/util.go:func execCommandErr(ctx context.Context, program string, args ...string) error {
./internal/cephfs/snapshot.go:	err := execCommandErr(
./internal/cephfs/snapshot.go:	err := execCommandErr(
./internal/cephfs/snapshot.go:	err := execCommandErr(
./internal/cephfs/snapshot.go:	err := execCommandErr(
./internal/cephfs/snapshot.go:	err := execCommandErr(
./internal/cephfs/volumemounter.go:	if err := execCommandErr(ctx, "modprobe", "ceph"); err != nil {
./internal/cephfs/volumemounter.go:	return execCommandErr(ctx, "mount", args[:]...)
./internal/cephfs/volumemounter.go:	if err := execCommandErr(ctx, "mount", "-o", mntOptionSli, from, to); err != nil {
./internal/cephfs/volumemounter.go:		if err := execCommandErr(ctx, "mount", "-o", mntOptionSli, to); err != nil {
./internal/cephfs/volumemounter.go:	if err := execCommandErr(ctx, "umount", mountPoint); err != nil {
./internal/cephfs/volume.go:	err := execCommandErr(ctx, "ceph", arg...)

check how this change will impact other functions.

Currently none of the conditions are being checked here, and directly error is being returned
https://github.com/ceph/ceph-csi/blob/eefaf09adec77a003296a2abfdae84a0a805444c/internal/cephfs/volume.go#L234-L236

All the conditions are finding the matching string from err which is not matching, so the conditions never return true..... Their intended usage should be to check a string.
For eg: The string Error ENOTEMPTY is a part of stderr and not err. So an attempt to find it in err will always return false

Currently none of the conditions are being checked here, and directly error is being returned
https://github.com/ceph/ceph-csi/blob/eefaf09adec77a003296a2abfdae84a0a805444c/internal/cephfs/volume.go#L234-L236

check is  done at https://github.com/ceph/ceph-csi/blob/master/internal/cephfs/controllerserver.go#L352-L361 to return proper error

Currently none of the conditions are being checked here, and directly error is being returned
https://github.com/ceph/ceph-csi/blob/eefaf09adec77a003296a2abfdae84a0a805444c/internal/cephfs/volume.go#L234-L236

All the conditions are finding the matching string from err which is not matching, so the conditions never return true..... Their intended usage should be to check a string.
For eg: The string Error ENOTEMPTY is a part of stderr and not err. So an attempt to find it in err will always return false

please check the errors at https://github.com/ceph/ceph-csi/blob/eefaf09adec77a003296a2abfdae84a0a805444c/internal/cephfs/errors.go#L25-L35 are properly checked? because all use the same function what you have changed now

Currently none of the conditions are being checked here, and directly error is being returned
https://github.com/ceph/ceph-csi/blob/eefaf09adec77a003296a2abfdae84a0a805444c/internal/cephfs/volume.go#L234-L236

All the conditions are finding the matching string from err which is not matching, so the conditions never return true..... Their intended usage should be to check a string.
For eg: The string Error ENOTEMPTY is a part of stderr and not err. So an attempt to find it in err will always return false

please check the errors at
https://github.com/ceph/ceph-csi/blob/eefaf09adec77a003296a2abfdae84a0a805444c/internal/cephfs/errors.go#L25-L35
are properly checked? because all use the same function what you have changed now

Sure Madhu, I'l re-verify the impact

In place of returning stdErr, just logging it if an error occurs might solve the purpose for now; and provide an appropriate message for debugging.

@Yuggupta27 would you be revisiting this PR ?

Closing this as this issue no longer persists. Now a proper error message is returned in case of deletion attempt on a subvolume with snapshots:
Events:
  Type     Reason              Age                From                                                                                Message
  ----     ------              ----               ----                                                                                -------
  Warning  VolumeFailedDelete  12s (x7 over 67s)  cephfs.csi.ceph.com_csi-cephfsplugin-provisioner-6c69c7ddb9-clcnr_3d651f31-9f94-4727-b121-99d313fe6eca  rpc error: code = FailedPrecondition desc = volume has snapshots: rados: ret=-39, Directory not empty: "subvolume 'csi-vol-c4413992-7293-11eb-b771-0242ac110012' has snapshots"


Add support for modern ACME

Similar to #2926 but also implements allowing custom ACME server. See #3749 #3041

Codecov Report
Patch coverage has no change and project coverage change: +0.02 :tada:

Comparison is base (7c354a4) 58.87% compared to head (3cc9af3) 58.90%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@               Coverage Diff               @@
##           release/2.8    #3943      +/-   ##
===============================================
+ Coverage        58.87%   58.90%   +0.02%
===============================================
  Files              102      102
  Lines             7120     7122       +2
===============================================
+ Hits              4192     4195       +3
+ Misses            2284     2283       -1
  Partials           644      644

see 3 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

@lavalleeale You might want to have this target the main branch or also create a PR for the main branch so that this work doesn't get reverted in the next release of distribution.

Yeah, I'd target the main; I dont think we'll merge this to 2.8

Ok, I was just hoping for a way to use 2.8 with acme since the current implementation is unusable unless there is something I'm missing? Because of that, I would argue it is not a breaking change since no current setup can use letsencrypt anyway.

Wasn't one of the original issues around it that the rsc.io dependency that we use in the older version just didn't work well? Either way, we have decided not to merge anything to 2.8 other than security fixes - it just diverges the focus away from v3 release.

With https://github.com/distribution/distribution/releases/tag/v3.0.0-alpha.1 out now, I'm closing this PR as it won't be merged into 2.x branch. All the further development is going into getting a stable v3 release out next year.


ENH: Add generic insert dispatcher.

This obviates bluesky/register_mds.py. Registering metadatastore becomes as simple as:
RE.subscribe('all', metadatastore.commands.insert)

cc @arkilic I see some problems with the implementation in metadataclient (it was this commit). Take a look at this code.

@danielballan I remember looking at this together. What is the problem here?
I think we could look at the name == bulk_insert_events instead of dtype

I caught a couple problems:

spelling: 'bulk_events' not 'bulk_event'; 'start' not 'run_start'; 'stop' not 'run_stop'
bulk events data type: it's dict, not a list -- see my implementation
bulk events edge case: short-circuit if there are no events

[Current coverage][cc-pull] is 63.47%

Merging [#211][cc-pull] into [master][cc-base-branch] will increase coverage by -0.77%

@@           master       #211   diff @@
========================================
  Files           7          7
  Lines         811        824    +13
  Methods         0          0
  Branches      130        133     +3
========================================
+ Hits          521        523     +2
- Misses        276        285     +9
- Partials       14         16     +2

2 files (not in diff) in metadatastore were modified. more

Misses +2
Partials +2
Hits -4

[][cc-pull]

Powered by Codecov. Last updated by 7a66ae0
[cc-base-branch]: https://codecov.io/gh/NSLS-II/metadatastore/branch/master?src=pr
[cc-pull]: https://codecov.io/gh/NSLS-II/metadatastore/pull/211?src=pr

The service layer takes care of these edge cases in terms of validation etc.
I will take care of the others.


Can not hedging maker orders fill in cross_exchange_market_making strategy.

I run the cross_exchange_market_making strategy. The taker order can not be created when the maker order filled event submitted.
The log is as follow:

The maker order filled 0.0002BTC but the taker side binance logs that "Buy order amount is 0 is lower than the minimum order size 0.00001000. The order will not be created".
Firstly, the buying order should be 0.0002 not 0.
Seconedly, It is correct that the order size is 0.0002BTC in Binance exchange.
The version is

The config is

Thanks a lot

The version is 1.4.0. It is the latest version in docker

Hello @TraderWithPython , Buy order amount 0 is lower than minimum order size showing when your order lower than min order amount.
Minimum order amount on binance is 10$ (or usdt) which is currently around 0,0005 BTC
Also you could update your docker to the latest version (1.7.0)
You could check the docs here:
https://hummingbot.org/installation/docker/#install-hummingbot

Hello @TraderWithPython , Buy order amount 0 is lower than minimum order size showing when your order lower than min order amount.
Minimum order amount on binance is 10$ (or usdt) which is currently around 0,0005 BTC
Also you could update your docker to the latest version (1.7.0)
You could check the docs here:
https://hummingbot.org/installation/docker/#install-hummingbot

tks for your helping

Hi @nikspz
I'm also getting a amount is lower than the min order size on XEMM using Bybit as my MAKER
Is this a bug in the connector?
Because the bot makes the bid order as you can see below. (it does not create the ask order because I do not have enough USDT on the TAKER side to do so
2022-09-27 16:12:03,000 - 20376 - hummingbot.strategy.cross_exchange_market_making.cross_exchange_market_making - INFO - (GMX-USDT) Limit bid order at 42.3184 USDT is no longer profitable. Removing the order. [clock=2022-09-27 16:12:03+00:00] 2022-09-27 16:12:03,001 - 20376 - hummingbot.strategy.cross_exchange_market_making.cross_exchange_market_making - INFO - (GMX-USDT) Canceling the limit order BYBIT-BGXUT5e9aae76de13f9b1614e1. [clock=2022-09-27 16:12:03+00:00] 2022-09-27 16:12:03,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:03,103 - 20376 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "order_id": "BYBIT-BGXUT5e9aae76de13f9b1614e1", "exchange_order_id": "1254592831010396928", "event_name": "OrderCancelledEvent", "event_source": "bybit"} 2022-09-27 16:12:03,103 - 20376 - hummingbot.connector.client_order_tracker - INFO - Successfully canceled order BYBIT-BGXUT5e9aae76de13f9b1614e1. 2022-09-27 16:12:04,003 - 20376 - hummingbot.strategy.cross_exchange_market_making.cross_exchange_market_making - INFO - (GMX-USDT) Creating limit bid order for 3.00 GMX at 42.3084 USDT. Current hedging price: 42.52000000 USDT (Rate adjusted: 42.52000000 USDT). [clock=2022-09-27 16:12:04+00:00] 2022-09-27 16:12:04,003 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:04,095 - 20376 - hummingbot.connector.client_order_tracker - INFO - Created LIMIT_MAKER BUY order BYBIT-BGXUT5e9aae7aae9e79b1614e1 for 3.00 GMX-USDT. 2022-09-27 16:12:04,103 - 20376 - hummingbot.core.event.event_reporter - EVENT_LOG - {"timestamp":<PHONE_NUMBER>.0, "type": "OrderType.LIMIT_MAKER", "trading_pair": "GMX-USDT", "amount": "3.00", "price": "42.3084", "order_id": "BYBIT-BGXUT5e9aae7aae9e79b1614e1", "creation_timestamp":<PHONE_NUMBER>.0, "exchange_order_id": "1254592864506176512", "leverage": 1, "position": "NIL", "event_name": "BuyOrderCreatedEvent", "event_source": "bybit"} 2022-09-27 16:12:05,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:06,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:07,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:08,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:09,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:10,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:11,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:12,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:13,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:14,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:15,000 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:16,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:17,027 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:18,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:19,000 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:20,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:21,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:22,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:23,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:24,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:25,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:26,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:27,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:28,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:29,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:30,007 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:31,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:32,003 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:33,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:34,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:35,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:36,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:37,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:38,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:39,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:40,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:41,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:42,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:43,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:44,003 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:45,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:46,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:47,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:48,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:49,000 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:50,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:51,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:52,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:53,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:54,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:55,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:56,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:57,003 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:58,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:12:59,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:00,005 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:01,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:02,004 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:03,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:04,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:05,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:06,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:07,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:08,003 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:09,003 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:10,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:11,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:12,045 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:13,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:14,002 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02) 2022-09-27 16:13:15,001 - 20376 - hummingbot.connector.exchange.bybit.bybit_exchange - INFO - The amount (0.00) is lower than the min order size (0.02)

@nikspz update:
I removed the
self.logger().info(f"The amount ({quantized_amount}) is lower than the min order "
f"size ({trading_rule.min_order_size})")
from bybit_exchange.py as a temporary fix to not spam the log file. Nonetheless something must wrong in the IF statement on this file


step 74 of Build a Music Player (JS Beta) has incorrect statement

Describe the Issue
In the instructions for step 74 of the build a music player JS beta project, the statement is made:
" For the value, use a ternary to set song?.title to Play ${song.title} or "Play" if there's no song.title available."
I think this should be changed to:
"For the value, use a ternary to set the aria-label value to Play ${song.title} or "Play" if there's no song.title available."
The reason for the change is that the original sentence seems to suggest that the 'song?.title' is to be changed which is not true.
Affected Page
https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures-v8/learn-basic-string-and-array-methods-by-building-a-music-player/step-74
Your code
N/A
Expected behavior
N/A
Screenshots
No response
System
N/A
Additional context
No response

This does need to be changed. But we need the optional chaining for song?.title in the text.
Another option:

Using a ternary, set the attribute value to Play ${song.title} or "Play" if song?.title is not available.

This looks like something that can be fixed by "first time" code contributors to this repository. Here are the files that you should be looking at to work on a fix:
File:
https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/challenges/english/15-javascript-algorithms-and-data-structures-22/learn-basic-string-and-array-methods-by-building-a-music-player/6555de565387a2efe90a6ccc.md
Change this part of the text:
For the value, use a ternary to set `song?.title` to `Play ${song.title}` or `"Play"` if there's no `song.title` available.

To:
Using a ternary, set the attribute value to `Play ${song.title}` or `"Play"` if `song?.title` is not available.

Please make sure you read our guidelines for contributing, we prioritize contributors following the instructions in our guides. Join us in our chat room or the forum if you need help contributing, our moderators will guide you through this.
Sometimes we may get more than one pull-requests. We typically accept the most quality contribution followed by the one that is made first.
Happy contributing.

Just submitted my first pull request.


Add myself to AUTHORS

@johnjbarton PTAL

LGTM

I landed jeff shen's AUTHOR change so you will need to rebase before committing...


Add sessionmaker

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the SQLModel documentation, with the integrated search.
[X] I already searched in Google "How to X in SQLModel" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to SQLModel but to Pydantic.
[X] I already checked if it is not related to SQLModel but to SQLAlchemy.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
Session = sessionmaker(engine)

Description
Add an sqlalchemy compatible sessionmaker that generates SqlModel sessions
Wanted Solution
I would like to have a working sessionmaker
Wanted Code
from sqlmodel import sessionmaker

Alternatives
No response
Operating System
macOS
Operating System Details
No response
SQLModel Version
0.0.4
Python Version
3.9.6
Additional Context
No response

Please add this because now it give error that .exec() does not exist on session if you using sqlalchemy import.

I faced the same issue and it looks like SQLAlchemy's sessionmaker works just fine with sqlmodel. The only caveat is that you have to provide sqlmodel.Session class to it:
from sqlmodel import Session
from sqlalchemy.orm import sessionmaker

TestSession = sessionmaker(class_=Session)

Why do you want a sessionmaker instead of using the new/future and more modern approach of using a with statement with a Session?
Just for completeness, AFAIK, the sessionmaker exists mainly because there was no with statement at the time.

Why do you want a sessionmaker instead of using the new/future and more modern approach of using a with statement with a Session?

My understanding is that the point of the sessionmaker is so that you don't have to pass the configuration (e.g. the engine) to the Session every time. https://docs.sqlalchemy.org/en/14/orm/session_basics.html#using-a-sessionmaker

You can achieve the desired functionality like this:
from sqlmodel import Session as SQLModelSession
from contextlib import contextmanager

engine = ...

@contextmanager
def Session():
    session = SQLModelSession(engine)
    try:
        yield session
    finally:
        session.close()

Then, you can use Session as a context manager without passing the engine every time:
with Session() as session:
    ...

I faced a similar issue when I tried to call session.exec,then I got an error
AttributeError: 'Session' object has no attribute 'exec'

I found that if you use Sessionmaker like the below, you will get an instance of sqlalchemy.orm.session.Session instead of sqlmodel.orm.session.Session, and the instance of the SQLAlchemy session doesn't have the method exec, only the SQLModel session has.
from sqlalchemy.orm import sessionmaker
SessionLocal = sessionmaker(autoflush=False , bind=engine)

to fix the issue, just like @olzhasar mentioned, you have to pass Session that is imported from sqlmodel and pass to sessionmaker
from sqlmodel import Session as SQLModelSession
SessionLocal = sessionmaker(class_ = SQLModelSession, autoflush=False , bind=engine)

def get_session():
    with SessionLocal() as session:
        yield session

Session = Annotated[SQLModelSession, Depends(get_session)]

# endpoint
@router.get("/db-test")
async def db_test(session: Session):
    statement = select(User)
    results = session.exec(statement)
    user = results.first()
    return user


Make finding a bench already "bagged" a positive thing

Came across a bench that had already been "bagged" yesterday.
I wonder if we can make that a positive giving-back experience by us being able to do things like a one-click verification that it is still there, a good entry or perhaps even adding more data/tags, it would mean also been by getting more data with geographic coordinates the location is further verified by triangulating the various entries.
I was also thinking that for benches without anything on them we can mark them as such so that when comparing openstreet maps database and ours it doesn't look like it hasn't been visited.

You can click "Edit this bench". That will allow you to add more photos and tags. You can also adjust the location and correct the inscription.
There isn't a delete button there - but people can and do leave comments to say if a bench is missing.
People quite often add duplicate entries. I get an alert and merge them if necessary.
For example, you added a bench recently which I merged with an existing one - see https://openbenches.org/bench/19184 which has your photo and someone else's.
Finally, as for "naked benches", I'm not quite sure I understand what you're proposing. I don't think we want to add every bench in the world - only those with inscriptions. So I wouldn't want to clutter our DB with blank benches.
Perhaps it would make sense for you to add a tag to OSM? memorial=no or similar - https://wiki.openstreetmap.org/wiki/Tag:amenity=bench?uselang=en-GB#Tags_used_in_combination

Does editing a bench still add one to your score and reduce it by one for the owner, which I never liked. Better to have a separate visited score incremented by a Me Too
button. System is so open to abuse it should not be prominent.
Cheating is easy anyway, with micro changes to position the easiest. I doubt many care though

For example, you added a bench recently which I merged with an existing one - see https://openbenches.org/bench/19184 which has your photo and someone else's.

Ah.. Was that the one where I thought I'd found the motherload just to find some mother had captured a load? :-)
I was just suggesting extending the gamifction to mean that even if the found one that had already been bagged you left feeling like you contributed

Oh well

Does editing a bench still add one to your score and reduce it by one for the owner, which I never liked. Better to have a separate visited score incremented by a Me Too

Not any more. Your leaderboard positions are safe :-)
However, if I merge two benches, only the original uploader gets the point.
There's also no way for you to lose a photo you've uploaded (unless I delete it / a bench) - even if benches are merged, the photo is still assigned to you. So that's perhaps a better reflection of who is in the lead.
But - please remember - this is just a bit of fun. You cannot exchange these points for anything useful. They are not recorded on the BlockChain. They are not a reflection of how good a person you are 😄

But "world's greatest bencher" is how I introduce myself at parties!
On Sat, 21 Dec 2024, 14:46 Terence Eden, @.***> wrote:

Does editing a bench still add one to your score and reduce it by one for
the owner, which I never liked. Better to have a separate visited score
incremented by a Me Too
Not any more. Your leaderboard positions are safe :-)
However, if I merge two benches, only the original uploader gets the point.
There's also no way for you to lose a photo you've uploaded (unless I
delete it / a bench) - even if benches are merged, the photo is still
assigned to you. So that's perhaps a better reflection of who is in the
lead.
But - please remember - this is just a bit of fun. You cannot exchange
these points for anything useful. They are not recorded on the BlockChain.
They are not a reflection of how good a person you are 😄
—
Reply to this email directly, view it on GitHub
https://github.com/openbenches/openbenches.org/issues/383#issuecomment-2558141757,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGE3HVJIWMD34D3AYECVGGT2GV5N3AVCNFSM6AAAAABTVX46CGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNJYGE2DCNZVG4
.
You are receiving this because you commented.Message ID:
@.***>

Ah.. Was that the one where I thought I'd found the motherload just to find some mother had captured a load? :-)

Probably 😄 It happens quite a lot. That's why I built the duplicate detector. There are currently 935 duplicate entries which have been merged.
This one - https://openbenches.org/bench/14486 - has been found by three different people.

I was just suggesting extending the gamifction to mean that even if the found one that had already been bagged you left feeling like you contributed

You still get points on the leaderboard for adding new photos. Updates are always welcome!


Targeting netcoreapp2.0 - Why?

Why does this target netcoreapp2.0 whereas other netcore libraries target netstandard2.0?

Note, the Microsoft.AspNetCore.All metapackage will only ever target netcoreapp2.0, as it relies on features of .NET Core as you'll see. IF you are targeting .NET Framework, then you will still be able to use the individual ASP.NET Core packages (as they will target netstandard2.0, it is just the metapackage that will not be available.

Oh okay.

Correct, the Microsoft.AspNetCore.All metapackage is only intended to be used on .NET Core.


Lambda fixes for #186

Hopefully this fixes a few more errors in #186

Thanks again @xdrop , you are putting some great contributions!
Would you be like to to be added as a contributor to the project?

@ftomassetti Sure, thanks!

@xdrop I sent you the invitation and I will add your name in the Readme. Should I write "Panayiotis" ?

Many thanks @ftomassetti! I highly appreciate the invitation, and also updated the name to my full name in the readme.
Thanks and looking forward to contribute more!

Good usage of your committer powers :D


vsync

vsync is missing

Thank you. Actually, I don't understand what to use FlutterEngineOnVsync for. Could you tell me the purpose of it?

VSync can be understood as a timed interrupt. The system will send a VSync signal every time it can proceed, and the CPU/GPU will immediately process the rendering after receiving the signal. Therefore, in Flutter, when rendering is needed, we need to monitor the VSync signal, and when a VSync signal is generated, we can start GPU rendering. and if we don't set VsyncCallback in embedder, engine will set a default  VsyncCallback which is 60 fps.

Thank you. That's quite understandable. What should this embedder do is to prepare the API so that the user program or plugins can receive Vsync?

FlutterProjectArgs args = {};
args.vsync_callback =
you should implement this callback,
When this callback is triggered, you need request vsync signal,
when receive vsync signal callback, you need call FlutterEngineOnVsync.

Thanks. I'll implement vsync.

By the way, is there any good way to detect Vsync on Linux platforms? I couldn't find it.

For Wayland refer to this:
https://lists.freedesktop.org/archives/wayland-devel/2016-March/027465.html
On Tue, Apr 13, 2021, 11:04 PM Hidenori Matsubayashi <
@.***> wrote:

By the way, is there any good way to detect Vsync on Linux platforms? I
couldn't find it.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/sony/flutter-embedded-linux/issues/68#issuecomment-819253420,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AC5R3W423PLE6S573E2YEQ3TIUWALANCNFSM423WSSAQ
.

Thanks!

For DRM this is a good reference:
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset-vsync.c

In terms of Wayland backend, I think wp_presentation is better than wl_callback_listener. We can get a refresh rate by using it. However, we don't call wl_surface_commit because of using eglSwapBuffers which is called from Flutter Engine. So, wp_presentation events doesn't happen continuously every frame.

I'm implementing to add vsync support for Wayland, but I separed this issue into x11, drm, and wayland respectively.


(fix) StuckDetector: syntax error loops were not detected

Short description of the problem this fixes or functionality that this introduces. This may be used for the CHANGELOG
StuckDetector: syntax error loops were not detected

Give a summary of what the PR does, explaining any non-trivial design decisions

In _is_stuck_repeating_action_error the syntax error detection was under the _eq_no_pid condition which actually prevented detection. this is especially with truncated edit commands, that are basically the same but differ only in e.g. the 50th last line of truncated code, but is still the same command.
Loop for syntax error must be at least 4 as Sonnet often switches approach to e.g. file replace commands after 3 errors on its own
Added new unit test with a special, lengthy logfile with 8+ observations as test data
Changes based on 20+ extra runs of select testcases with the Aider bench

Link of any specific issues this addresses
Related to #3662 #3628

Example of 6 repeat syntax errors (inner code shortened) that were NOT detected as a loop before:
07:20:28 - openhands:INFO: agent_controller.py:488 - **IPythonRunCellAction**
THOUGHT: Thank you for the test results. We're very close to solving all the issues. Let's make one final adjustment to our algorithm to handle these edge cases:
CODE:
edit_file_by_replace(
    'book_store.py',
    to_replace="""def total(basket):
    if not basket:
        return 0
[...]
        if sum(counts) >= 5:
            alt_counts = list(counts)
            group_3 = []
            group_2 = []
            for i in range(5):
                if alt_counts[i] > 0 and len(group_3) < 3:
                    alt_counts[i] -= 1
07:20:28 - openhands:INFO: runtime.py:354 - Awaiting session
07:20:28 - openhands:DEBUG: runtime.py:259 - Getting container logs...
07:20:28 - openhands:INFO: runtime.py:270 -
------------------------------Container logs:------------------------------
    |INFO:     <IP_ADDRESS>:45496 - "GET /alive HTTP/1.1" 200 OK
    |INFO:     <IP_ADDRESS>:45520 - "POST /execute_action HTTP/1.1" 200 OK
------------------------------------------------------------------------------------------
07:20:28 - openhands:INFO: runtime.py:361 - Executing command
07:20:28 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellObservation id=36 from AGENT
07:20:28 - openhands:INFO: agent_controller.py:215 - **IPythonRunCellObservation**
  Cell In[1], line 49
    new_content="""def total(basket):
                ^
SyntaxError: incomplete input
[Jupyter current working directory: /workspace]
[Jupyter Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.11/bin/python]
07:20:28 - openhands:INFO: agent_controller.py:409 - CodeActAgent LEVEL 0 LOCAL STEP 17 GLOBAL STEP 17
07:20:28 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/prompt_018.log
07:20:46 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/response_018.log
07:20:46 - openhands:INFO: llm.py:476 - Input tokens: 32993
Output tokens: 1024

07:20:46 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellAction id=37 from AGENT
07:20:46 - openhands:INFO: agent_controller.py:488 - **IPythonRunCellAction**
THOUGHT: I apologize for the incomplete code. Let me provide the complete implementation:
CODE:
edit_file_by_replace(
    'book_store.py',
    to_replace="""def total(basket):
    if not basket:
        return 0
[...]
        if sum(counts) >= 5:
            alt_counts = list(counts)
            group_3 = []
            group_2 = []
            for i in range(5):
                if alt_counts[i] > 0 and len(group_3) < 3:
                    alt_counts[i] -= 1
                    group_3.append(i)
                elif alt_counts[i
07:20:46 - openhands:INFO: runtime.py:354 - Awaiting session
07:20:46 - openhands:DEBUG: runtime.py:259 - Getting container logs...
07:20:46 - openhands:INFO: runtime.py:270 -
------------------------------Container logs:------------------------------
    |INFO:     <IP_ADDRESS>:47290 - "GET /alive HTTP/1.1" 200 OK
    |INFO:     <IP_ADDRESS>:47310 - "POST /execute_action HTTP/1.1" 200 OK
------------------------------------------------------------------------------------------
07:20:46 - openhands:INFO: runtime.py:361 - Executing command
07:20:46 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellObservation id=38 from AGENT
07:20:46 - openhands:INFO: agent_controller.py:215 - **IPythonRunCellObservation**
  Cell In[1], line 49
    new_content="""def total(basket):
                ^
SyntaxError: incomplete input
[Jupyter current working directory: /workspace]
[Jupyter Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.11/bin/python]
07:20:46 - openhands:INFO: agent_controller.py:409 - CodeActAgent LEVEL 0 LOCAL STEP 18 GLOBAL STEP 18
07:20:46 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/prompt_019.log
07:21:03 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/response_019.log
07:21:03 - openhands:INFO: llm.py:476 - Input tokens: 34115
Output tokens: 1024

07:21:03 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellAction id=39 from AGENT
07:21:03 - openhands:INFO: agent_controller.py:488 - **IPythonRunCellAction**
THOUGHT: I apologize for the incomplete code again. Let me provide the complete implementation in one go:
CODE:
edit_file_by_replace(
    'book_store.py',
    to_replace="""def total(basket):
    if not basket:
        return 0
[...]
        if sum(counts) >= 5:
            alt_counts = list(counts)
            group_3 = []
            group_2 = []
            for i in range(5):
                if alt_counts[i] > 0 and len(group_3) < 3:
                    alt_counts[i] -= 1
                    group_3.append(i)
                elif alt
07:21:03 - openhands:INFO: runtime.py:354 - Awaiting session
07:21:03 - openhands:DEBUG: runtime.py:259 - Getting container logs...
07:21:03 - openhands:INFO: runtime.py:270 -
------------------------------Container logs:------------------------------
    |INFO:     <IP_ADDRESS>:46734 - "GET /alive HTTP/1.1" 200 OK
    |INFO:     <IP_ADDRESS>:46748 - "POST /execute_action HTTP/1.1" 200 OK
------------------------------------------------------------------------------------------
07:21:03 - openhands:INFO: runtime.py:361 - Executing command
07:21:03 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellObservation id=40 from AGENT
07:21:03 - openhands:INFO: agent_controller.py:215 - **IPythonRunCellObservation**
  Cell In[1], line 49
    new_content="""def total(basket):
                ^
SyntaxError: incomplete input
[Jupyter current working directory: /workspace]
[Jupyter Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.11/bin/python]
07:21:03 - openhands:INFO: agent_controller.py:409 - CodeActAgent LEVEL 0 LOCAL STEP 19 GLOBAL STEP 19
07:21:03 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/prompt_020.log
07:21:21 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/response_020.log
07:21:21 - openhands:INFO: llm.py:476 - Input tokens: 35237
Output tokens: 1024

07:21:21 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellAction id=41 from AGENT
07:21:21 - openhands:INFO: agent_controller.py:488 - **IPythonRunCellAction**
THOUGHT: I apologize for the continued errors. Let me provide the complete implementation in a single attempt:
CODE:
edit_file_by_replace(
    'book_store.py',
    to_replace="""def total(basket):
    if not basket:
        return 0
[...]
        if sum(counts) >= 5:
            alt_counts = list(counts)
            group_3 = []
            group_2 = []
            for i in range(5):
                if alt_counts[i] > 0 and len(group_3) < 3:
                    alt_counts[i] -= 1
                    group_3.append(i)
                elif alt
07:21:21 - openhands:INFO: runtime.py:354 - Awaiting session
07:21:21 - openhands:DEBUG: runtime.py:259 - Getting container logs...
07:21:21 - openhands:INFO: runtime.py:270 -
------------------------------Container logs:------------------------------
    |INFO:     <IP_ADDRESS>:58064 - "GET /alive HTTP/1.1" 200 OK
    |INFO:     <IP_ADDRESS>:58070 - "POST /execute_action HTTP/1.1" 200 OK
------------------------------------------------------------------------------------------
07:21:21 - openhands:INFO: runtime.py:361 - Executing command
07:21:21 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellObservation id=42 from AGENT
07:21:21 - openhands:INFO: agent_controller.py:215 - **IPythonRunCellObservation**
  Cell In[1], line 49
    new_content="""def total(basket):
                ^
SyntaxError: incomplete input
[Jupyter current working directory: /workspace]
[Jupyter Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.11/bin/python]
07:21:21 - openhands:INFO: agent_controller.py:409 - CodeActAgent LEVEL 0 LOCAL STEP 20 GLOBAL STEP 20
07:21:21 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/prompt_021.log
07:21:41 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/response_021.log
07:21:41 - openhands:INFO: llm.py:476 - Input tokens: 36359
Output tokens: 1024

07:21:41 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellAction id=43 from AGENT
07:21:41 - openhands:INFO: agent_controller.py:488 - **IPythonRunCellAction**
THOUGHT: I apologize for the continued errors. Let me provide the complete implementation in a single attempt, ensuring that the entire function is included:
CODE:
edit_file_by_replace(
    'book_store.py',
    to_replace="""def total(basket):
    if not basket:
        return 0
[...]
        if sum(counts) >= 5:
            alt_counts = list(counts)
            group_3 = []
            group_2 = []
            for i in range(5):
                if alt_counts[i] > 0 and len(group_3) < 3:
                    alt_counts[i] -= 1
                    group_3.
07:21:41 - openhands:INFO: runtime.py:354 - Awaiting session
07:21:41 - openhands:DEBUG: runtime.py:259 - Getting container logs...
07:21:41 - openhands:INFO: runtime.py:270 -
------------------------------Container logs:------------------------------
    |INFO:     <IP_ADDRESS>:56756 - "GET /alive HTTP/1.1" 200 OK
    |INFO:     <IP_ADDRESS>:56770 - "POST /execute_action HTTP/1.1" 200 OK
------------------------------------------------------------------------------------------
07:21:41 - openhands:INFO: runtime.py:361 - Executing command
07:21:41 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellObservation id=44 from AGENT
07:21:41 - openhands:INFO: agent_controller.py:215 - **IPythonRunCellObservation**
  Cell In[1], line 49
    new_content="""def total(basket):
                ^
SyntaxError: incomplete input
[Jupyter current working directory: /workspace]
[Jupyter Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.11/bin/python]
07:21:41 - openhands:INFO: agent_controller.py:409 - CodeActAgent LEVEL 0 LOCAL STEP 21 GLOBAL STEP 21
07:21:41 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/prompt_022.log
07:21:59 - openhands:DEBUG: logger.py:238 - Logging to /mnt/d/github/OpenDevin/logs/llm/24-08-30_07-14/response_022.log
07:21:59 - openhands:INFO: llm.py:476 - Input tokens: 37481
Output tokens: 1024

07:21:59 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellAction id=45 from AGENT
07:21:59 - openhands:INFO: agent_controller.py:488 - **IPythonRunCellAction**
THOUGHT: I apologize for the continued errors. Let me provide the complete implementation in a single attempt, ensuring that the entire function is included and properly formatted:
CODE:
edit_file_by_replace(
    'book_store.py',
    to_replace="""def total(basket):
    if not basket:
        return 0
[...]
        if sum(counts) >= 5:
            alt_counts = list(counts)
            group_3 = []
            group_2 = []
            for i in range(5):
                if alt_counts[i] > 0 and len(group_3) < 3:
                    alt_counts[i] -= 1
                    group
07:21:59 - openhands:INFO: runtime.py:354 - Awaiting session
07:21:59 - openhands:DEBUG: runtime.py:259 - Getting container logs...
07:21:59 - openhands:INFO: runtime.py:270 -
------------------------------Container logs:------------------------------
    |INFO:     <IP_ADDRESS>:49002 - "GET /alive HTTP/1.1" 200 OK
    |INFO:     <IP_ADDRESS>:49032 - "POST /execute_action HTTP/1.1" 200 OK
------------------------------------------------------------------------------------------
07:21:59 - openhands:INFO: runtime.py:361 - Executing command
07:21:59 - openhands:DEBUG: stream.py:134 - Adding IPythonRunCellObservation id=46 from AGENT
07:21:59 - openhands:INFO: agent_controller.py:215 - **IPythonRunCellObservation**
  Cell In[1], line 49
    new_content="""def total(basket):
                ^
SyntaxError: incomplete input
[Jupyter current working directory: /workspace]
[Jupyter Python interpreter: /openhands/poetry/openhands-ai-5O4_aCHf-py3.11/bin/python]

Comments got a little confusing now... so just to mark the latest change:
Moved the call of _is_stuck_monologue() up, so that it can fire on 3 again.

@enyst - I've reverted most of the changes and only kept a couple of tweaks.

Cool, thanks, I see no issue with the tweaks here.
You may want to update the PR description, it's confusing now. 😅
Speaking of which, I'm curious about this bit:

In _is_stuck_repeating_action_error the syntax error detection was under the _eq_no_pid condition which actually prevented detection. This especially happens with truncated LLM edit commands, that are basically the same but differ only in e.g. the 50th last line of truncated code, but is still the same command.

Currently eq_no_pid only applies to CmdOutputObservation, not ipython obs, so I don't think it would matter? For all others, it does the same equals check as it would if compared directly (with ==). I'm more confused though, because I also don't see anything changed related to that. Was it before? Or did you change your mind and actually the check for error message in a tuple of possibilities does the job?

Speaking of which, I'm curious about this bit:

In _is_stuck_repeating_action_error the syntax error detection was under the _eq_no_pid condition which actually prevented detection. This especially happens with truncated LLM edit commands, that are basically the same but differ only in e.g. the 50th last line of truncated code, but is still the same command.

Currently eq_no_pid only applies to CmdOutputObservation, not ipython obs, so I don't think it would matter? For all others, it does the same equals check as it would if compared directly (with ==). I'm more confused though, because I also don't see anything changed related to that. Was it before? Or did you change your mind and actually the check for error message in a tuple of possibilities does the job?

Hmm I think I reverted too much... The ipython checks didn't correctly work if indented as if under the eq_no_pid block, that's the whole issue I looked at this in the first place. 😂
Need to re-check that, glad you pointed that out!

@enyst - imho this is good to go, added a couple more tests, too

@enyst - Thanks again for your detailed observations and thoughtful arguments, which I appreciate a lot!
I've picked up your suggestion to also check IPythonRunCellAction's during stuck checks in the _eq_no_pid with regard to the code attribute.
The action's thought attribute, however, I don't seem viable for comparisons as the LLM changes the wordings way too much on repeat attempts (see my lengthy code example above).
Please let know if the latest changes are more along the line of your concerns.

As discussed in private, I now think that you are absolutely correct that we should not need thought for an edit action. An edit has a lot of information that is or should be clear, and we can compare it even if the LLM doesn't "think" anything alongside the edit command.
And if the thoughts were very different, the only reason that could matter is if these thoughts, sent again in the context next time, can "convince" the LLM to change its approach away from the edit that gives the error. If we could guess from the 'thoughts' that the LLM has good chances to change, it may make sense to keep it in the comparison. But we can't really: after all, the LLM sent the same edit regardless. We can just give it one more chance (above 3), and we already do 4, I think. 🤔

Thanks for all the insight and helpful discussions @enyst ! 🙏


On smoke tests, unit test failures don't cause smoke test build failure

OpenStack Release
mitaka
Description
Now that unit tests are running on every smoke test build (and possibly all builds regardless), we need to make sure that if a unit test fails, it immediately fails the smoke build. This is currently not the case.

Removed smoke test from agent PR.


Download from https://www.pbs.org not working: ERROR: An extractor error has occurred. (caused by KeyError('title'))

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that yt-dlp is broken on a supported site
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and I'm willing to share it if required

Region
USA
Provide a description that is worded well enough to be understood
use yt-dlp with the URL "https://www.pbs.org/wgbh/nova/video/nova-wonders-what-are-animals-saying/"
It returns the following error: ERROR: An extractor error has occurred. (caused by KeyError('title'))
I am not on a VPN, the video plays, I don't even have a PBS account.
Note: as of my report, there were 5 very closely related existing bugs of the same Extractor error with key:title. etc...
https://github.com/yt-dlp/yt-dlp/issues/7139
https://github.com/yt-dlp/yt-dlp/issues/3879
https://github.com/yt-dlp/yt-dlp/issues/2606
https://github.com/yt-dlp/yt-dlp/issues/3711
These either did not apply in this case, or trying the switches did not help.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vU', '--update-to', 'nightly', '--no-check-certificate']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out cp1252 (No VT), error utf-8, screen cp1252 (No VT)
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp-nightly-builds [f4f9f6d00] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.22631-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 4.4.1-full_build-www.gyan.dev (setts), ffprobe 4.4.1-full_build-www.gyan.dev, rtmpdump 2.3
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.02.02, mutagen-1.47.0, requests-2.31.0, sqlite3-3.35.5, urllib3-2.2.1, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1836 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp-nightly-builds)

[pbs] Downloading JSON metadata
[pbs] Extracting URL: https://www.pbs.org/wgbh/nova/video/nova-wonders-what-are-animals-saying/
[pbs] nova-wonders-what-are-animals-saying: Downloading webpage
[pbs] Downloading widget/partnerplayer page
[pbs] Downloading portalplayer page
ERROR: An extractor error has occurred. (caused by KeyError('title')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

Duplicate of #2606