Loading State Failed

Just dropping in to say the Loading State Failed is happening again. All books. All instances. OverDrive/Libby made a back-end change to close the recent fix @ahxxm developed. Hoping someone can take a look and implement an easy fix.

Same thing happening to me, hoping for a fix soon

Yep, same issue for me. Fingers crossed for a fix, but I understand why it might take a while.

Same for me. I hope a fix is imminent, this is one of the most useful apps ever.

I've never worked with FF extensions before but I decided to look into this.  I stepped through the code and it is failing in background.ts - handleTitle(details: { url?: string | URL; method?: string; requestId?: any; })
While parsing the TOC the Title has a link to overdrive terms and conditions instead of the book title.  Instead of a "path" to the TOC it has the text "_d/record_access_violation"
Not good.  This is not another format change like last time.  Overdrive server knows there are web requests being made that are not passing their security checks.
Hope this helps.

FYI, I have never worked with Firefox extensions before but I thought I would look into this error.  It is failing inside background.ts - handleTitle call to parseTOC.  The Overdrive server is returning a link to their "Terms and Conditions" instead of a Title and instead of a URL path it has "-d/access violation".  Obviously the et for the book TOC is not valid and OD server code has caught this.

Experiencing the same error as well.  Interestingly, on a very few occasions it will get past the above loading state error/failed and give that error here instead (can't screenshot my popup):

#
File
Task
Status

1

Loading State
Failed

2
Part01
Download
Running

3
Terms & Conditions: https://company.cdn.overdrive.com/policies/terms-and-conditions
Processing
Running

4

Waiting for State
Completed

5

Reloading Tab
Completed

Same here.  Will help support anyone with the skill and time to create a fix.  This extension is so valuable!!

Anyone find a solution or alternate resource?

My experience is lining up with all your reports. I have been able to get the same logs to trigger at least once. But they are always failing out.

I found how to manually download the audio of the audiobook, but it does not download the table of contents or create a .cue file so it's only sort of useful.
I only tested this in Firefox, but I'm sure it works in Chrome too.
Open Libby, then open developer tools (F12), and go to the network tab and type .mp3 in the Filter URLs box at the top. Open your audiobook and scrub through your audiobook. As you do you'll see the Part1.mp3 Part2.mp3 etc show up. Then right-click each mp3 and open in new tab, then right-click the player bar that opens and Save audio as...
Once you have all the parts of the audiobook you can probably use tools like AudioBookConverter and m4b-tool to find the chapters of the book and create the .cue files.
I'd also like to mention for those who don't know that bookbonobo has a Ko-Fi that you can donate to show your support.

One thing to note in the above instructions: when you get into the developers tool and go to the network tab, make sure that "All" is selected in those network settings.  Mine had been left on a different setting at first and, until I changed it, this did not work.  :)

I have mine set to ALL and am only seeing one result from the search. Hovering over it to read the URL it only says part 1. Opening in new tab works.

You still have to scrub through the entire book.

Is scrubbing just jumping the chapters?  That is what is am confused what is "part 1 " vs "part 2"  part xyz

Scrubbing is indeed just jumping the chapters.  Doing so should create a list of gobbledeegook file names which include the terms "part01.mp3 in them.

Thanks for helping me double confirm that. Awesome work everyone teaming up to get this looked into. Of course this happened right when my stuff came in after weeks of waiting.

When skipping through chapters make sure to pay attention to the filenames and make sure it doesn't skip any part numbers. I had a book that had multiple part files in one chapter so I had to skip through that chapter to make sure I got all of the audio files.
(And maybe skip through the whole of the last chapter to make sure you don't miss the very end of the book.)

Just confirmed with my test with parts1-20  all worked ask told to be scrapped.  THANKS!

Anyone find a solution or alternate resource?

The way I've been doing is the old overdrive way.
1- Locate your library on overdrive.com
2- Sign in and download the odm file.
3- Open it in the odm in the overdrive app. (see note below)
4- Copy the mp3 files to my desired location.
Note: If you don't have the overdrive app anymore you can still download the installation file at http://app.overdrive.com/downloads/ODMediaConsoleSetup.msi
See https://github.com/ping/odmpy/issues/69#issuecomment-2077853949

I've never seen where one could "download the odm file".

"download the odm file"
Have never seen a way to do this.

Do you see the "Have OverDrive for Mac/Windows"?
If you click on the down arrow, a button will show with the option to
download the mp.
On Wed, May 15, 2024 at 3:50 PM BLS-Pro @.***> wrote:

I've never seen where one could "download the odm file".
—
Reply to this email directly, view it on GitHub
https://github.com/bookbonobo/libby-download-extension/issues/206#issuecomment-2113342336,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6TR375LCZBAOQJGIYXPZGLZCO4BJAVCNFSM6AAAAABHPG23XGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJTGM2DEMZTGY
.
You are receiving this because you commented.Message ID:
@.***>

Do you see the "Have OverDrive for Mac/Windows"? If you click on the down arrow, a button will show with the option to download the mp.

Yeah.  After I posted I went back and finally discovered that hidden little detail.  You helped so quickly, you apparently saw my post before I deleted it.  Thanks!  :)

I found how to manually download the audio of the audiobook, but it does not download the table of contents or create a .cue file so it's only sort of useful. I only tested this in Firefox, but I'm sure it works in Chrome too. Open Libby, then open developer tools (F12), and go to the network tab and type .mp3 in the Filter URLs box at the top. Open your audiobook and scrub through your audiobook. As you do you'll see the Part1.mp3 Part2.mp3 etc show up. Then right-click each mp3 and open in new tab, then right-click the player bar that opens and Save audio as...
Once you have all the parts of the audiobook you can probably use tools like AudioBookConverter and m4b-tool to find the chapters of the book and create the .cue files.
I'd also like to mention for those who don't know that bookbonobo has a Ko-Fi that you can donate to show your support.

On my end the scrub resulted in about 20 small sub-parts of each "Part 1", "Part 2", etc. the workaround here is on one of each part, right click, and click resend. This redoes the call/GET to grab the entire part. You'll see the file size go from a few kB to a few tens of MB. From there you can follow the steps to save.

I have tried the manual way and only some files will download properly. They all play fine in Firefox but when you try to download some of them, they just sit and fail. I also tried on a remote computer. Is anyone else having this problem?

Anyone find a solution or alternate resource?

The way I've been doing is the old overdrive way. 1- Locate your library on overdrive.com 2- Sign in and download the odm file. 3- Open it in the odm in the overdrive app. (see note below) 4- Copy the mp3 files to my desired location.
Note: If you don't have the overdrive app anymore you can still download the installation file at http://app.overdrive.com/downloads/ODMediaConsoleSetup.msi See ping/odmpy#69 (comment)

This totally worked! Thank You! Do you bother with creating chapter .cue files?

Yeah this is where I’m at. Different method but end result is multiple mp3 files. I want to merge them into a singular file (AudioBookConverter) but I want to make a CUE file so when I open it in the Books at, it reads each chapter as a chapter and not each part or just one long “chapter”. Love to hear if people have any idea on how to do automatically

The following suggestion may already have been made here -- if so, I missed it:
Audiobooks downloaded in the old OverDrive format -- consisting of multiple mp3 part-files with the chapter info for each file embedded in a custom "OverDrive" tag -- can be converted to a single-file m4b with embedded chapters (plus a cue file if you choose that option) using the free inAudible for Windows, which even provides a chapter editor.
inAudible is designed to handle Audible aax files by default. Instead, follow the path "File -> Open -> MP3 Processing" and select the folder with your OverDrive download.
The first pass converts the mp3 files to a single wav and collects the chapter info. The second pass creates the m4b and embeds the chapters into the tags and creates the optional cue file.
See https://www.epubor.com/what-is-inaudible-software.html for a safe link to download inAudible.

The following suggestion may already have been made here -- if so, I missed it:
Audiobooks downloaded in the old OverDrive format -- consisting of multiple mp3 part-files with the chapter info for each file embedded in a custom "OverDrive" tag -- can be converted to a single-file m4b with embedded chapters (plus a cue file if you choose that option) using the free inAudible for Windows, which even provides a chapter editor.
inAudible is designed to handle Audible aax files by default. Instead, follow the path "File -> Open -> MP3 Processing" and select the folder with your OverDrive download.
The first pass converts the mp3 files to a single wav and collects the chapter info. The second pass creates the m4b and embeds the chapters into the tags and creates the optional cue file.
See https://www.epubor.com/what-is-inaudible-software.html for a safe link to download inAudible.

BLESS YOU JDISHINGTON, This worked perfectly, May you coffee or tea always be hot and may you hit every green light on all your travels :)

Some tips on using inAudible to convert OverDrive audiobooks:

I make sure no other programs are running in Windows, as inAudible seems to work entirely in memory. Restarting Windows beforehand may be a good idea if you've been doing a lot of work.

I change the location of the output from its default (unfortunately the same folder as the OverDrive input files) to "Desktop", since the output filenames are based on the internal name of the audiobook and may be too long for a subfolder with an already long path. I later rename the output files to short names before moving them to their final location.

The longer an audiobook is, the more likely I am to split it into two or more components (as even Audible does). For example, Tolstoy's "War and Peace" is about 50 file-parts and 60 hours and 360 chapters. Splitting it into two and converting each component separately is wise. In fact necessary in some cases, because inAudible doesn't seem to embed more than 256 chapters (though the cue file is complete).

The cue file has an extra dummy entry at the end which I delete.

I've never used the chapter editor, since it would have to be done in the suspended transition from phase one to two. If I want to touch up chapter names, I edit the cue file later with a text editor (saving a copy of the original) and then use AIMP to import (re-embed) the chapters from the cue file. Alternatively, I open the m4b in the AIMP chapter editor and modify the embedded chapter tags directly, afterwards exporting them to a new cue file.

I've found that the chapter start times created by inAudible can be out of sync by a few seconds with the actual ones that the narrator announces (probably an artifact of combining many files into one). For example, if you select "Chapter 8" from your player's chapter list, you may find that you're already a few seconds into it or you may hear the last few seconds of the previous chapter. This was also a problem with the Firefox extension. The mismatch seems to increase gradually as the audiobook progresses, so that in a very long one it can reach 20 or 30 seconds toward the end.

Steps to extract the toc and spine:

There is a image/jpg item that loads in with a large amount of data included inline
Grab its contents, split on ",".  Get the second item in the array
base64 decode this, split again on "-"
concatenate the first and last item in resulting array
Take resulting item, regex replace "/./g" -> "="
Regex replace again "/(.)(.)(.)(.)/g" -> "$4$3$2$1"
Base64 decode result.
This should give toc and spine.

Yeah this is happening to me too. I hope somebody is able to find a fix for the problem!

Steps to extract the toc and spine:
1. There is a image/jpg item that loads in with a large amount of data included inline
2. Grab its contents, split on ",".  Get the second item in the array
3. base64 decode this, split again on "-"
4. concatenate the first and last item in resulting array
5. Take resulting item, regex replace "/./g" -> "="
6. Regex replace again "/(.)(.)(.)(.)/g" -> "$4$3$2$1"
7. Base64 decode result.
8. This should give toc and spine.

Thanks for this.
Works perfectly in my implementation.

Steps to extract the toc and spine:

There is a image/jpg item that loads in with a large amount of data included inline
Grab its contents, split on ",".  Get the second item in the array
base64 decode this, split again on "-"
concatenate the first and last item in resulting array
Take resulting item, regex replace "/./g" -> "="
Regex replace again "/(.)(.)(.)(.)/g" -> "$4$3$2$1"
Base64 decode result.
This should give toc and spine.

Thanks for this. Works perfectly in my implementation, after adjusting the replacement regex to "$4$2$3$1"

When I tried this, I get to step 3 and base64 says X@OT&zӮ;}=Ȣpbase64: invalid input
Not sure what I'm doing wrong. I'm using the larger of the two images in the page (favicon vs book), the content does look encoded, I'm starting with this shell command:
cat bookname.jpg | cut -d ',' -f 2 | base64 -di
What did you use?

Steps to extract the toc and spine:

There is a image/jpg item that loads in with a large amount of data included inline

@username1233414125: What is the URL format of the request/response that's made? I'm not seeing it in Firefox or Chrome.

@curtisgibby There is not a separate network call being made. The data is part of the HTML being returned. Look for a large inline HTML image in the header.

@bckelly1 @curtisgibby Contents start with "data:img/jpeg;base64"  If saved in n.test, can be extracted using:
cat n.test | cut -d "," -f 2 | base64 -di | awk -F- '{ print $1$5 }' | perl -lape 's/\./=/g' | perl -lape 's/(.)(.)(.)(.)/$4$2$3$1/g' | base64 -di

I was able to get the TOC JSON on my Mac by removing the -i part of the base64 commands, i.e.
cat toc.txt | cut -d "," -f 2 | base64 -d | awk -F- '{ print $1$5 }' | perl -lape 's/\./=/g' | perl -lape 's/(.)(.)(.)(.)/$4$2$3$1/g' | base64 -d

(That's good!)
The JSON contains relative URLs to the actual MP3 files, so I'm unsure what the full URL to download them would be.
(That's bad!)
Is there a way to reverse-engineer what's happening in the JS in the Libby page, so that this whole process can be automated again? e.g. complete the steps 1-8 as listed here, then download the MP3s as before, package it all up as before, etc.?

If you check in the network tab, it appears that the URLS that are being fetches are like: https://dewey-16662931a0ffe78a26675bf5f70a34da.listen.libbyapp.com/{AA776BB5-B776-4B7B-83A4-01DD379408A7}Fmt425-Part03.mp3?cmpt=eyJzcGluZSI6Mn0%3D--6b023bcf7fabe703c508cdb5b7577e26cbfc0d86
The chunk after the / is what you are getting from the spine decoded.  The main URL, is obtainable as seen in the network tab from this screenshot:

When downloading using dev console, there's no need to reverse engineer the process. Consider it this way: despite the obfuscation, the tab contains spine and actual links to the actual media files. The interaction remains click -> JavaScript -> load media files, inspect the javascript object BIF(book information f.......?) and go from there

Is there any way to get this all automagically working as a Firefox extension again? Does @skittlesvampir 's fork work to correctly download all of the MP3 files?

No, Curtis, unfortunately my fork doesn't work anymore, as Libby is monitoring this repo and constantly breaking any fixes. I'm afraid there won't be a way to automatically download MP3s in Firefox. Merry Christmas

I received email notification today and spent sometime debugging my private codes to download from dev console, and found that they added some runtime params(2 parts joined by --?) to the media path, which I don't want to take a deeper look but could still be accessed by interacting with BIF, the workaround is also still sadly only possible from dev console. And due to the same big brother concern, I can only give you this hint.

I now just use Audacity to record the audio at night and I grab the TOC by inspecting the contents <ul> element and use python to parse that into a file with chapter times.  While not quick it is basically impossible to stop.

I now just use Audacity to record the audio at night and I grab the TOC by inspecting the contents <ul> element and use python to parse that into a file with chapter times. While not quick it is basically impossible to stop.

@MerlinGuy  What are the steps that you do to get the TOC?

I use the browser app so I click on the contents element to expand the chapter list.  I then use the inspect menu item to show the html.  Then select the <UL> element and copy the outer html.  Then I parse with python.


Bump pdf.js version for vulnerability

The pdf.js version should be updated to 4.2.67 in order to address the vulnerability shown below.

+1

+1

@ol-th Could you please upgrade the pdf.js dependency version when you find the time? It would be much appreciated. Thank you! (On a semi-related note, I've also opened PR #56 to be able to control whether eval is allowed)

+1

Hi @ol-th I wonder when we should expect this issue to be resolved? Thanks

Would be really nice if this gets fixed soon.

+1, this still needs to be resolved

Same here:
npm audit report
pdfjs-dist  <=4.1.392
Severity: high
PDF.js vulnerable to arbitrary JavaScript execution upon opening a malicious PDF - https://github.com/advisories/GHSA-wgrm-67xf-hhpq
No fix available
node_modules/pdfjs-dist
pdf-img-convert  *
Depends on vulnerable versions of pdfjs-dist
node_modules/pdf-img-convert

If pdf.js is used to load a malicious PDF, and PDF.js is configured with isEvalSupported set to true (which is the default value), unrestricted attacker-controlled JavaScript will be executed in the context of the hosting domain.

The patched version is 4.2.67.

This issue seems to be fixed in v2.0.0.

Security: Addressed a critical security vulnerability in previously used npm packages by updating pdfjs-dist to the latest versions.


WebSocketClient has no support for custom HTTP headers

Godot version: 3.1
OS/device including version: Not relevant
Issue description:
The WebSocketClient does not provide an option for custom HTTP headers on connect_to_url, like for example HTTPRequest. This is at least relevant for the usual HTTP authorization flows to work (Basic, JWT, etc.), before even upgrading the request.
Steps to reproduce: See API definition.
Minimal reproduction project: Not relevant.

Steps to reproduce: See API definition.

What do you mean by that?
In any case, the Javascript WebSocket API do not allow you to send custom headers, so this cannot be done in general.
The only exception is cookies, which are passed along with the GET/UPGRADE request and reflect what was previously set for that domain, so we might add that to the native version for compatibility.

I just meant that the WebSocketClient API does not provide an option to set HTTP headers.
The initial HTTP upgrade request allows custom headers, which are supported by several clients (node.js, Vert.x).
I was not aware of the restriction of Godot to the HTML5 WebSocket client. If this is a hard restriction for HTML5 export reasons I assume, then I understand that.


(bb.js): Incorporate dummy backend to nargo that can interop with bb.js

Problem
With barretenberg's move to bb.js there is a divergence in how the new binary expects a circuit to be serialized and the barretenberg structures it expects (bb.js has recursion while acvm-backend-barretenberg) does not. We need a backend that has the structures bb.js expects and the respective serialization.
Happy Case
The previous way of building nargo with acvm-backend-barretenberg should remain the same. If some wishes to compile Noir into the format that bb.js expects they should build nargo using cargo install --path=crates/nargo_cli --no-default-features --features=bb_js. This will be an advanced user feature until bb.js is integrated into nargo. A user should then be able to do nargo compile <CIRCUIT_NAME> and nargo execute witness to interop with bb.js which expects a circuit json file and a witness file.
The tech debt from this dummy backend should be minimal and easy to reverse.
Alternatives Considered
We will eventually move to incorporating bb.js into nargo and then to a final solution once dynamic backends are fully ready. This is a temporary solution to get bb.js (which included the low-memory prover and recursion) integrated with Noir, and will be moved away from.
The current dummy backend also does not handle methods that require simulation such as pedersen. This will most likely only come once we have a clean way for nargo to interop with bb.js.
Additional Context
No response
Would you like to submit a PR for this Issue?
Yes
Support Needs
No response

Superseded by https://github.com/noir-lang/noir/issues/1569?

Superseded by #1569?

Yep

This PR https://github.com/noir-lang/noir/pull/1876 when used with this serialization tool https://github.com/vezenovm/acir-to-bberg-circuit should get Noir master in line with bb.js


Add a new WP7 workflow for ADMS

Add a new workflow for ADMS.
Pre-processing and WRF computation are similar to Continyym workflow.
WRF results have then to be processed by a post-processing container execution.
These results have to be processed as well by a Windows virtual machine.

Will be added in a private repository

Done


Add codecov for unit test coverage

Issue link

What changes have been made

Verification steps

Checks

[ ] I've made sure the tests are passing.
Testing Strategy

[ ] Unit tests
[ ] Manual tests
[ ] Testing is not required for this change

@ChristianZaccaria Could we merge this to check if coverage reports are being uploaded? Looks like it should automatically search for coverage files in the repo and add it - so no more path configuration is needed.

/hold
The action seems to be failing with rate limiting error mentioning that a new token is required.


Adjusting highlight color on selected ui-select

@spadgett, feel free to squash.

Thanks @rhamilto


Allow populate block logic in compact to be overriden outside Prometheus

Introduced PopulateBlockFunc interface so that the populate block logic in compact can be overriden outside Prometheus. For example, Thanos could add parallelism when populating blocks during compaction.
Used mlock for Unix system when reading index to prevent swap.
Signed-off-by: Alex Le<EMAIL_ADDRESS>

Thanks for the work. I would recommend removing the parallelism for now because it's slightly out of scope of this change. It's also maybe something that should be made configurable, right now it's unbounded.

Let me do some performance test with and without the parallelism to make sure doing extra sharded postings will not affect the performance that much.

Thanks for the work. I would recommend removing the parallelism for now because it's slightly out of scope of this change. It's also maybe something that should be made configurable, right now it's unbounded.

@fpetkovski I updated the PR and did some performance test. Without the parallelism introduced in this PR, one compaction took one more hour to complete compared to with parallelism. The compaction time increased from 7 hours to 8 hours for 500M time series.

While I am positive about this change, I suggested a different design. Compactor is used as an interface (where you compact with Compact() and Write() functions) and LeveledCompactor is just an implementation of it. It would be simpler to not require type inference to use this new method and keep using the interface. We can extend the NewLeveledCompactor to take an optional populateBlock function, and if provided, it will use that function instead of the default one. And while using it in your projects, you can have one instance of compactor per custom populateBlock function and continue to use the Compact() function.

Here is Thanos side proposed PR to demostrate how Thanos would use this change from Prometheus: https://github.com/thanos-io/thanos/pull/5964/files#diff-be21b0381ac14ee139355d057b390aa69ff338fe1c748ae8a475ce46f3583575R1140
Thanos would create PopulateBlockFunc instance with additional information then pass it into CompactWithPopulateBlockFunc and Thanos has its own version of Compactor interface. If it is better to create a new implementation NewLeveledCompactor, I think it would be easy just keep the new implementation Thanos only without touching anything in Prometheus. This also means Thanos would have a copy of LeveledCompactor with additional logic on top of it. In order to avoid this duplication, I decided to do in this way.

@codesome @fpetkovski Do you guys have any chance to take a look the code change and my comment? I need some inputs from you guys

The changes look good. Can you please fix the below comment and the ones posted before?

Cool. I will address those comments.

@alexqyle can you please fix the code conflict by syncing your branch with the main branch? We should be good to merge after that. Thanks!

@codesome, I have resolved merge conflict. Thanks for all the feedback.

@colega rightly pointed out to me that the Func suffix on an interface name is confusing. Calling the interface just PopulateBlock makes sense. @alexqyle: do you think you can make that change?

Hi @codesome, I can make that change. How about name it BlockPopulator? I think make it noun would be better. What do you think?

I like BlockPopulator, I think it's idiomatic Go name for one method interface.


Add Handlebars compilers to ECOSYSTEM

I have written a handlebars to idom compiler along with plugins for rollup and browserify. I have now got this in use in production and it's covering almost all handlebars features (barring custom helpers and partials).

I signed it!

Somehow I totally missed this originally. Closing this since the library seems to be stale.


Clean-Up

Did a little cleaning:

Deleted unused imports
Run black -l 100 (as in Makefile)

@leits I'm not sure why the CI is failing. I need to ask my colleagues next week. But thanks for the PR, this should have been caught/fixed by our CI but it seems to be misconfigured.

hi @leits i'm a bit late to this, thanks for the pr. i'm closing it now since a newer pr (#69) solves these issues as well. sorry for not processing this earlier!


⚠ GitLab Server has degraded performance

In e510cbc, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 10399 ms

Resolved: GitLab Server performance has improved in b05834e.


Donor Advised Funds

Allison to add more detail here later...
Lots of different models for Donor Advised Funds. Can we write a recipe that shows several of that model?

What package(s) are you trying to populate with fake data?
This project focuses on products developed and maintained by Salesforce and the Salesforce Open Source Commons.

[ ] NPSP
[ ] EDA
[ ] Outbound Funds
[ ] Program Management Module
[ ] just vanilla Salesforce
[ ] Membership Schema

What is the scenario you're trying to support with fake data?
I want to demonstrate varying types of Donor Advised Funds:
DAF Type #1 Opp with a single advising donor. Donor A sends $200 to a NP org of her choice from its donor advised account managed by a DAF.
DAF Type #2 Opp with a single advising donor Account. Donor Organization sends $25,000 to an NPO from it's DAF firm that manages its corporate giving.
DAF Type #3 Opps with multiple donations. DAF Organization collects donations on behalf of multiple donors and issues a single payment to the NPO.
Should this be a separate recipe for each type or a single recipe that creates varying types of data?
What do you think is involved in this recipe?

Create Organization Accounts to represent DAF

Create Organization Accounts to represent Donors

Create Campaigns with parent hierarchy. Create at least one distinct Campaign per 'DAF Type'

Create Contacts (donors) 25-50

Create DAF Type #1 Opportunities Linked to the DAF Organization Account (Closed Won)

link to the relevant Campaign

Create relevant Soft Credit Opportunity Contact Roles for each Opportunity linking 1 Contact per opportunity

Create DAF Type #2 Opportunites Linked to the DAF Org Account(s)

link to the relevant Campaign

Create Account Soft Credit for Organization Donors linking

Create DAF Type #3 Opportunities Linked to the DAF Organization Account (Closed Won)

link to the relevant Campaign

Create relevant Soft Credit Opportunity Contact Roles for each Opportunity linking 5-10 Contacts each

Additional context


chore: bdd-spring-1587811836 to 0.0.1

chore: Promote bdd-spring-1587811836 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Automate bumping version, and publishing to npm.

Maybe setup Travis CI with npm Realising. You could configure it, to release the package whenever you create a new tag on GitHub. You'd still have to bump the version number, but everything else would be taken care of.


A useful plug-in!

A useful plug-in. I have always been concerned about the use of wikilinks because not all markdown apps support them, although that seems to be increasing. But even if an app supports them, like Obsidian does, real markdown links like the ones created by this plug-in will work in any markdown app.
Thank you.

Thank you!

Take your time, it is important to get it done well, even if slowly, because we don't want our non-md file links to get messed up 😀

@DutchPete I don't get it. What do I need to take my time for?

@mnaoumov I got my knickers in a twist, somehow mistaking Dylan for you, and I thought you were actually replying to issue #2 that I submitted.
I apologize for the misunderstanding, it is my fault entirely.


Github action - Dockerhub integration

It is exactly the same action configuration as the other repositories, which were approved by Mads, therefore the changes has already been pushed to master. However, it requires something to actually build before it can actually be tested.


Not working

While playing deatchmatch on prime i get vac error. I run VAC BYPASS LOADER using administrator

Same issue here. How did you fix this?


Move sc-allocator to sp-allocator

Since allocator can be no_std, we should make it be so.
It make sense when use such as wasmi.

sp- is for code that is shared between the client and the runtimes.
Are you intending that runtimes might want to use it in future?

sp- is for code that is shared between the client and the runtimes.
Are you intending that runtimes might want to use it in future?

Yes.

@gilescope Any other problems ?

Not from me :-)
On Mon, 16 May 2022 at 05:23, yjh @.***> wrote:

@gilescope https://github.com/gilescope Any other problems ?
—
Reply to this email directly, view it on GitHub
https://github.com/paritytech/substrate/pull/11304#issuecomment-1127204391,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGEJCFINS4YD3O4SPG4GTDVKHEV3ANCNFSM5UOTJHGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

@bkchr Can we move the crate ?

@gilescope Hi, could anyone else give me feed back ? I want to push on this PR.

Are you intending that runtimes might want to use it in future?

Yes.

Could you expand on your motivation as to why you want to do this?

Could you expand on your motivation as to why you want to do this?

Just want to use this allocator for wasmi in no_std.

@koute Any other confused?

So do you want to use this as an allocator for smart contracts running under wasmi?
This allocator isn't really a general-purpose allocator, and isn't really meant to be used for anything other than a runtime allocator. We also can't really change it too much due to backward-compatibility concerns (since it's exposed by the client through the host API any substantial changes might make it impossible to sync a chain from scratch).
Have you considered using something like wee_alloc or bumpalo? Those crates would be more appropriate to use in a no_std context.

More precisely we want to run one runtime in another runtime.

Mind blown. Gotta hear the use case for this.
On Tue, 5 Jul 2022 at 04:57, yjh @.***> wrote:

More precisely we want to run one runtime in another runtime.
—
Reply to this email directly, view it on GitHub
https://github.com/paritytech/substrate/pull/11304#issuecomment-1174578292,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGEJCGYWRN4IJUX7SR4I2LVSOXCNANCNFSM5UOTJHGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Anyone could give me a feedback?


Adaptive Cards - can you help me to confirm if it's support in BOTFRAMEWORK-WEBCHAT?

Steps to reproduce
Copied from: https://github.com/microsoft/AdaptiveCards/issues/8956
Posted by: @vponcet-sg
Details:
We are building an app and we are facing issue with adaptive cards .
adaptiveC

could
could you explain why we are facing this issue ?
URL: https://adaptivecards.io/samples/
Expected behavior
NA
Actual behavior
adaptive cards - can you help me to confirm if it s support in BOTFRAMEWORK-WEBCHAT ?
Error details
No response

Hi @vponcet-sg, could you please share the adaptive card JSON? And please let us know if it is rendering fine in MS Teams or not.
As per our understanding the card is not rendering in Webchat, are we correct?


[Feature Request] Support Kwargs in Gen

Is your feature request related to a problem? Please describe.
I can't pass any parameters to the LLM generation function except the handful that you all have decided to support. That's insane when you consider the dozens and dozens of settings available in any huggingface model. This massively reduces the utility of this package for me.
Describe the solution you'd like
Support for kwargs, maybe by implementing the paramater that you put in your code designed for this but left hanging

Hey, this is totally fair. In its current implementation, guidance needs to take over the sampling loop from the LLM to enforce grammar compliance (and in part, for performance/efficiency). We'd definitely like to extend our sampler to support many of the underlying settings, but it's not entirely trivial to do this while staying both grammar-compliant and performant.
Can I ask which of the kwargs you're missing the most?

I think repetition_penalty,  frequency_penalty','presence_penalty' could be really useful to be customizable for each generation as we are able to do it with temperature.


Does ramda have immutable data structure support？

Ramda is immutable, but it implementation used plain js object before version. Does not perform well when handling large amounts of data. Now, how does ramda solve performance problems?

Do you have a more specific query?  What parts of Ramda are causing you performance problems?  What constitutes "large amounts of data"?
Ramda, we should note, does not enforce immutability, but itself refuses to mutate your data.  You're free to mutate it all  you want.

I view the fact that ramda operates on and returns plain js objects as a positive feature of the library (compared to immutableJS for example).
It means that ramda is easy to integrate with other ecosystems (existing codebases, other libraries, etc) without having to write a lot glue code.

Also any immutable data structures that support fantasy land will work very well with ramda, eg https://github.com/funkia/list

Sorry I failed to make it clear.

immutable.js using Persistent Data Structur to achieve a balance between immutable data and speed

And I want to know “What methods does Ramda.js use to achieve immutable data and speed?”

And I want to know “What methods does Ramda.js use to achieve immutable data and speed?”

We do pretty much the same technique of structural sharing when you use things like assoc, assocPath or the set and over.  We don't do much unnecessary cloning, so something like append creates a new Array object, but its children are references to the old ones.  Of course we use Arrays, so we don't get the structural sharing of tails that happen in tools that use Pair-based lists.  We do what we can to avoid hogging memory.

Thank for your patience answer.


Suggestion: TitleBold should be a switch

The TitleBold parameter for Export-Excel should really be a switch parameter. The only time you are going to use the parameter is when you want the title to be bold.

And here I was hoping for a PR ;-)
Thanks Jeff. Great suggestion.

If I can figure out all this git voodoo, I'll give it a try.

If you're not already using it, try https://desktop.github.com/
You've forked the project, so now you can make edits and check that in when you're ready. Those edits are only on your branch, doesn't change the master.
Then, you can issue a PR (pull request). I get notified, it still hasn't made it to the master until I do a merge. In the PR, you and I can work on it and discuss and when ready, it can be merged back to the master.
Easy peasy.

I've made the changes locally. Trying to get them pushed back up using Git from the command line but I may cheat and use the desktop GUI.

It's not cheating, it's keeping it simple.


Error:   Some peptides in the search file do not have a pair in the peptide list.

This command worked previously but now issues an error, which seems to indicate that it's having trouble parsing the peptide modifications.
CPU: Linux-3.10.0-1160.88.1.el7.x86_64-x86_64-with-glibc2.17
2023-11-10 10:22:38.017889
Command used: /net/noble/vol1/home/noble/proj/freestone/Percolator-RESET/functions/do_FDR_percolator.py --seed 1 --FDR_threshold 1 --overwrite T --narrow T --get_psms T --output_dir 03022016_Clara_MP_Fraction_02 --file_root reset 03022016_Clara_MP_Fraction_02/tide-search.pin Solanum-lycopersicum/tide-index/tide-index.peptides.txt
Successfully read in arguments.
Using seed: 1.
Reading in search file.
Reading in peptide list.
Taking top 1 PSMs.
Doing peptide-stem level competition.
Some peptides in the search file do not have a pair in the peptide list. E.g. V[43

tide-search.pin.txt
I will send the pairs file via slack.

Follow up to this: the command also fails if you switch to FDR_threshold 0.01 (which is how I ran it previously), so this bug was definitely introduced in the last few revisions.

Yes you are completely right, It was something that I did during our last back and forths. Fix now, thanks!


Use runtime crate everywhere

Enables usage of executor from runtime family of crates unless tarpc::init is called. Updated examples and tests to use runtime and async main().
Fixes #243

After the initial plunge that broke all test cases, I started from scratch taking into account comments by @tikue.

@vorot93 is this ready for review? (Click the button if so)

This looks good to me. Is there a reason it's marked as a Draft? Can I mark it "Ready for review" and approve & merge?

One thought: we could put the runtime integration behind a default-enabled feature. That way, folks who are just calling tarpc::init() don't transitively pull in the runtime crates.
(I can also do that in a follow-up commit if you want to submit this as-is.)

I just wanted to port more tests to runtime and make use of ensure_matches!, but since my timetable has gone haywire it's better to do it in a separate PR.

Enabling tarpc::init if runtime integration is disabled is a very cool idea! Let's merge this PR as is now though.

Thanks for taking the lead on this!


Support for group topic

This pull request introduces exciting improvements to Kanboard's Telegram integration, enabling project notifications to be sent directly to group topics!
Key Features:

Group Topic Support: Users can now configure project integrations to deliver notifications to designated group topics.
New message_thread_id Field: A new input field has been added to the project integration settings specifically for the message_thread_id. This allows users to manually specify the group topic's thread ID for notification delivery.
Automatic Thread ID Detection:  To simplify setup, the plugin now automatically detects the message_thread_id when the unique message is sent to the chosen group topic. This eliminates the need for manual configuration in most cases.

Works fine. Following bot settings are to be set for this to work.

Bot Settings -> Allow Groups -> On
Bot Settings -> Group Admin Rights -> Manage Topics -> On
Bot Settings -> Group Admin Rights -> Manage Chat -> On
Bot Settings -> Group Privacy -> On

@e-labInnovations Nice Job.


fix(switch): support uncontrolled switch in react-hook-form

Closes #
📝 Description
Applied the same fix done in other form input components
⛳ Current behavior (updates)
defaultValues wont work for uncontrolled switch.
🚀 New behavior

💣 Is this a breaking change (Yes/No):
No
📝 Additional Information

Summary by CodeRabbit

Bug Fixes

Fixed an issue with the uncontrolled switch component in forms using react-hook-form.

New Features

Introduced a new form handling component for switches, enhancing integration with react-hook-form.

Refactor

Improved synchronization between the switch state and its display in the DOM.
Updated switch component to use more efficient reference handling and effects for state management.

@wingkwong please add tests

@jrgarciadev I plan to do it another PR along with other affected components.


Handle category searches

Handles category searches by adding the new category search param globally and switching between materials and category depending on the type of search performed
Consistent search params – now uses "materials", "category" and "search" throughout all routes to match the API
Updates headlessui to fix a submit on blur issue with the combobox
Adds a material tip to the places list when a material has been searched for
Fixes search params not being passed from places list to map
Fixes an issue with partially matched material searches returning the wrong material
Fixes the places material search submitting too fast making it look like the UI hasn't updated
Fixes the material start page not accepting material ids and adds support for categories

:tada: This PR is included in version 1.39.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Enhanched profiler testcases, added a slow fix decoder, fixed tests comparing benchmark with reports

Fixed commit information and generated smaller test files

Codecov Report

Merging #33 into master will increase coverage by 3.2%.
The diff coverage is 89.65%.

@@            Coverage Diff            @@
##           master      #33     +/-   ##
=========================================
+ Coverage   56.95%   60.16%   +3.2%
=========================================
  Files          79       79
  Lines        5432     5435      +3
=========================================
+ Hits         3094     3270    +176
+ Misses       2338     2165    -173

Impacted Files
Coverage Δ

scripts/lib/xpedite/txn/collector.py
96.66% <100%> (+66.97%)
:arrow_up:

scripts/lib/xpedite/profiler/app.py
75.57% <100%> (+0.95%)
:arrow_up:

scripts/lib/xpedite/profiler/probeAdmin.py
69.38% <100%> (ø)
:arrow_up:

...ripts/lib/xpedite/profiler/profileInfoGenerator.py
88.73% <100%> (+1.4%)
:arrow_up:

scripts/lib/xpedite/txn/extractor.py
88.46% <100%> (+1.79%)
:arrow_up:

scripts/lib/xpedite/profiler/appInfo.py
84.78% <100%> (+0.33%)
:arrow_up:

scripts/lib/xpedite/profiler/runtime.py
64.61% <100%> (ø)
:arrow_up:

scripts/lib/xpedite/txn/repo.py
67.08% <100%> (+9.06%)
:arrow_up:

scripts/lib/xpedite/profiler/environment.py
64.97% <60%> (ø)
:arrow_up:

scripts/lib/xpedite/util/probeFactory.py
84.61% <88.88%> (+0.4%)
:arrow_up:

... and 21 more

Continue to review full report at Codecov.

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


New package: CommandLine.Wave version 0.8.12

Checklist for Pull Requests

[ ] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the directory's name containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

@microsoft-github-policy-service agree [company="Command Line Inc"]

@microsoft-github-policy-service agree company="Command Line Inc"

@microsoft-github-policy-service agree

Please use the msi installer, not exe.

Please use the msi installer, not exe. If a msi installer is available and works equally, it should always be preferred.

Actually, both could be included in the manifest; It would be best if the MSI was ordered first, but there isn't any reason both couldn't be present.
Installers:
- InstallerType: msi
  Architecture: x64
  InstallerUrl: <url>
  InstallerSha256: <sha256>
- InstallerType: nullsoft
  Architecture: x64
  InstallerUrl: <url>
  InstallerSha256: <sha256>

Haha the only reason I used the exe is I had the checksum readily available, will swap it out

Verify:


add sequence check for presence and detailed presence

Coverage decreased (-0.1%) to 39.232% when pulling e605960fbe23aa2234adac155f0be5cc1b6bfbf0 on u9520107:rcint-4417 into 7ce6783eb9517ab2ac4d0de4b44b2432e4d03849 on ringcentral:dynamics-regression.


Note/Comment Routes

Create a universal CRUD note/commenting notes for Client, Interpreter and Appointment collections. This will update the specific document's notes array:
/interpreter/:id/note
/client/:id/note
/appointment/:id/note
notes is an array value in every document, and it should be able to GET and POST to each document. So, essentially it should just be a push to the array. Since notes is meant to be a history of updates to each client/interpreter/appointment, they should never be deleted or altered.

Solved with #3.


Change Mailchimp import to use campaigns

Fixes #2849

@rafatower CR please
@matallo @saleiva All logic is here. I'm only pending checking if is easy to add automatically the cartocss to differentiate the opened items.

Frontend tests were OK :+1: (details)

Ok by me, from my ignorance about the mailchimp api client

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Hey @Kartones why the sync options are always deactivated?

Hey @Kartones take a look at the code. I couldn't try it on local, but the styling should be better now.

Frontend tests were OK :+1: (details)

retest this please

Frontend tests were OK :+1: (details)


Unable to render latex in pdf and png backends

I just discovered this very cool library while following along with the raspy blog.  Thanks for creating it!
I was unable to successfully generate latex-containing output in an SVG (no errors were shown, but all latex symbols were missing), so I slightly modified the latex.py example to instead output a PDF since I think latex-containing SVGs are generated by first generating a PDF and then calling pdf2svg if I understand correctly.  As far as I can tell, I have installed all the prerequisites, but I can't really test that because the following code generates a TypeError:
from chalk import *
from colour import Color

grey = Color("#bbbbbb")
papaya = Color("#ff9700")

left_arrow = make_path([(0, 0), (1, 0)]).reflect_x().line_width(0.03).center_xy()
def box(t):
    return rectangle(1.5, 1).line_width(0.05).fill_color(papaya) + latex(t).scale(0.7)

def label(text):
    return latex(text).scale(0.5).pad(0.4)

def arrow(text, d=True):
    return label(text) // left_arrow

# Autograd 1
d = hcat([arrow(r"$f'_x(g(x))$"), box("$f$"), arrow(r"$f'_{g(x)}(g(x))$"), box("$g$"), arrow("1")], 0.2)
d.render_pdf("latex.pdf")
#d.render_png("latex.png") # also doesn't run; TypeError similar to above

The resulting error is as follows:
Traceback (most recent call last):
  File "latex.py", line 20, in <module>
    d.render_pdf("latex.pdf")
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 246, in render
    for x in to_tikz(diagram, pylatex, Style.root(max(height, width))):
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 207, in to_tikz
    return self.accept(ToTikZ(pylatex), style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 256, in accept
    return visitor.visit_apply_transform(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 86, in visit_apply_transform
    for x in diagram.diagram.accept(self, style=style):
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 256, in accept
    return visitor.visit_apply_transform(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 86, in visit_apply_transform
    for x in diagram.diagram.accept(self, style=style):
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 78, in visit_compose
    elems2 = diagram.diagram2.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 256, in accept
    return visitor.visit_apply_transform(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 86, in visit_apply_transform
    for x in diagram.diagram.accept(self, style=style):
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 245, in accept
    return visitor.visit_compose(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 77, in visit_compose
    elems1 = diagram.diagram1.accept(self, style=style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/core.py", line 221, in accept
    return visitor.visit_primitive(self, **kwargs)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/tikz.py", line 58, in visit_primitive
    inner = diagram.shape.accept(self.shape_renderer, style=style_new)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/shapes/latex.py", line 47, in accept
    return visitor.visit_latex(self, **kwargs)
TypeError: visit_latex() got an unexpected keyword argument 'style'

If instead I run the d.render_png("latex.png") line, the error is instead
Traceback (most recent call last):
  File "latex.py", line 21, in <module>
    d.render_png("latex.png", 100)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/cairo.py", line 230, in render
    render_cairo_prims(s, ctx, Style.root(max(width, height)))
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/backend/cairo.py", line 185, in render_cairo_prims
    prim.shape.accept(shape_renderer, ctx=ctx, style=prim.style)
  File "/opt/anaconda3/lib/python3.8/site-packages/chalk/shapes/latex.py", line 47, in accept
    return visitor.visit_latex(self, **kwargs)
TypeError: visit_latex() got an unexpected keyword argument 'ctx'

Hello!
We currently don't have support for LaTeX in the PNG and PDF backends; but it should work using SVG. Here is a Colab example that renders the code above.
(Sorry for those uninformative error messages; there was a bug in the code, which should be now fixed.)

Thanks for the quick response!  The Euler identity equation renders fine for me, but the second example seems to be off, both in Colab and my local Jupyter installation (missing arrowheads maybe, wrong box calculations maybe):

Is this the intended appearance?
The problem that led me to looking for PDF/PNG output was that the result of doing d.render_svg('latex.svg') in the above arrow diagram leads to something that misses the latex when opened in Inkscape (also notice the odd bounding box, shown with the dashed line by selecting everything in Inkscape):

Similarly, saving the Euler identity with d.render_svg('euler.svg') also misses the latex bits when opened in Inkscape:

As a follow-up in support of the observation that bounding boxes seem off, here is how the Euler identity looks in colab:

Whereas if I use text instead, it's properly centered:

I'm happy to open a separate issue for that if you'd prefer.

Thanks for the report! I think I've fixed the issue: LaTeX should be properly centered now. As for the initial code, I think it's a bit dated, as it doesn't use the latest features (in particular, the arrow functionality). I would probably rewrite it something like this:
from chalk import *
from colour import Color

papaya = Color("#ff9700")
black = Color("black")

SEP = 3
W = 3
H = 2
DY = -0.5

def box(t):
    return rectangle(W, H).line_width(0.05).fill_color(papaya) + latex(t)

def anchor():
    return circle(0.05).fill_color(black)

nodes = [
    anchor().named("inp"),
    box("$f$").named("f"),
    box("$g$").named("g"),
    anchor().named("out"),
]
d = hcat(nodes, sep=3)
d = d.connect_outside("inp", "f")
d = d.connect_outside("f", "g")
d = d.connect_outside("g", "out")

d = (
    d
    + latex(r"$f'_x(g(x))$").translate(SEP / 2, DY)
    + latex(r"$f'_{g(x)}(g(x))$").translate(3 * SEP / 2 + W, DY)
    + latex(r"$1$").translate(5 * SEP / 2 + 2 * W, DY)
)

d.render_svg("examples/output/latex.svg")

which renders this image

Of course, this is still far from perfect. Some things to improve include:

[ ] simplify the placement of labels on edges
[ ] allow to draw head-less arrows
[ ] introduce a phantom function that produces an empty diagram, but has a given envelope and trace (basically, to hide the anchor points)

As for the Inkscape rendering, I'm not sure what's happening. I usually use the browsers to view the SVGs, and they currently look fine for me. If it's a pressing issue I can investigate that as well.

Great!  Thanks very much.
As to Inkscape rendering, I lived my life up to this point without this great tool, so it's not pressing per se (I've been using TikZ for like 12 years, so I'll manage).
Inkscape is the de-facto open source SVG editing tool, though, and I supervise some PhD students who could make great use of chalk to make diagrams that then get incorporated into other figures (with images, e.g.) in Inkscape.  Also, this is a backdoor way to generate PDF and PNG from latex-containing SVG files since Inkscape can do that (also from the CLI if memory serves).  So I do think it's important enough to investigate even if it's not urgent for me.
Thanks again very much!

Yes, the use-case you are describing makes a lot of sense! I'll keep it in mind and I'll take a look at the Inkscape issue when I get some time.
Also, thank you very much for the interest in our library—it's a much needed motivational boost, since, as you might imagine, it becomes a bit of challenge to actively maintain the side projects when other responsibilities take priority 🙂


Remove reflective access of getPlatformClassLoader in JavaCompilationUnitExtractor [phab:T281]

Created by cushon at 2017-10-28 02:53:38:
#2450 uses reflection to access ClassLoader.getPlatformClassLoader to remain compatible with JDK 8. The reflection should be removed once JDK 8 support is no longer required.

revision #2484


Front Camera not working Android

it's documented on the CameraOptions quirks
https://github.com/apache/cordova-plugin-camera#cameraoptions-errata-


Improvements on Autocomplete and Code Intellisense

vscode python extension lacks a perfect Autocomplete, and Code Intellisense features for both of Microsoft and Jedi language servers than other IDEs like Visual Studio and PyCharm.
I explain it to you as below:

Autocomplete and Documentation popup is very slow
Doesn't support automotive insertions parenthesis for a class constructor
Function signature and parameters info popup is very slow even sometimes doesn't being shown

I spent many hours to eliminate these deficiencies, but I think for an excellent extension like vscode-python, these deficiencies reduce its quality.
I hope these improvements apply for this useful extension.

@Matin-Moezi For Jedi we have pans to use it over LSP and take advantage of the newer features of jedi (see https://github.com/microsoft/vscode-python/issues/11995 ). As for Microsoft language server, can you try pylance, https://devblogs.microsoft.com/python/announcing-pylance-fast-feature-rich-language-support-for-python-in-visual-studio-code/, and if you run into issues or feature requests, please file it on https://github.com/microsoft/pylance-release

@karthiknadig I installed Pylance and saw its really improved performance but unfortunately, new issues raised up that didn't exist previously (e.g. github.com/microsoft/pylance-release/issues/37).
it's a question for me, Why aren't all of these features and extensions being integrated?
for example why Pylance isn't developed integrated with vscode python extension?
In my opinion, the existence of many options for LSP like Jedi, Microsoft, and Pylance creates ambiguity, and it is better to bring all of these features together in one LSP without any issues.
Finally, I hope Microsoft vscode team follow Visual Studio as a most comprehensive IDE and develop an integrated code editor with trivial features (e.g. autocompletion) that any other IDEs have.

@Matin-Moezi jedi is a third party open source package, we support it to offer a fully open source option. pylance will replace the Microsoft language server, and the reason it is separate package is because it is a closed source.
/cc @savannahostrowski


Add focus chaining

Add infrastructure to

[x] Allow views to request focus
[x] Take focus from the currently focused view
[x] Give focus to a view
[x] Switch focus, e.i. pressing tab

Implemented by 4f2ed92


Layer breaker: vs/platform/label.contribution cannot depend on vs/workbench

It looks like vs/platform/label.contribution.ts depends on vs/workbench. That violates our rules for layering.

Next milestone we plan to create the open recent menu list from the renderer.
Once we have that we will not need the labelService on the main and thus label.contribution could be removed. Thus postponing this to october

@sbatten I believe we will not have OpenRecent menu on the renderer this milestone. I guess that is planned for November. Correct? Thanks a lot

@sbatten no problemo

@sbatten I guess we did not get to do this in november. Moving this to December? Do we plan to tackle it than?


Configurable remote

We need to make the remote configurable so that users can choose to authenticate with a remote other than buf.build (here).
We could add a remote input to action.yml and use buf registry login <$remote> --username <$placeholder> --token-stdin command, so that we don't need to manually write the .netrc file, too. The username would be unused for this action since it's not actually required for BSR authentication (just the Go Module Proxy for now).
Alternatively (and preferably), we could refactor all of the actions that  and simply provide the BUF_TOKEN environment variable to each buf command so that it remains agnostic to the remote (re: https://github.com/bufbuild/buf-setup-action/pull/4#issuecomment-951035834).
The buf_token input is already configured here, so we should be able to update this behavior and extend what remotes we support while maintaining compatibility. For reference, this solution applies to both buf-lint-action and buf-breaking-action, too.

Pushing to custom remote is achieved by setting name in buf.yaml, and buf push pushes the module that remote. To confirm, I created a git repo on GitHub, containing a Buf module with buf.yaml, in which the remote is set to the testing remote. I set up the action, made some change and pushed to GitHub. The change showed up in the bsr on that remote as well.


Label 'latest' missing from dockerhub

Following the getting started guide via the prebuild image yields the following error:
$ docker pull structurizr/lite
Using default tag: latest
Error response from daemon: manifest for structurizr/lite:latest not found: manifest unknown: manifest unknown

latest has been removed temporarily because build 3002 was faulty ... docker pull structurizr/lite:3000 should work though.

It's back.


perf: speedup karma tests

Issue being fixed or feature implemented

Karma tests were running sequentially, making it extremely slow on large networks.
What was done?

Parallelize tests.
How Has This Been Tested?

On devnet-jack-daniels
Breaking Changes

Doesn't work with older versions of test tools, #352 must be merged first
Checklist:

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have added or updated relevant unit/integration/functional/e2e tests
[ ] I have made corresponding changes to the documentation

For repository code-owners and collaborators only

[x] I have assigned this pull request to a milestone

@nmarley here's another example of a common git mistake I make. I needed to use code from another PR which hadn't been reviewed and merged to v0.23-dev yet, and I didn't want to wait, so I made speedup-karma-tests based on the update-deps branch. update-deps was then merged to v0.23-dev, and I tried to both rebase and merge v0.23-dev into speedup-karma-tests. It always resulted in conflicts, but I don't understand why because I don't think any more commits were made before I started work on speedup-karma-tests. In the end merge failed with ff but worked with ort, but now I have merges showing both the commits from update-deps, and speedup-karma-tests and then one more commit on the top to merge the branch in. And yet somehow only the correct changes are shown in the diff, so I think we can still just squash merge this? But what is the right way to do this workflow? Rebase?


No more local function calls and rewrote CallResponse to be more simple.

Now call responses are simple since they only need to forward the request to the source.  If the source does not exist then we will observer.onError function does not exist.

@sdesai the failures are due to sync methods getting lower coverage.  This is because they will be removed shortly all together, but I didn't want to pollute this PR with those removals.

@sdesai This is the merge that is the precursor to Rx becoming a devDependency.  If there is anything else that I need to do, let me know.  Remember, if you look at the coveralls drop its around some sync functions which still need to be removed.

Sorry about the delay. I've set aside some time this week to catch up on PRs, open issues. Look for some feedback, and/or this being merged tonight/tomorrow latest.

Looks good to me. Just the one comment inline. Also is this considered back-compat breakage? Did we ever support local call functions formally (docs etc.)?
Feel free to merge, once that's addressed/resolved.


Added a UI test for the tvOS view controller

This is basically just an excuse to play with a live PR using two Buildasaurs (oh, and UI tests).

Result of Integration 1
Duration: 5 seconds
Result: -1 error, failing state: build-failed


[cpp] invalid positions

investigate travis failure: https://travis-ci.org/nadako/hxjson/builds/159480044#L1808

Turns out it's a Haxe bug: https://github.com/HaxeFoundation/haxe/issues/5667

Fixed in https://github.com/HaxeFoundation/haxe/commit/d3f8276dcd7da9859072d7b5926386be99abcc52


Rails 6 not compatible

Bundler could not find compatible versions for gem "rails":
In snapshot (Gemfile.lock):
rails (= 6.0.0)
In Gemfile:
rails (~> 6.0.0)
jets-rails was resolved to 0.2.0, which depends on
  rails (~> 5)

Running bundle update will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
cd /tmp/jets/globalupdateclub-api/cache && env BUNDLE_IGNORE_CONFIG=1 bundle install --path /tmp/jets/globalupdateclub-api/cache/vendor/gems --without development test failed to run.

@davidplappert have you solved this?

@davidplappert same issue here, have you solved it?

Same issue here

Same issue here

Does it support rails 6?

Jets 6.0 supports Rails https://blog.boltops.com/2024/05/23/ruby-on-jets-6-0-rails-support/


More of a suggestion than an issue

Thankyou for committingyour time to this project, its great. I was wondering or hoping that you would add chmod permissions to the options that are available.
Great work

How do you mean?

How to do I set the file permissions on the remote server, per file or directory?

Also, what would be cool is the pallete was dockable to other windows.

Are you sure you've got the correct repo?!
The tool-bar package for Atom doesn't have any permissions and pallette.
Please ellobrate about what you mean with those feature requests...
On Thu, Aug 4, 2016 at 6:22 PM +0200, "John"<EMAIL_ADDRESS>wrote:
Also, what would be cool is the pallete was dockable to other windows.

You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/suda/tool-bar/issues/155#issuecomment-237605493

Your right, my bad. I was looking for atom-commander.


Update section "Binary styles"

Style type 1 is used for inputs that are already prefixed with '0x'. Style type 2 does not expect the prefix.
Examples:
SELECT CONVERT(VARBINARY, '0x00', 1) returns 0x00
SELECT CONVERT(VARBINARY, '0x00', 2) raises an error
SELECT CONVERT(VARBINARY, '00', 1) raises an error
SELECT CONVERT(VARBINARY, '00', 2) returns 0x00

@jacobkjaersgaardhansen : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


Implement nightly releases

Implement nightly releases that are automatically updated when changes to the main branch are made.

This change should work very well as it is, but there are always improvements to make.
E.g. possible future improvements:

Making releases could be split into it's own release workflow and file. This would require some re-organisation, since artifacts would need to be downloaded to make them accessible for a separate job and the release preparation would need to be done there, after downloading.
What triggers a nightly release could be narrowed down further to changes that are decided to be relevant (the separate workflow mentioned above would be supplementary for this).

Other improvements to add in the future:

Windows ARM64 (Needed for Qualcomm & Microsoft Surface devices)
Linux ARM64 (Needed for Raspberry Pi devices)

We can probably update the link for the latest beta build to https://github.com/webui-dev/webui/releases/tag/nightly

We thought about it at the same moment!
https://github.com/webui-dev/webui/commit/c50a576b906e2e83b083635b233d5ac6f9cb2668


Feature request: multiple way points

Great plugin so far keep up the great work.
It would be nice if you could add multiple way points (Locations) as an array to the MapboxNavigation rather than an origin and an endpoint.

Hello! I also need this feature, this functionality would allow you to trace specific routes!

+1 for this suggestion. This would be great to have.

+1

+1 I will be needing it soon

+1

this feature is coming in v0.12

+1000

This is ready for iOS. Working on Android

On Aug 24, 2020, at 4:21 PM, Ulrich Bjerre<EMAIL_ADDRESS>wrote:

+1000
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Really!? That’s so great news!
I’m very keen on getting into interaction with you on this “project”.
I hope it’s ok, if I reach out to you on email?
Any idea when you’ll release the next version?

BTW
I currently get my route using the HTTP POST method - from which I currently get a geojson object.
That object includes a set if coordinates based on a number of input waypoints.
What I really need/hope for is, that I could start the navigation based on these coordinates (or the initial waypoints?)

What I am building is: instead of the origin and destination coordinates,
you will provide a list of ordered WayPoints (lat, lng pairs). The
navigation will route from the first waypoint to the next until it gets to
the last one.
On Mon, Aug 24, 2020 at 6:31 PM Ulrich Bjerre<EMAIL_ADDRESS>wrote:

BTW
I currently get my route using the HTTP POST method - from which I
currently get a geojson object.
That object includes a set if coordinates based on a number of input
waypoints.
What I really need/hope for is, that I could start the navigation based on
these coordinates (or the initial waypoints?)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/eopeter/flutter_mapbox_navigation/issues/40#issuecomment-679399111,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAPLOMY3BJWA7GTTTVQ5DK3SCLS3FANCNFSM4MHBH7VA
.

--
Sincerely
Emmanuel Oche

What I am building is: instead of the origin and destination coordinates, you will provide a list of ordered WayPoints (lat, lng pairs). The navigation will route from the first waypoint to the next until it gets to the last one.
…
On Mon, Aug 24, 2020 at 6:31 PM Ulrich Bjerre @.***> wrote: BTW I currently get my route using the HTTP POST method - from which I currently get a geojson object. That object includes a set if coordinates based on a number of input waypoints. What I really need/hope for is, that I could start the navigation based on these coordinates (or the initial waypoints?) — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#40 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAPLOMY3BJWA7GTTTVQ5DK3SCLS3FANCNFSM4MHBH7VA .
-- Sincerely Emmanuel Oche

I believe that will work perfectly for me?
Not only do I insert my own x-number of waypoints to calculate the route, but when I get my POST response, I also get a list of coordinates. I believe that will be useful?
One thing though - I'm working on a running-app. One of the functionalities is, that the runner should be guided along these waypoint and then finish where he starts. That said - the first and the last coordinate is the same.
When I do this, I usually run into a problem where the route in a turn-by-turn navigation only calculates the route from START til FINISH - thus with the result that I get a 0km route and the message, that I have arrived.
Will you be able to test such behaviour?
That the navigation will force the user along all waypoints although the first and last waypoint is the same?
Sincerely
Ulrich Bjerre
uApps.dk

try again with latest version


android 6.0.1 not work in 1.4.11

network is ok，and I can use other APP normally on the same phone。I can also use this APP normally on other versions of phones
The error reported by my project is UnknownHostException exception: Unable to resolve host "myHostURl": No address associated with hostname

hi @qinghe81070
can you check this solution?
https://github.com/android-async-http/android-async-http/wiki/Support-SNI-on-lower-android-device

sorry， I have tried it, but it still doesn't work

@qinghe81070 sorry for late response, can you share your url with me? so i can test and debug it
my email is : saeed.rezaei.sa at gmail . com

@saeed-rz The email has been sent, please let me know if you cannot receive it

@qinghe81070 I have recieved your email.
I will let you know when I check it 🙏

hello again @qinghe81070
I Tested your URL,
I think the issue is When connecting a server with an IP in the URL and the IP is under another domain that has many IPs, the client may try to connect another IP resolved from that domain.
the issue is fixed on version 1.5.0, but it's not ready to publish.
maybe if you use a domain instead of IP, it's worked fine.

Thank you very much for your help, and  I am looking forward to the release of the next version
------------------ 原始邮件 ------------------
发件人:                                                                                "android-async-http/android-async-http"<EMAIL_ADDRESS>发送时间: 2020年10月17日(星期六) 下午4:27
收件人<EMAIL_ADDRESS>抄送: "123456"<810709887<EMAIL_ADDRESS>主题: Re: [android-async-http/android-async-http] android 6.0.1 not work in 1.4.11 (#1353)
hello again @qinghe81070
I Tested your URL,
I think the issue is When connecting a server with an IP in the URL and the IP is under another domain that has many IPs, the client may try to connect another IP resolved from that domain.
the issue is fixed on version 1.5.0, but it's not ready to publish.
maybe if you use a domain instead of IP, it's worked fine.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hello, could you show us at least where is the bug? We use this library and this problem is a headache for us. At least, to be able to do a fork or something like that.

hi @soltrac  the problem is SNI. in the old version of android(below 5). the framework can't handle it correctly. in version 5.x.x the implementation changed and it fixed. we need to add all features and provide migration flow. after that, version 5.x.x release. can you help us to achieve it?


vSphere controller manager and container storage interface driver for vmware 67u3

Hi guys,
adding two katalog to deploy a kubernetes cluster with external provider that uses vmware>=67u3.
I rushed the docs, so all corrections are welcome!
PS: started this branch from the one @lnovara already created with some modifications used today on some clusters

Hi fellows!
Can we merge this and consider this branch the state of the art for this module?

Hi fellows!
Can we merge this and consider this branch the state of the art for this module?

How is the state of this PR?


Attribute routing question

Hello @commonsensesoftware ,
First off, thanks for your great work on this project!! :)
I am looking at the ODataOpenApiExample and had a question.  It appears that when you specify a route as part of the HttpGet/HttpPost attributes on a controller, they do not get generated as part of the OpenApi/Swagger doc.  For example, on the People controller for v2 and v3, the following actions are not documented:
[HttpGet( "api/People/NewHires(Since={since})" )]
[Produces( "application/json" )]
[ProducesResponseType( typeof( ODataValue<IEnumerable<Person>> ), Status200OK )]
public IActionResult NewHires( DateTime since, ODataQueryOptions<Person> options ) => Get( options );

[HttpGet( "api/People/{key}/HomeAddress" )]
[Produces( "application/json" )]
[ProducesResponseType( typeof( Address ), Status200OK )]
[ProducesResponseType( Status404NotFound )]
public IActionResult GetHomeAddress( int key ) =>
    Ok( new Address()
    {
        Id = 42,
        Street = "123 Some Place",
        City = "Seattle",
        State = "WA",
        ZipCode = "98101",
    } );

[HttpGet( "api/People/{key}/WorkAddress" )]
[Produces( "application/json" )]
[ProducesResponseType( typeof( Address ), Status200OK )]
[ProducesResponseType( Status404NotFound )]
public IActionResult GetWorkAddress( int key ) =>
    Ok( new Address()
    {
        Id = 42,
        Street = "1 Microsoft Way",
        City = "Redmond",
        State = "WA",
        ZipCode = "98052",
    } );

I am wondering if I am missing something or if there is an issue somewhere?
Thanks again!

Thanks for reporting this. I'll look into it. I wouldn't be surprised if I made a mistake or overlooked something. The OData routing story has gotten better, it's still not consistent or obvious when you need attributes and when you don't. The good part now is that when something is missing, I know for sure that it's because it didn't match what OData expected. API Versioning no longer does and route template building for OData 🎉. That should help track down errors as well as report any issues back to the OData team.

You appear to be working from the correct example project. Are you using preview.1 or preview.2? I'm working on preview.3 now, but I went back to the previous state and I see it documenting these APIs as expected:

Figure 1: ODataOpenApiExample for API version 3.0

Have you changed the project in any way? It's possible you're hitting an edge case that I've fixed.

Last I checked it is preview 2, but will need to confirm.  Hopefully  preview 3 fixed it.  Will confirm the version  I used tomorrow morning.

Its using preview 2.  Strange that it is working for you.  Will wait for 3 and try again.  Thank you for looking into it and sorry if I wasted some of your time.

took the latest version of the same project and you are correct, it does work!

Great! I don't mind. There aren't a lot of addition eyes reviewing this stuff and I do make mistakes. OData, in particular, has a very large test matrix and it's hard to test, show, or automate every possible combination. Thanks.


function 'GetCodepointNext' is invalid in C99

I am on a mac (M1, OSX 12.6) with brew-installed raylib 4.2.0
I am trying to build with cmake:
cd projects/CMake
mkdir build
cd build
cmake ..
make

But I get this:
[  8%] Building C object CMakeFiles/controls_test_suite.dir/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/controls_test_suite.c.o
In file included from /Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/controls_test_suite.c:42:
/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/../../src/raygui.h:2405:25: error: implicit declaration of function 'GetCodepointNext' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        int codepoint = GetCodepointNext(text + i, &codepointLength);
                        ^
/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/../../src/raygui.h:3805:33: error: implicit declaration of function 'GetCodepointNext' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                int codepoint = GetCodepointNext(&text[i], &codepointSize);
                                ^
/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/../../src/raygui.h:3931:37: warning: passing 'const char *' to parameter of type 'char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
        char **lines = GetTextLines(text, &lineCount);
                                    ^~~~
/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/../../src/raygui.h:3883:27: note: passing argument to parameter 'text' here
char **GetTextLines(char *text, int *count)
                          ^
/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/../../src/raygui.h:3940:22: warning: assigning to 'char *' from 'const char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            lines[i] = GetTextIcon(lines[i], &iconId);      // Check text for icon and move cursor
                     ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/../../src/raygui.h:4008:33: error: implicit declaration of function 'GetCodepointNext' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                int codepoint = GetCodepointNext(&lines[i][c], &codepointSize);
                                ^
2 warnings and 3 errors generated.
make[2]: *** [CMakeFiles/controls_test_suite.dir/Users/konsumer/Desktop/otherdev/raygui/examples/controls_test_suite/controls_test_suite.c.o] Error 1
make[1]: *** [CMakeFiles/controls_test_suite.dir/all] Error 2
make: *** [all] Error 2

I get similar error, just dropping raygui.h into a working raylib project and trying to import it:
'GetCodepointNext' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        int codepoint = GetCodepointNext(text + i, &codepointLength);

Seems like raygui master with raylib master works ok, so I think that was the mismatch.


CCL git repository is insanely large

A fresh clone of CCL this 4/29/2020 weighs in at a whopping 230MB \o/  The current files on master account for 63 MB, and the rest is hidden in the git history.
So, I'm suspecting some of the benchmark data is to blame. I haven't kept a close eye on that, but I would say we probably should purge the data  folder from the git history, and instead use a git-lfs folder for all data or massive files, to keep the repo light.
Someone with more experience with current CCL should chime in though :-)

Hum.... also, looks like the pdfs are committed every time... that's about 500Kb everytime, quickly add up

So @EiffL do you have a suggestion about what to do instead of committing the pdfs? I agree it's dumb (@rmjarvis just pointed this out too and I opened an issue #768 ) - he said that his policy is to just make the pdf himself in master pre-releases, however we have always historically had a total embargo on anybody pushing anything to master. We could make an exception for this, but I'm curious if you have another good workaround.

I would argue that no one other than ourselves is looking at the note, and that we could just remove its pdf from the repo (and ask users to compile it themselves)

We "could" setup some travis magic that execute a "make" in the doc folders upon for instance a new release. not sure what's the best trigger for this

Was the paper branch squash merged? Else there might be a lot of figures etc in the git history there.

I think there is not much utility in having the pdf in the git repo.  Perhaps you could periodically put a current version on the wiki.  Say every time you release a new version, update the note on the wiki.

(just need to make sure the paper compiles, through travis I guesss)

You could certainly add that as a "unit" test.  Run make in the paper directories and ensure that the pdf was generated.

I like the idea of having it on the wiki. @elisachisari do you have thoughts on this from your experience with the paper and note?

FYI about the wiki, it has its own git repo, which in my experience is often easier to deal with than the web interface.  cf. https://help.github.com/en/github/building-a-strong-community/adding-or-editing-wiki-pages#adding-or-editing-wiki-pages-locally

So everyone, maybe also @beckermr, I have only used a few times the BFG repo-cleaner: https://rtyley.github.io/bfg-repo-cleaner/ to purge large files from git history.
It worked fine for me, but you have to be careful not to push from an old clone of the repo after cleaning because the git histories will be incompatible. I don't actually know what happens if you try to push, but probably nothing good.
The problem with a project like CCL is that a lot of people have a lot of cloned version, and I'm afraid that someone might try to force a push of an old clone and break everything.
Does anyone have more experience with purging files from an active git repo with lots of contributors?

I have been down this road before. To be honest, this is something we are going to have to live with. Repo cleaning tools can help, but they are not failsafe. Aggressive cleaning of repos can make them unusable too.

I had to do this once for Piff when someone pushed up some huge files intended for testing.  After getting rid of them from history, the recommendation for everyone who had pulled this particular branch in the meanwhile was
git fetch
git rebase
git reflog expire --expire=now --all
git gc --aggressive --prune=now

For your case, I guess you'd want to do that on master and then rebase any extant branches to the new master.  So best if you can manage to merge most things into master before doing this, so people only have a simple set of commands they need to do on their own home versions.
Also, I did this by hand with git --filter-branch which felt a bit scary, but worked out ok.  I bet a tool like bfg would be easier.  (Is that a reference to Doom or Dahl you think?  Or neither?)

@rmjarvis @EiffL @beckermr : throwing out a random idea. To avoid some the issues with cleaning the repo's history, what if we just renamed and archived the current repo and starting using a fresh one with the large files no longer tracked? Anyone developing from the current repo (with work not merged before we do this break) would need to cherry pick individual files into a new PR. But there aren't that many developers, and this would ensure that that future pushes don't conflict with the changed history. Maybe too extreme?

I’m ok with the repo size. I’d just leave it.

I think if we are careful we can trim the fat from this repo and nothing bad will happen, we can make backups and restore things afterwards if need be, just to safe.
I could do it, but I would want one or two extra pairs of eyes on it, just to make sure I don't wreck everything by accident.
Alternatively, since apparently not many people have complained besides me, maybe it's not such a big deal at this point, so we could just adopt some good practices for now, like not committing the PDFs and data files, and revisit when/if it becomes an issue for more people.
I'll leave that choice to the admins :-) I know in theory how to technically do both back up/restore and cleaning, but have never attempted on an active repo, so I admit that I'm afraid of wrecking things.

I'll leave that choice to the admins :-) I know in theory how to technically do both back up/restore and cleaning, but have never attempted on an active repo, so I admit that I'm afraid of wrecking things.

Yep. We should let this one die. I am going to close for now.

On the other hand, this would probably be easier to pull off now, rather than in 5 years.

For some perspective on this, it currently takes 38 seconds to clone the repo on my laptop.  That's not completely insane, but it is already comparable to some much older git repos that also include some data files for testing and have far more commit history than CCL.  GalSim is 40 sec and TreeCorr is 18 sec.
So I'd at least think about ways to staunch the bleeding.  Stop including the pdf in the history going forward.  And probably move some of the data files to a wiki or git-ls repo so when you need to add more or update the existing ones, that will be the obvious place to do so, and it won't add to the CCL repo size.

Stop including the pdf in the history going forward. And probably move some of the data files to a wiki or git-ls repo so when you need to add more or update the existing ones, that will be the obvious place to do so, and it won't add to the CCL repo size.

100% agreed!

So, I'm looking at doing the suggested staunching-of-bleeding now. @rmjarvis - I'm a little confused about your suggestion to move data files out of the repo, since they are used when running tests? How would that work?

For context, I checked yesterday and the class repo is >500 MB. Pretty crazy stuff.

The main "stanching the bleeding" suggestion was to stop hosting the note pdf in the repo.  Just have one of your unit tests be to build the pdf to make sure there aren't any tex errors, but don't commit the pdf.
As for how to use data files not in the repo, you can have them be hosted somewhere else, so people who simply clone ccl to use it don't necessarily need to download them as well.  For instance, I keep a couple larger files used in tests of TreeCorr on the repo of the TreeCorr wiki rather than the main TreeCorr code repo.
Here is a test that uses one of these: https://github.com/rmjarvis/TreeCorr/blob/releases/4.1/tests/test_gg.py#L969
And here is the get_from_wiki function I use to easily download it: https://github.com/rmjarvis/TreeCorr/blob/releases/4.1/tests/test_helper.py#L20
And if you're not aware, the wiki page associated with your main repo is also a git repo.  So you can commit things there in the normal way.  For CCL, use git clone https://github.com/LSSTDESC/CCL.wiki.git.  cf. https://gist.github.com/subfuzion/0d3f19c4f780a7d75ba2

BTW, feel free to copy wholesale the get_from_wiki function in TreeCorr if you find it useful.  Just give the TreeCorr url you got it from in an inline comment for attribution.


recycle OpSendMsg after releasing payload

Motivation
Producer should recycle OpSendMsg of pendingMessages queue before clearing it up, so it can be reclaimed later on.
Modifications
Recycle OpSendMsg of pendingMessages queue before clearing it up.
Result
No functional change.

CLA is valid!


"Google Chrome ran out of memory while trying to display this webpage" while continuously plotting.

Hi,
I encountered the following situation.
I am using angular n3-chart library for real time plotting( pooling for data and plot in a loop).
Attached is a sample code(index.zip).
I am letting the plotting from index.html in GoogleChrome(Version 56.0.2924.87 (64-bit)) running. Only index.html tab is opened in Chrome.
Randomly the "Google Chrome ran out of memory while trying to display this webpage" appears.
To reproduce it quickly( but not sure if it's the same cause) i made the following
If i increase the value for following variables from
var seriesCount = 1096; var rowCount =296; to
var seriesCount = 3096; var rowCount =3096;
"Google Chrome ran out of memory while trying to display this webpage" message will appear shortly
index.zip
Please let me know how i can prevent this situation.
Thank you,
Alin Dumbraveanu

Hi, why would want to show 3096 series at once ???

The granularity of the plotted data should be milliseconds. Please check content of zip file. What do you mean by 3096 series? You are refering to var seriesCount = 3096 or to
$scope.options = {
series: [
{
axis: "y",
dataset: "dataset0",
key: "val_0",
label: "A line series",
color: "#1f77b4",
type: ['dot'],
id: 'mySeries0'
}
],
?

In the file you provided, you're attempting to loop over 1096 series, each of them having 296 rows, that's 296 * 1096 = 324 416 cells. Now, you also told that if you use a seriesCount of 3096 and a rowCount of 3096, Chrome runs out of memory. This is because you're looping over more than 9 millions values.

I mentioned that :To reproduce it quickly( but not sure if it's the same cause)" var seriesCount = 3096 can be used. I wanted to point out what is the behaviour.
My problem is that using a large dataset and setting it in an interval function i obtain "Google Chrome ran out of memory while trying to display this webpage"
I need help to identify why this happens.

This happens because your dataset is too large to manipulate.

Is there a maximum size for dataset? How can i identify a dataset too large?

I'm not sure about a specific size that'd be too large for a dataset, I guess that depends on the browser (again : this is probably not an issue with n3-charts).

I am generating same size dataset.
Here is the code:
var seriesCount = 1096; var rowCount =296;
$interval( function(){
		  for (var i = 0; i < seriesCount; i++) {
			for (var j = 0; j < rowCount; j++) {
			  var row = $scope.data.dataset0[j] || {x: new Date(t + j*3600*1000*24)};
			  row['val_' + i] = Math.round(Math.sin((Math.random()+1)*j/5)*(5*(i+1))*1000)/1000;
			  $scope.data.dataset0[j] = row;

			}
		  }

		},1
	  );

It's plotting for a while and at a random moment of time i get the  "Google Chrome ran out of memory while trying to display this webpage".
Indeed the dataset may be large but it's plotted. The problem that i'm trying to isolate is that i get the
"Google Chrome ran out of memory while trying to display this webpage".
I need a starting point to continue investigation.

 This angular magic is not for free, CPU wise and RAM wise. It's no surprise that you blow up the browser after a few seconds.
Check out this blog post https://www.airpair.com/angularjs/posts/angularjs-performance-large-applications and think about your architecture. Dumping everything to the client might not be the best solution. You could try for example to only display every 1000s datapoint with interpolation, and then show more points when you zoom inside. Anyway, you should work on improving your overall architecture!
I am afraid we in particular cannot help you with this, because your problem has nothing to do in particular with n3-charts. Btw. what happens if you remove the chart directives - does the browser still blow up? maybe this is a good point to start debugging your issue.
Best,
Christoph


[ENHANCEMENT] Max Priority Queue in graph scheduling.

While skimming over the codebase, I saw that we kept on re selecting the node with the highest priority while we could just maintain a max priority queue at the beginning and pop from it : it would both be cleaner and simpler, while being more optimized (O(1) pop), I can write a PR today, wdyt @bashirmindee ?
https://github.com/mindee/tawazi/blob/c0f0cc2b81cb44fcef13c2e53bac87ab4fd4a9a7/tawazi/_dag/helpers.py#L318

what do you mean by that ? we are obliged to construct a new queue every time we complete the execution of a root node, because new runnable_xns_ids might be created.

My idea was not to maintain only one queue, but rather have a pre computed queue in the graph, and compute new queues with updated nodes by only traversing the queue (so some kind of filtered queue based on the availability), that way, whenever a new node gets available, we extend the current max queue with the new children (in python heapq implements a min/max queue natively) and we still can pop from it, it avoids re computing the max every time since we've already done it at the beginning, and we just pop from the newly constructed queue the max node we want to run. I think this would be most beneficial if we have a super flat DAG at some point (such as one when there is a lot of nodes that can be run at the same time). This actually emerged from the fact that we search for the max node in all runnable nodes even though we're only capable of running MAX_CONCURRENCY at the same time, so in itself it can already be a bottleneck

I think this won't be beneficial  and pretty complicated TBH. Remember that the newly created root nodes are dynamic after each iteration of the scheduler; hence the number of combinaisons for the queues that need to be constructed is huge and will give an OOM directly in some cases

Nope, my idea was to compute a queue at first and extract the sub queue each time without recomputing, I'll do a simple poc and update you on i, maybe it'll be clearer