Can't get stirr-for-channels to display extended EPG information.

Good morning,
I've been using stirr-for-channels for a few months now and I really like it. There are a few features that I just can't get working.
Firstly, I'm using Cabernet to discern the m3u's/EPG's I'm using; I'm using links from the mjh.nz site for some of my m3u/xml files and they(and other sources) all display extended info, pics, descriptions, season #, and etc, it's just stirr-for-channels doesn't do this, the displayed EPG that stirr shows is just simply the channel name within each time slot. Is there a setting somewhere  that needs changing?
I'm running Kubuntu 23.04
On a side note, I use Portainer for my docker instances, would you be able to help me create a docker-compose.yaml file?
Thank you very much for your time and help.
Have a nice day.

There's plenty of EPG data coming out of https://nocords.xyz/stirr/epg.xml as you can see when loading that file. Maybe your tooling isn't parsing it? It's standard XMLTV though.

Thank you for getting back to me so quickly, you're docker is one of my favorites' besides Cabernet.
Yes, I saw that the xml file had tons of info, I didn't know if it was a format thing or something, I mentioned it to the Dev of Cabernet on Discord the other day @rocky4546 and he never really gave a response.  I'll have to file an issue through Github regarding Cabernet and I'm sure he'll take a look at it because he's very proactive.
Back to the docker-compose.yaml
Would you please be able to help me setup a docker compose file for your stirr-for-channels? I figured other users of docker-compose would also find it helpful.
Thx again.

I just did a bunch of fixes and testing those fixes against the XMLTV validator in 268be03994723d3c10f3108bfc881110b9314148. It should be mostly cleanly validating now, with the exception of the live flag on programmes that @tmm1 added in b3e7c1e42cc454fa880f4a6c9a1d2002ce343fe0 which the validator chokes on.
Please try the latest version of stirr-for-channels and report back if Cabernet and/or Jellyfin still choke.

Good morning Robbie,
I have a bit of good news. So, I pulled the new image and I'm noticing an improvement though Jellyfin, but, not Cabernet. :)
Here are the screenshots of both Cabernet and Jellyfin.
https://ibb.co/DWZ0mb2
https://ibb.co/19pvvZ6
https://ibb.co/wQt9grw
https://ibb.co/19pvvZ6
As you can see through Jellyfin the regular channels are showing more information, they aren't showing pictures, but, I'm totally okay with that. My only issue, the Stirr City (Providence) is now completely void. If you look at the Cabernet ones, there isn't any improvement.
Whatever you did, definitely moved things in the right direction. Are there any more changes that can be made to have Stirr City - Providence properly display guide data?
Thx again
Have a nice day.


fix: add docs for package-contents test

I think we should improve the comments and explanations here in general, any suggestions or guidelines I should follow while doing that?

We don't really have any guidelines. Improving docs is of course always welcome!


Update brod_cli path in README

The current build creates a _build/brod_cli/rel/brod/bin/brod_cli script, whereas ..../brod is a regular erlang release script.

Thank you, but you can close this pr.
The pr I’m going to send (as mentioned in #462) will make this right

Alright. I hesitated to tell you then thought I might as well fix it :)


Reference system for object deletion and addition

Summary:
Currently, objects that are deleted and new objects that are added(room, category etc.) are not correctly registered in the Client data collection which stores all rooms, houses, users, private_rooms and relationships.
Possible Solution:

A possible reference system could be implemented, where the lists can be modified in case of creation or deletion of objects.
Awaiting changes in the API that reports all changes correctly (WS currently not able to respond to all events correctly since some are missing/not sending important data)

Fixed due to data now being correctly sent and there is no need anymore to have this implemented as a work-around


Lines of code just reports invalid data in the badge

Are you experiencing an issue with...
shields.io
🐞 Description
Seems the lines of code badge just gives an error. The example suggests GitHub is valid.
🔗 Link to the badge
https://img.shields.io/tokei/lines/github/ascopes/java-compiler-testing

Closing as a duplicate of #9389 and #7569
Those issues have links to the upstream issues in the Tokei service (which is where the underlying issue resides and needs to be resolved)


feat: Add tags to EKS created cluster security group to match rest of module tagging scheme

Description

Add tags to EKS created cluster security group to match rest of module tagging scheme

Motivation and Context

I discovered that cluster tags are not propagated to the security group created by the EKS service https://github.com/aws/karpenter/pull/1332/files#diff-c996548a210a321770151def6b6f02b6204a8bcdda9a1e1d86973fa3fbda5e18R145-R152 - this will now add those tags similar to the scheme used on the cluster definition itself

Breaking Changes

No

How Has This Been Tested?

[x] I have tested and validated these changes using one or more of the provided examples/* projects

Tested on complete example

This PR is included in version 18.14.0 :tada:


API refactor proposition

It aims to make the code structure easier to understand, navigate and modify, by:

shortening long files - general.py had 849 lines, now 553.

by moving common functionality to separate files - endpoints.py, logging.py, validation.py, memory_protection.py

In both cases, it still could be improved (general.py shorteneded by about 300 lines, and functions moved to new files like pdf_splits.py, pipeline.py) , but had some problems with monkeypatching expecting functions in certain places, and didn't want to spend more time on it.
No other changes than moving functions betweeen files were made in this PR.

i'd feel better about a large refactor change like thais after we had a multi-thousand doc release candidate test in place, since basically right now, prod is inadvertently serving as our QA env as well. not saying don't do it, but need to be super cautious.

Yes I agree, having tests when making refactors is crucial. Here the situation is simpler, as the only changes are moving functions between files. So no changes in logic. All existing tests pass.


Error: Unable to resolve action<EMAIL_ADDRESS>repository not found

Hi,
I'm getting the error Error: Unable to resolve action<EMAIL_ADDRESS>repository not found when trying to use this action.
This is my complete job:
jobs:
  dtrack:
    name: DependencyTrack
    runs-on: ubuntu-latest
    steps:
      - name: Get branch name
        id: branch-name
        uses<EMAIL_ADDRESS>      - name: Create BOM
        id: create-bom
        uses: CycloneDX/gh-node-module-generatebom@master
      - name: Upload BOM
        uses: DependencyTrack/gh-upload-bom@master
        with:
          serverhostname: 'api-dtrack.toivo.app'
          apikey: ${{ secrets.DTRACK_API_KEY }}
          projectname: 'Toivo Mobile'
          projectversion: ${{ steps.branch-name.outputs.current_branch }}

Apologies, that's a typo in the docs. Should be "sbom" not "bom" in the action name.

The example has been updated. Does that fix it for you?

🤦♂ I tried to double check the repo URL multiple times and simply didn't
see it.
Thank you for the quick response.
On Wed, 8 Sep 2021, 11:44 Patrick Dwyer, @.***> wrote:

Apologies, that's a typo in the docs. Should be "sbom" not "bom" in the
action name.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/DependencyTrack/gh-upload-sbom/issues/1#issuecomment-915084137,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUTZ753JEDF72HBVEAMZWVDUA4V6FANCNFSM5DUFLNLQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Add ASAN support and fix memleaks (main)

Addresses #286
Addresses #287
Addresses #288
Cherry-pick of #289
Tests are not passing due to #290. However, there isn't much difference between this and 4-3-stable, so maybe it's okay...
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b2d4a79..9197f7d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR) #CPACK_DEBIAN_<COMPONENT>_PACKAGE_NAME

-set(IRODS_MINIMUM_VERSION "4.3.3")
+set(IRODS_MINIMUM_VERSION "4.90.0")
 find_package(IRODS "${IRODS_MINIMUM_VERSION}" REQUIRED)
 set(IRODS_PLUGIN_REVISION "0")
 set(IRODS_PLUGIN_VERSION "${IRODS_MINIMUM_VERSION}.${IRODS_PLUGIN_REVISION}")
@@ -22,7 +22,6 @@ project(irods_capability-storage_tiering
 include("${IRODS_TARGETS_PATH}")

 include(GNUInstallDirs)
-include(UseLibCXX)

 if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build {Debug, Release}." FORCE)
diff --git a/irods_consortium_continuous_integration_build_hook.py b/irods_consortium_continuous_integration_build_hook.py
index 73bf2bf..b94bf7d 100644
--- a/irods_consortium_continuous_integration_build_hook.py
+++ b/irods_consortium_continuous_integration_build_hook.py
@@ -12,11 +12,10 @@ def add_cmake_to_front_of_path():

 def install_building_dependencies(externals_directory):
     externals_list = [
-        'irods-externals-boost-libcxx1.81.0-1',
-        'irods-externals-clang-runtime13.0.1-0',
+        'irods-externals-boost1.81.0-1',
         'irods-externals-clang13.0.1-0',
         'irods-externals-cmake3.21.4-0',
-        'irods-externals-fmt-libcxx8.1.1-1',
+        'irods-externals-fmt8.1.1-1',
         'irods-externals-json3.10.4-0'
     ]
     if externals_directory == 'None' or externals_directory is None:

Yep - looks good.
Does it make sense to see if #290 can be addressed along with this?   Then they can all go in together, passing?


Add enums to .d.ts

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.

Here is the diff that solved my problem:
diff --git a/node_modules/bchaddrjs-slp/src/bchaddr.d.ts b/node_modules/bchaddrjs-slp/src/bchaddr.d.ts
index 37a8b4b..abce6f4 100644
--- a/node_modules/bchaddrjs-slp/src/bchaddr.d.ts
+++ b/node_modules/bchaddrjs-slp/src/bchaddr.d.ts
@@ -1,8 +1,19 @@
-export type Format = string;
-
-export type Network = string;
-
-export type Type = string;
+export enum Format {
+    Legacy = "legacy",
+    Bitpay = "bitpay",
+    Cashaddr = "cashaddr",
+    Slpaddr = "slpaddr"
+};
+
+export enum Network {
+    Mainnet = "mainnet",
+    Testnet = "testnet"
+};
+
+export enum Type {
+    P2PKH = "p2pkh",
+    P2SH = "p2sh"
+};

 export interface decoded {
     hash: Uint8Array;

This issue body was partially generated by patch-package.

Superseded.


UI overlapping

Some UI item overlapping

Partial Work done, Needs fix for Ipad Pro and other Ipads

Fixed


Bookmark preview error handling

When commits fail, the user is not notified. This can happen, for example, if there is no name set. This can happen if there is a back-end error
Server side errors from the /fetchbookmark endpoint are not processed
debouncedFetch only sets boolean errors - error content should be shown to user / available further for processing.
There is no loading state

Also, I think the usePreview hook can essentially be replaced with a useResource. It does fetching, loading, error... Seems to duplicate a lot of logic


tests: Compile Handlebars templates with source maps

This allows us to collect coverage for Handlebars templates, and also improves the readability of Handlebars-related stack traces.
Testing Plan: test-js-with-node --coverage

Codecov for this PR:
https://codecov.io/gh/zulip/zulip/pull/13941
https://codecov.io/gh/zulip/zulip/pull/13941/tree/static/templates

Merged!  Thanks @andersk!


Issue 410: Only merge satifiable final conditions

Ref. #410

I have not yet looked at the changes, but I found an issue when I tried to check a specification. Z3 seems to run forever when checking the following specification (I stopped after running it about 3 minutes on lab):
package Test is

   type M1 is
      message
         F1 : Boolean
            then F2
               if F1 = True
            then null
               if F1 = False;
         F2 : Boolean
            then null
               if F2 = True;
      end message;

   type M2 is
      message
         F3 : M1
            then null
               if F3_F1 = True and F3_F2 = False;
      end message;

end Test;

I have not yet looked at the changes, but I found an issue when I tried to check a specification. Z3 seems to run forever when checking the following specification (I stopped after running it about 3 minutes on lab):

Good catch! It's not actually a Z3 issue, but as your resulting message is empty (you outer constraint contradicts with all paths and thus all fields get pruned) the substitution algorithm is stuck in an infinite loop. Of cause we need to detect this and throw an error. Fixed in be6644e.


REPL integration fails with 0.5.0/0.6.0 but works with 0.4.0

Hi guys,
I'm having trouble fixing my configuration for 0.5+.0. Not sure if I missed some requirement, but quite bit of reading and fiddling did not get me any closer to finding a solution. Maybe someone can point out a problem in the config below. Thanks!
Running lein repl and connecting from CIDER or IntelliJ/Cursive:

using 0.4.0 everything works fine (though the stream of version warnings in annoying),
using either 0.5.0 or 0.6.0, the repl starts up, but attempt to eval breaks with No reader function for tag +clj

CIDER response on connect ; CIDER 0.9.0snapshot (package: 20150402.2252) (Java 1.7.0_60, Clojure 1.6.0, nREPL 0.2.10),

clj/cljs files are still properly generated at the startup, it would seem, as I can load them from the repl directly.

(defproject prq "0.1.1-SNAPSHOT"
  :license {:name "Modified (3-clause) BSD License"
            :url "http://directory.fsf.org/wiki/License:BSD_3Clause"}

  :dependencies [[org.clojure/clojure "1.6.0"]
                 [clojure-complete "0.2.4"]
                 ;;
                 [org.clojure/test.check "0.7.0"]
                 [org.clojure/core.match "0.3.0-alpha4"]
                 [org.clojure/data.priority-map "0.0.7"]
                 ]

  :plugins [[lein-cloverage "1.0.2"]
            [lein-ancient "0.6.2"]
            [com.cemerick/austin "0.1.6"]
            [com.cemerick/clojurescript.test "0.3.1"]
            [lein-kibit "0.0.8"]
            [jonase/eastwood "0.2.1"]
            [cider/cider-nrepl "0.9.0-SNAPSHOT"]]

  :aliases {"cleantest" ["do" "clean,"
                         "with-profile" "+combo" "clean,"
                         "with-profile" "+combo" "cljx" "once,"
                         "with-profile" "+combo" "test,"
                         ;;"with-profile" "+combo" "cljsbuild" "test"
                         ]
            "cleaninstall" ["do" "clean,"
                            "with-profile" "+combo" "clean,"
                            "with-profile" "+combo" "cljx" "once,"
                            "with-profile" "+combo" "install"]
            "cleancljx" ["do" "clean,"
                         "with-profile" "+combo" "clean,"
                         "with-profile" "+combo" "cljx" "once"]

            "bench" ["with-profile" "+bench" "perforate"]}

  :jar-exclusions [#"\.cljx|\.swp|\.swo|\.DS_Store"]
  :source-paths ["src/cljx" "target/classes"]
  :test-paths ["target/test-classes"]
  :auto-clean false
  :jvm-opts []

  :profiles {:uber  {:main ^:skip-aot prq.testspace
                     :aot  [prq.testspace]}

             :dev {:plugins [[com.keminglabs/cljx "0.5.0"]]
                   :prep-tasks [["cljx" "once"] "javac" "compile"]
                   :dependencies [[criterium "0.4.3"]
                                  [org.clojure/clojurescript "0.0-3178"]
                                  ^:replace [org.clojure/tools.nrepl "0.2.10"]
                                  [com.cemerick/piggieback "0.2.0"]]}

             :combo {:dependencies [[org.clojure/clojurescript "0.0-3178"]
                                    [com.andrewmcveigh/cljs-time "0.3.3"]]
                     :plugins      [[lein-cljsbuild "1.0.3"]]

                     :cljsbuild    {:builds        [{:source-paths ["src/cljx" "target/classes"]
                                                     :compiler     {:output-to     "target/prq.js"
                                                                    :output-dir    "target/out/build/"
                                                                    :optimizations :whitespace
                                                                    :pretty-print  true}}]
                                    ;; lein with-profile +combo cljsbuild test
                                    :test-commands {"unit-tests" ["phantomjs" :runner
                                                                  "target/prq.js"]}}}
             :bench {:dependencies []
                     :plugins [[perforate "0.3.4"]]}}

  :cljx {:builds [{:source-paths ["src/cljx"]
                   :output-path "target/classes"
                   :rules :clj}
                  {:source-paths ["test/cljx"]
                   :output-path "target/test-classes"
                   :rules :clj}
                  {:source-paths ["src/cljx"]
                   :output-path "target/classes"
                   :rules :cljs}
                  {:source-paths ["test/cljx"]
                   :output-path "target/test-classes"
                   :rules :cljs}]}
  )

0.5+.0 works in Lein 2.5.0 (and I completely forgot to check that).

Interesting, it should work just fine under earlier versions of lein, at least back to 2.4.3...

I'm sorry, my previous msg was not as clear as it should have been:

the problem described in the title happens with lein 2.5.1 (cljx 0.4.0 works, 0.5+.0 doesn't),
downgrading to lein 2.5.0 fixes things (cljx 0.5+.0 work).

So closing as I have a workaround and not even sure it's cljx.

That really doesn't make any sense.


[DB] Migrate project from using Supabase PgBouncer to Supavisor

Supabase's PgBouncer, which is used for db connectivity, is lined for deprecation and will be replaced by Supavisor, a connection pooler.
See https://github.com/orgs/supabase/discussions/17817:

Moving to IPV6 for Database Connection Strings
With IPv4 addresses becoming increasingly scarce and cloud providers starting to charge for it, we won’t be assigning IPv4 addresses to Supabase projects from January 15th 2024. db.projectref.supabase.co will start resolving to a IPv6 address instead. If you plan on connecting to your database directly, you must ensure that your network can communicate over IPv6. Supavisor will continue to return IPv4 addresses, so you can update your applications to connect to Supavisor instead.

Switching to Supavisor
Supavisor is a direct replacement for PgBouncer. Using our own pooler is going to let us do things like load balancing queries across read replicas, query results caching, and a lot more.
Note that Supavisor does not support Network Restrictions yet.
You don’t need to change anything in your application, except for the URL. The pooler connection string is available in the database settings in your dashboard.

PgBouncer and IPv4 deprecation timeline
PgBouncer will be available to use along side Supavisor until January 15th 2024.
The full timeline is:

27 September 2023: Supavisor is available for all new projects.
15 October 2023: Supavisor will be available for all projects, including existing projects. We will notify you via email when it is enabled for your project. PgBouncer is officially deprecated after this date.
15 January 2024: PgBouncer will be disabled. You will need to start using Supavisor before then. Your Supabase database domain (db.projectref.supabase.co) will start resolving to IPv6 addresses. No changes are required if your network supports communicating via IPv6. If it doesn't, update your applications to use Supavisor which will continue to return IPv4 addresses.

You will receive deprecation notices throughout November, December, and January.

closing as this is already implemented


Removed useless creating SchemaTablePair

because it is created and used below

Are you reading every line of code?  And I know some common patterns how to find some problems/mistakes/typos/copy-paste errors, perfomance improvements.


Add a logging base class to Transport.Abstractions

It could be beneficial to have methods in a transport logging base class for logging events like connection resets. This could serve as a minimum guideline for what should be logged by new transports and better enable cross-transport testing.
An alternative might be to move the more transport-agnostic logging like Connection(Error|Reset|Pause|Resume) into the Core project

Won't fix.


SWARM-1369: User projects with different dependencies

[x] Have you followed the guidelines in our Contributing document?
[x] Have you created a JIRA and used it in the commit message?
[x] Have you checked to ensure there aren't other open Pull Requests for the same issue?
[x] Have you built the project locally prior to submission with mvn clean install?

Motivation
User projects that depend on WF Swarm fractions can bring in different versions of dependent artifacts if WF has adjusted those versions.
Modifications
Add WF Core and WF parent POMs into WF Swarm BOMs to ensure correct versions.
Result
User projects now have correct dependent artifact versions, and removes duplicate versions in m2repo of uber jar where this occured.

I was briefly thinking if we should possibly use the WildFly BOM instead of the parent POMs, but probably not. Those would only bring a subset of what we need.

I had a look at the WF BOM before pushing, and there's very little of what we need in it unfortunately


Remove or rename invalid -styled-mixin0 CSS properties caused by using mixins

Would it be possible to prevent outputting invalid CSS properties that would fail a CSS syntax validation plugin such as csstree/stylelint-validator?
An example of this would be when using a mixin:
const example = css`
  ${({ height }) => height ? `height: ${height};` : ''}
  width: 100%;
`;

which the processor might output
.selector1 {
  -styled-mixin0: dummyValue;
  width: 100%;
}

My suggestion would be to wrap -styled-mixin0: dummyValue; in a CSS comment or prefix it with one more dash to turn it into a custom property e.g. --styled-mixin0: dummyValue;

Yes, I have also received this selector-type-no-unknown error...

My suggestion would be to wrap -styled-mixin0: dummyValue; in a CSS comment or prefix it with one more dash to turn it into a custom property e.g. --styled-mixin0: dummyValue;

@jroebu14 Thanks for your suggestions. Sorry we didn't find a perfect solution. Comments may also introduce comment-related false-positive errors. Adding one more dash can't solve the problem from the root, either. And it can also break something like @leoyli's workaround.
Currently, @leoyli's workaround is one of the best ideas .

@chinesedfan, can be considered to add my workaround into the recommended setup? I mean people using it expect it can also take care about all valid use case.

@leoyli @chinesedfan thanks for responding to my issue. Leoyli's is a good solution but unfortunately it won't work in our specific case where we're also using the csstree/stylelint-validator plugin. This plugin has it's own ignore option which doesn't support regular expressions. I have suggested this functionality in csstree/stylelint-validator.
For now my workaround looks like this. As you can see it's not ideal but it works for us in the short term.

Hi, I'm running into the same issue with stylelint-order.
Related issue: https://github.com/hudochenkov/stylelint-order/issues/63
Suggestion:
What about adding a configuration to give a custom name for mixins. Default would still be -styled-mixin${id}, but in some cases we could make it whatever we want (such as --styled-mixin or zz-styled-mixin in my case to solve sorting ;) )
Thanks


Add LICENSE file

Note that we should probably remove the license field from the package.json.

Closing with https://github.com/aragon/aragon-react-boilerplate/blob/master/LICENSE.
It's probably fine for now if users who get this repo via aragon init get a license pre-included; they can change it as they need to.


Bump vertex version to beta01

btw, ci breakage is expected since functioncalls have changed. Will fix in follow up PR

@rlazo  I'm happy to help fix in this PR. I'll make changes directly to your branch if that's ok

sure, go ahead!

@rlazo ptal at the latest commit

@rlazo ptal at the latest commit

LGTM. We can work later on make the example extensible to support multiple function calls in parallel


Use doctrine instantiator

See https://github.com/zfcampus/zf-apigility-doctrine/pull/271

Coverage increased (+0.07%) to 51.21% when pulling 8ca327e88684e7b8f2487ef230337003555d9875 on gsomoza:feature/use-doctrine-instantiator into 689a9aacafe9a691229231a2cfd3fcdbdcfea0c0 on zfcampus:master.

@webimpress FYI

@gsomoza this is feature, so PR should be against develop branch. I've changed it for the PR, please rebase against develop. Thanks!

Still have to polish the tests after the rebase, will do that as soon as I get a chance (maybe tonight).

Coverage increased (+3.4%) to 54.509% when pulling 973ef368da7b1c69f200295be856e57cc66642af on gsomoza:feature/use-doctrine-instantiator into 2d6b27ae0242c2cab4c01bf6b6c43677c1608e6d on zfcampus:develop.

Coverage increased (+3.4%) to 54.509% when pulling 973ef368da7b1c69f200295be856e57cc66642af on gsomoza:feature/use-doctrine-instantiator into 2d6b27ae0242c2cab4c01bf6b6c43677c1608e6d on zfcampus:develop.

Coverage increased (+3.4%) to 54.509% when pulling db3a53ef3277a72b5bfb1ed2d637f194b5e61d88 on gsomoza:feature/use-doctrine-instantiator into 2d6b27ae0242c2cab4c01bf6b6c43677c1608e6d on zfcampus:develop.

Coverage increased (+3.5%) to 54.605% when pulling 2fc20994a011319424488c1592bc18dbd2c5caec on gsomoza:feature/use-doctrine-instantiator into 2d6b27ae0242c2cab4c01bf6b6c43677c1608e6d on zfcampus:develop.

Found this PR as I was struggling with same problem.  Entities are domain definitions and doctrine is just ORM utility connecting it to storage and API, so it should not dictate how my entities are instantiated at domain level.  Therefore, if entity has some constructor requirements to avoid being in invalid state, factory or instantiator need to be passed full input data.
Uploaded data can be a mixture of required and optional parameters, so:

Factory should create entity instance based on required subset of keys, $entity = $this->entityFactory->instantiate($entityClass, $data).  It will know how to use input data to create entity.
Hydrators pick up the rest of optional keys.

Problem I am seeing is InstantiatorInterface::instantiate only takes in class name, not data.

@alextech I would recommend separating the Doctrine layer from your domain layer. In other words your Doctrine entities (DE) would be considered infrastructure in your domain model. You could make it so that each DE "knows" how to instantiate a domain entity. E.g.:
namespace \Acme\Billing;
class Invoice {} // your domain entity / value object

namespace \Acme\Doctrine\Billing {}
class InvoiceEntity {
    public function toInvoice(): \Acme\Billing\Invoice {
        return new \Acme\Billing\Invoice($this->getId(), $this->getItems() /* etc */);
    }
}

This would mean the InvoiceEntity can be instantiated without a constructor because it doesn't represent a valuable business object like an Invoice - it just represents an item (row/document) in a database.

I think the answer to your questions comes down to how Apigility is being used together with Doctrine:
A) To provide a DBAL API
The fastest approach because it's just mapping to ORM to API endpoints. In this case, the Doctrine Entity is very close to the "surface" of your API. E.g. you'd be using DoctrineResource to expose Doctrine Entities almost 1:1 as API endpoints, with some goodies on top like validation, filtering, hydrators, pagination, etc. In other words, you'd just be allowing your API clients to communicate remotely with your database using REST (as opposed to communicating locally using an ORM).

This is the use-case that has extensive documentation in Apigility.
You can build on top of it to apply some domain logic through e.g. value objects consumed by your Doctrine entities, but even that has it's own "gotchas" and you'd have to understand the internals of Doctrine very well to leverage VO's properly.
Best for small/simple APIs that don't require much business logic. E.g. some internal services or APIs to power a special admin interface, etc.

B) To provide a Business API (maybe there's a better way to name this?)
Endpoints here would represent resources that send messages to your business model (for "writes") and read data from the infrastructure (for "reads").

Writes: inputs are filtered, validated, etc., by Apigility. Then they're mapped to a "message" sent to your domain model (e.g. a "command" if you're using CQRS). I.e. Request > Apigility > "Domain Resource" (AFAIK you'd have to build this yourself) > Domain Command > Domain Model.
Reads: data is read directly from the infrastructure in most cases – e.g. from projection tables. I.e. Request > Apigility > Doctrine Entity for Projection > Response.

C) There are other setups that weigh heavier in one or the other direction, or in completely different directions, but the two above are the major ones I've worked with in the past years.
Keeping in mind that I know very little I know about you or your project: it seems like you may have started building "A" (by following the documentation), but you actually needed "B". To get from "A" to "B" you'd have to replace your DoctrineResource API endpoints and instead use "custom code" endpoints that leverage your domain model.
I hope this helps you one way or the other.

you'd have to replace your DoctrineResource API endpoints and instead use "custom code"

Interesting you mention that, I started doing that first with just EntityResource, noticed it looked too much like reusable boilerplate, specifically where I had to bring in hydrators after entity instance creation, fetch existing entity if updating, then persist + flush cycle. So I looked around, found this repository, which helped with hydrator fetching and a really nice feature where it looks for presence of identifier field in payload to decide if entity needs creating or updating; if needs updating, performs find from entityManager. But it seemed incomplete.
If I think hard about your (B) point, and how it is intended to be used as "projection of tables" then I guess your approach is not wrong, it just does not fit my style.  I guess I think about my REST API endpoints too much like RPC calls, not as table gateways.

Great, I'm glad if anything I said helped at all 👍


 We need to update it.

Closed with #304


round values

For my graph Daily Sales Per Delivery App, I see some numbers like 3438.580000000001, even though we are actually streaming rounded up to tens, meaning our streams look like this: 22.22.

https://github.com/keen/keen-analysis.js/issues/43


pyhaystack.util.state.NotReadyError

python: 3.12.1
pyhaystack:       3.0.0

    class OpticManager:

        def __init__(self) -> None:
            self.url = f'{SIEMENS_HOST}'

            self.client = pyhaystack.connect(implementation='skyspark',
                                             uri=self.url,
                                             username=SIEMENS_USER_NAME,
                                             password=SIEMENS_PASSWORD,
                                             project=SIEMENS_PROJECT_NAME,
                                             pint=True)

        def get_about(self):
            op = self.client.about()
            op.wait(3)
            about = op.result()
            print(about)

    optic = OpticManager()
    optic.get_about()

When I run this code, it throws an error ：
File "/root/.local/share/virtualenvs/siemens-edge-i-9CWoel/lib/python3.12/site-packages/pyhaystack/util/state.py", line 97, in result
    raise NotReadyError()
pyhaystack.util.state.NotReadyError

Why is this happening? Is there something wrong with my code logic?

Means the request you issued had not been completed by the time you asked for the result.  While 3 seconds should be enough time, I don't know enough about the environment.
Configuring the logging module might help unlock more clues too:
import logging

logging.basicConfig(level=logging.DEBUG)

If I don't set the wait for 3 seconds, it will remain blocked indefinitely.  logging also  not work.

Then there is something that is preventing the request from being processed at all.  .wait(3) means wait for up to 3 seconds for it to finish.
The result will be available when it's fulfilled by the server and library, not before.  So if after 3 seconds, it still isn't done, and you ask for the result, it'll error out the way it did above.
Why didn't it complete?  Who knows?  The above logs don't tell us.  I refer you to https://github.com/ChristianTremblay/pyhaystack/issues/118#issuecomment-1996314951 for advice on how you can troubleshoot it earlier.
I can't say I've ever tested on FINStack, so no telling whether it'd work or not.

ok ,  Is there something wrong with my code logic?

DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): <IP_ADDRESS>:8080
DEBUG:urllib3.connectionpool:http://<IP_ADDRESS>:8080 "GET /user/login HTTP/1.1" 200 None
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): <IP_ADDRESS>:8080
DEBUG:urllib3.connectionpool:http://<IP_ADDRESS>:8080 "GET /ui HTTP/1.1" 404 241

note this error

Right, sounds like the SCRAM auth is not quite working properly and the Haystack thinks we're a web browser, thus sends us to the UI page to interactively authenticate.
Looks like it's failing right here:
https://github.com/ChristianTremblay/pyhaystack/blob/master/pyhaystack/client/ops/vendor/skyspark_scram.py#L134
Not sure why it gets stuck at that point, authentication should have failed, but in any case, it appears either this implementation is not compatible with Skyspark, or they've changed their protocols yet again.

import logging

    logging.basicConfig(level=logging.DEBUG, filename='siemens.log')

    session = SkysparkScramHaystackSession(
        uri=SIEMENS_HOST,
        username=SIEMENS_USER_NAME,
        password=SIEMENS_PASSWORD,
        project=SIEMENS_PROJECT_NAME
    )
    print(f"Session state: {session.is_logged_in}")

    au = session.authenticate()
    print('au', au)

package:   fysom/init.py
the code run ,but throw this error:

import logging

    logging.basicConfig(level=logging.DEBUG, filename='siemens.log')

    session = SkysparkScramHaystackSession(
        uri=SIEMENS_HOST,
        username=SIEMENS_USER_NAME,
        password=SIEMENS_PASSWORD,
        project=SIEMENS_PROJECT_NAME
    )
    print(f"Session state: {session.is_logged_in}")

    # au = session.authenticate()
    # print('au', au)

    print(session.find_entity("site"))

package:   fysom/init.py
the code run ,but throw this error:

And the log is
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): <IP_ADDRESS>:8080
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): <IP_ADDRESS>:8080

fysom is a state-machine library, and yes, we define an "exception" state which gets passed through to the Operation class for throwing an exception.
As I say, I don't know FIN|Stack.  This is not a Haystack implementation I've worked on, nor have access to.  It's a big assumption to presume compatibility with Skyspark.  It is also possible that there is a bug in Skyspark support code too.  It doesn't get a lot of "love".
I said as much in https://github.com/ChristianTremblay/pyhaystack/issues/118#issuecomment-1997034253.
HTTP vs HTTPS: this will depend on what your server's configuration is.  Whatever your web browser uses if you use a web browser to interact with FIN|Stack, you should use the same protocol in pyhaystack unless there's something specific about your network that suggests otherwise.


RDoc links cannot parse obfusticated email addresses

README.rdoc:
* {Email}[mailto:postmodern.mod3 at gmail.com]

Output
$ yardoc
[warn]: In file `README.rdoc':10: Cannot resolve link to Email from text:
[warn]: ...{Email}...
$ yard --version
yard <IP_ADDRESS>

This is an issue with RDoc. The link isn't valid RDoc syntax.
http://docs.ruby-lang.org/en/2.1.0/RDoc/Markup.html
Looks like you can't have spaces in the URL portion. Might want to use + or %20.

%20 fixed it. Submitted a bug to rdoc as well. Thanks!


grounding Assertion Error

The task is open the most recent email in gmail. The agent did everything perfectly and actually opened it. But there appeared the following assertion error. This is based on the new code after PR #18.
'plan_code': 'agent.click(204)', 'reflection': 'The trajectory indicates an adjustment was made due to the previous action not achieving the intended result. The updated plan to select the appropriate profile before navigating to Gmail is a reasonable correction. Continue with the next steps as planned.'}
['import pyautogui; pyautogui.click(981.0, 258.0, clicks=1, button="left")']
Traceback (most recent call last):
  File "/Users/ericwang/research/openaci-new/openaci/cli_app.py", line 132, in <module>
    main()
  File "/Users/ericwang/research/openaci-new/openaci/cli_app.py", line 127, in main
    run(query)
  File "/Users/ericwang/research/openaci-new/openaci/cli_app.py", line 104, in run
    info, code = agent.predict(instruction=instruction, obs=obs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ericwang/research/openaci-new/openaci/agent/UIAgent.py", line 133, in predict
    agent = GroundingAgent(
            ^^^^^^^^^^^^^^^
  File "/Users/ericwang/research/openaci-new/openaci/macos/Grounding.py", line 65, in __init__
    self.nodes, self.linearized_accessibility_tree = self.linearize_and_annotate_tree(
                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ericwang/research/openaci-new/openaci/macos/Grounding.py", line 150, in linearize_and_annotate_tree
    preserved_nodes = self.preserve_nodes(tree).copy()
                      ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ericwang/research/openaci-new/openaci/macos/Grounding.py", line 143, in preserve_nodes
    assert node.attribute('AXPosition') is not None
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

This is the issue with the tree nodes getting updated during run.

Is this why we have the wait() function?


Add daynamic spark confs for the Databricks

We need a way to set spark confs dynamically for the Databricks,
e.g., when we test cuDF sonatype release jars, we need to disable cudf-rapids version match by adding
"--conf spark.rapids.cudfVersionOverride=true", or enable/disable AQE, or anything else.
By adding the parameter -f "--conf spark.xxx.xxx=xxx --conf ......" for the script 'run-tests.py',
we can dynamically add whatever confs for the Databricks cluster.
Signed-off-by: Tim Liu<EMAIL_ADDRESS>

build

build

build

As the blossom is having some network issue, I'll trigger the pre-merge build after Blossom team fix the network issue.

build

Both nightly build and nightly test pipelines PASS


feature request: structured logging console

Specifically, I'm thinking of the Debug Console, but probably applies to Output as well, and maybe others.
Currently, the Debug Console supports a basic filtering syntax with include/exclude, presumably on a per-line basis. (It curiously is lacking Find.) A structured logging console would instead interpret program output as having some kind of structure, and be able to query that more richly.
We probably cannot proscribe a format, and we probably cannot support every format, but supporting a few common ones would be nice. At the very least, we could support lines prefixed with timestamp so I could stop having 20% of the width of the console consumed by noise :)

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_smiling_face: This feature request received a sufficient number of community upvotes and we moved it to our backlog. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


Phusion Passenger Error: stream ended unexpectedly

Hi there,
We have intermittent file upload failures and the only error message we're seeing in the logs is Error: stream ended unexpectedly followed by a stack trace. The stack trace points to the following code within multiparty
self.on('finish', function() {
    if ((self.state === HEADER_FIELD_START && self.index === 0) ||
        (self.state === PART_DATA && self.index === self.boundary.length))
    {
      self.onParsePartEnd();
    } else if (self.state !== END) {
      self.handleError(new Error('stream ended unexpectedly'));
    }
    self.finished = true;
    maybeClose(self);
  });

In our case in particular, the error is thrown when state = PART_DATA, index = 0, and boundary.length = 42. On successful uploads, the state equals END. I'm trying to figure out how the index is calculated and under what circumstances this function will be called when the state is equal to PART_DATA?
As a test, I removed the self.index === self.boundary.length check from the if statement and this fixed my issue but obviously that check is there for a reason.
I should also note that this Node application is running under Nginx + Passenger (with SSL) and these errors are only noticed when the upload is initiated from a Chrome browser ( boundary is ------WebKitFormBoundary1ONhqXuetuF7yDxs ).
Any help would be greatly appreciated. Thanks.

@FooBarWidget please is there any example of how you solved this problem that I can follow.

@dtytomi Just use the latest Passenger version.

@FooBarWidget am using node and express for mean stack app, but passenger is for ruby and python application. Please do you have another alternative that works in meanjs app environment. Thanks

This is the link to the question I asked on stackoverflow, showing a  preview of my code http://stackoverflow.com/questions/33596469/error-stream-ended-unexpectedly

Can't speak for FooBarWidget, but for what it's worth, we're using passenger with nginx for both rails and node.js apps and it works wonderfully.

I was able to solve the torturous "stream ended unexpectedly" error after hours and hours of debugging. The error magically vanished after I commented out app.use(fileUpload()); from my node server page. Not sure why but it works.


added logo

Related Issue

added logo.png to navbar

Fixes: #2
Describe the changes you've made
added logo.png to navbar . Moved Logo dir to funwithphysics/src/images dir .
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.

Screenshots

Original
Updated

original screenshot

@ashish-patwal have u added it in the footer section as well??

ohh , let me add there too .

done


Connecting to a 1.9 server disconnects without a helpful error message

If you print the disconnect reason you'll probably get something relevant. Do we not do that at debug logging? Maybe we should.
But ya 1.9 isn't supported, so expect all sorts of things to be wrong

Fixed, closing


No recompilation on change

Hi,
I expect issues with this package.
When a file was modified, absolutely nothing happend;
Current behaviour
I edit a .njk file -> I refresh the browser -> I see that the edition isn't propagated
Expected behaviour
I edit a .njk file -> I refresh the browser -> I see, like for .html file, the updated file
Note that  options: { noCache: true } or restarting parcel does not even works to update output.
I need to force the update by remove .cache and dist folder.
Do I have miss to do anythings ?
Thanks

Hard to say without more details or a test repo, but the version with dependency tracking (1.1.0) wasn't released to NPM until February (2019-02-16).


NAN run time with iteration = 1

It seems that if we set iterations=1, the run time printed is nan.

Thanks for reporting! This should be fixed now, also inserted a check to see that iterations is at least one.


Add plus one checks

This is to be able to force PRs to be peer reviewed before merging.
This, however, is a really simple solution. It only marks the current
latest commit as reviewed and therefore comments like: "+1 once you fix
that typo" will not mark the later commits (the typo fix) as peer
reviewed. Also, running !squash will most likely remove the peer
review status as the latest commit will get a new SHA if anything gets
squashed.
Branches off of #5

+1

running !squash will most likely remove the peer review status - that is not very good. Can we make it per pull request, not per commit.

Status API only allows setting statuses for single commits. But this is just an initial version really. I have some ideas for keeping an eye on further PR updates and re-checking the comments on every update, but that will be a future improvement.

Alright


Need module for parsing ledger text into data structure.

Ledger comes with python bindings that may work out of the box. Need to try and get them to work...
Otherwise, may need to write something from scratch.

Not needed at the moment.


A class library with a ResourceDictionary will crash with AOT enabled

Describe the bug
I have a class library that contains some ResourceDictionaries which i refrence them into app.xaml
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
            <ResourceDictionary Source="ms-appx:///WinUICommunity.Components/Themes/Generic.xaml" />
            <ResourceDictionary Source="ms-appx:///WinUICommunity.LandingPages/Themes/Generic.xaml" />
            <ItemTemplates xmlns="using:WinUICommunity" />
        </ResourceDictionary.MergedDictionaries>
        <!--  Other app resources here  -->
    </ResourceDictionary>
</Application.Resources>

, When I activate the PublishAOT switch:
<PublishAOT>true</PublishAOT>
My app does not run in debug or release or publish mode at all.
In debug mode, I get the following exception

| Name | Value | Type
-- | -- | -- | --
  | Message | "Failed to assign to property 'Microsoft.UI.Xaml.ResourceDictionary.Source' because the type 'Windows.Foundation.String' cannot be assigned to the type 'Windows.Foundation.Uri'. [Line: 10 Position: 37]" | string
▶ | Exception | {"The text associated with this error code could not be found.\r\n\r\nFailed to assign to property 'Microsoft.UI.Xaml.ResourceDictionary.Source' because the type 'Windows.Foundation.String' cannot be assigned to the type 'Windows.Foundation.Uri'. [Line: 10 Position: 37]"} | System.Exception {Microsoft.UI.Xaml.Markup.XamlParseException}

after removing my resource dictionary refrences from app.xaml My app runs without problems.
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
        </ResourceDictionary.MergedDictionaries>

    </ResourceDictionary>
</Application.Resources>

I also tried this with a new class library and an empty resource dictionary and issue exist
Steps to reproduce the bug
1.Create a New WinUI 3 Project
2.Make sure your BuildTools is 22621.3232 (latest build tools can not be launch in AOT)
3.Create a Class Library with a Resource Dictionary (Create a nuget package)
4.Add Class Library to Project
5.Add Resource Dictionary in App.xaml
6.Run app (Works fine)
7.Add <PublishAOT>true</PublishAOT>
8.Try to run app (app will be crash)
Expected behavior
App Should be Run/Launch without any issues
Screenshots
No response
NuGet package version
Windows App SDK 1.6.0: 1.6.240829007
Packaging type
Packaged (MSIX), Unpackaged
Windows version
Windows 11 version 22H2 (22621, 2022 Update)
IDE
Visual Studio 2022-preview, Visual Studio 2022
Additional context
No response

i found that this is related to Trim and i uploaded a Repro sample. @codendone  Is there any news about fixing this bug? Actually, I can't publish any app
App1-CrashRC.zip
Open CsProj file and make sure Trim is enabled in Debug/Release
<PublishTrimmed Condition="'$(Configuration)' == 'Debug'">True</PublishTrimmed>
<PublishTrimmed Condition="'$(Configuration)' != 'Debug'">True</PublishTrimmed>

now try launch app, and you can see app will be crash.

I tested your repro project and it works correctly here. Make sure you use an up-to-date .net installation so that the cswinrt source generator runs.

I tested your repro project and it works correctly here. Make sure you use an up-to-date .net installation so that the cswinrt source generator runs.

Thank you.
installing CSWinRT nuget package fixed issue. i am using Visual Studio 2022 Preview.

I fixed all the crashes by installing Microsoft.Windows.CsWinRT package in the ClassLibrary project and the app itself.
so i am closing this issue


RetNet: relative position

I believe there is a difference in relative position implemented here, and what is described in the paper.  The issue I see is in theta_shift and rotate_every_two
def rotate_every_two(x):
    x1 = x[:, :, :, ::2]
    x2 = x[:, :, :, 1::2]
    x = torch.stack((-x2, x1), dim=-1)
    return x.flatten(-2)  # in einsum notation: rearrange(x, '... d j -> ... (d j)')\

# ...

def theta_shift(x, sin, cos):
    return (x * cos) + (rotate_every_two(x) * sin)

You can see here that theta_shift is applied to q and k, which have input shape (bsz, self.num_heads, tgt_len, self.key_dim) (after transpose).
class MultiScaleRetention(nn.Module):
    # ...
    def forward(
        self,
        x,
        rel_pos,
        chunkwise_recurrent=False,
        incremental_state=None
    ):
        bsz, tgt_len, _ = x.size()
        (sin, cos), inner_mask = rel_pos

        q = self.q_proj(x)
        k = self.k_proj(x)
        v = self.v_proj(x)
        g = self.g_proj(x)

        k *= self.scaling
        q = q.view(bsz, tgt_len, self.num_heads, self.key_dim).transpose(1, 2)
        k = k.view(bsz, tgt_len, self.num_heads, self.key_dim).transpose(1, 2)

        qr = theta_shift(q, sin, cos)
        kr = theta_shift(k, sin, cos)

Why does rotate_every_two shuffle elements along the key_dim axis?  This is not what was described in the paper (Equations 3, 4)

Relative position embedding should depend only on the sequence position (m, n) and theta parameters.  For that reason, I wonder if rotate_every_two is a bug?

Update:  I see now that rotate_every_two is effectively multiplying by i.  (If we view embedding vector of length d as a complex-valued vector of length d // 2, where odd-numbered indices correspond to the imaginary components.)
Still, this does not seem equivalent to what was described in the paper.  The same theta_shift operation is applied to both q and k, whereas the paper only performs conjugation on k.
Then, I suppose that theta_shift is the Euler identity:
# Euler identity
e ** (i * x) = cos(x) + i * sin(x)

We can view theta_shift as multiplying complex-valued q with the complex exponential e ** (i * theta)
def theta_shift(x, sin, cos):
    return (x * cos) + (rotate_every_two(x) * sin)

which effectively increments n -> n + 1 in the exponential e ** (i * n * x).
To my current understanding, this is correct when applied to q, and almost correct when applied to the conjugate of k.  We should take the complex conjugate of k after applying theta_shift.
def complex_conjugate(x):
    # Very similar to `rotate_every_two` from earlier
    x1 = x[:, :, :, ::2]
    x2 = x[:, :, :, 1::2]
    x = torch.stack((x1, -x2), dim=-1)
    return x.flatten(-2)  # in einsum notation: rearrange(x, '... d j -> ... (d j)')\

class MultiScaleRetention(nn.Module):
    # ...
    def forward(
        self,
        x,
        rel_pos,
        chunkwise_recurrent=False,
        incremental_state=None
    ):
        # ...
        qr = theta_shift(q, sin, cos)
        kr = complex_conjugate(theta_shift(k, sin, cos))

Finally, it seems that retention does not view q or k as complex-valued vectors -- just regular, real-valued embeddings.  That explains why methods like MultiScaleRetention.parallel_forward don't account for complex values.  (TBH, I'm still a little unclear on why that is, but at least it makes the code match the math.)

$\mathbb{R}^d$ and $\mathbb{C}^{d/2}$ are Isomorphisms, we use real-valued for simplicity. complex_conjugate is not necessary, where $(ke^{-im\theta})^*=k^*e^{im\theta}$.

Just realized that I can put LaTeX into these comments.  Definitely would have made my original question cleaner.
I see that $\mathbb{C}^{d/2}$ and $\mathbb{R}^d$ are easily interchangeable. Sounds like isomorphism is the technically correct term. 😅

complex_conjugate is not necessary, where $(ke^{-im\theta})^*=k^*e^{im\theta}$

In that case, shouldn't the expression be $\left(K_m e^{-im\theta}\right)^{\dagger} = K_m^*  e^{im\theta}$ ?  Just doesn't feel correct to treat $K_m$ as both a real- and complex-valued Tensor within the same expression.
But I guess it's not important.  Whether the frequency is positive/negative, it's still a waveform with the same magnitude of frequency.  And that probably doesn't affect anything noticeably.
@sunyt32 Thanks for the response! 🙏

@fkodom I will try to provide my own understanding: $(K_me^{-im\theta})^* = K_m^*e^{im\theta} = (K_m \cdot D) e^{im\theta}$. Where $D$ is a diagonal matrix like [[1 0],[0 -1]] (a $2 \times 2$ example). $D$ will also be absorbed into the learnable parameter $W_k$ like $\Lambda $.

@fkodom I think this may be due to: $(e^{im\theta})^T = e^{-im\theta}$, if we start from a simple $2 \times 2$ example: $(e^{im\theta})^T$ = $([[a, -b],[b, a]])^T$ = $([[a, b],[-b, a]])$ = $e^{-im\theta}$. For $d \times d$ situation, based on some relative position embedding papers such as Roformer, This conclusion should also hold.
So: $o(n) = \sum Q_n(\gamma e^{i\theta})^{n-m}{K_m}^Tv_m $
$= \sum (Q_n\gamma^n e^{in\theta})(\gamma^{-m}e^{-im\theta}{K_m}^T)v_m$
$=  \sum (Q_n\gamma^n e^{in\theta})(\gamma^{-m}(e^{im\theta})^T{K_m}^T)v_m $
$= \sum (\gamma^n Q_n e^{in\theta})(\gamma^{-m}(K_m e^{im\theta})^T)v_m $
I think this conclusion is correct and corresponds to the code. But it is obviously not the same as the Eq. (3) in the paper.
Then I checked the Eq. (3) again and I think maybe the final form of Eq. (3) should be $\sum (\gamma^n Q_n e^{in\theta})(\gamma^{-m}(K_m)^Te^{-im\theta})v_m$ instead of $\sum (\gamma^n Q_n e^{in\theta})(\gamma^{-m}(K_me^{-im\theta}))^Tv_m$ (Because $(e^{-im\theta}(K_m)^T)$ obviously satisfies the commutative law)??
It would be great if the author @sunyt32 can help to explain whether my understanding is correct or point out where I'm wrong. And by the way, this work is outstanding!

@bin123apple You are right under the $2\times 2$ real number view, which is the same as the implementation of Roformer. Besides, for a complex view, there is also an implementation in LLaMA, where RoPE is added by transforming q, k into complex.
In a nutshell, if you treat $Q, K$ as real matrixs, then you can follow Roformer. If you treat them as complex matrixs, you can follow LLaMA.


Update GitHub Action documentation for Docker image stability and security

User description
This pull request updates the GitHub Action documentation to improve clarity and enhance security measures.

Changed the example tag from v2.0 to v0.23 to use an existing Docker image version as a sample.
Changed uses to show how to use a specific version directly from Docker Hub.
Added an example of specifying the Docker image by its digest to ensure enhanced security.

ref. #1034

PR Type
Documentation

Description

Updated the GitHub Action documentation to improve clarity and enhance security measures.
Changed the example tag from v2.0 to v0.23 to use an existing Docker image version as a sample.
Changed uses to show how to use a specific version directly from Docker Hub.
Added an example of specifying the Docker image by its digest to ensure enhanced security.

Changes walkthrough 📝
Relevant filesDocumentation

github.mdUpdate GitHub Action documentation for Docker image stability and security

docs/docs/installation/github.md
Updated example tag from v2.0 to v0.23 for Docker image version.  Changed uses to demonstrate using a specific version directly from Docker Hub.  Added an example of specifying the Docker image by its digest for enhanced security.

+12/-2

💡 PR-Agent usage:
Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

Thank you for merging!


Scribe don't allow access to multivalue header in Response object.

I need to access to "Set-Cookie" headers : with Scribe I can access to only one cookie.
My proposal is change parseHeaders Method :
private Map<String, String[]> parseHeaders(HttpURLConnection conn)
/*     /   {
/  47 /     Map headers = new HashMap();
/  48 /     for (String key : conn.getHeaderFields().keySet())
/ /     {
/  50 /       headers.put(key, ((List)conn.getHeaderFields().get(key)).toArray());
/ /     }
/  52 /     return headers;
/     */   }

There's a problem with the way scribe handles  automatically generated headers (this is because the connection opens when the Response object is created and the headers are populated then). There's no simple solution yet but I think there will be one when migrating to http commons


AMD support

See #774.

LGTM

better - add babel to the build proccess and ket babel to support amd

Merged. Thank you


MEFLing causes bimodality around zero fluorescence

I noticed that all of my samples have bimodal peaks around 0 fluorescence and I traced this to the MEFLing step of FlowCal in my workflow. This is most prominently visible in the negative control with no fluorescence shown below.
Has this been seen before and would this be due to using old beads which have a significant zero fluorescent beads? I also see the same peak near zero fluorescence for the SEA beads in the Tabor lab (which should be un-expired) in the first amond 8 peaks.
Any hunch causing this would be appreciated :)
Bimodal around 0

Zoom in of the histogram post MEFLing plotted with 200 bins :
Here's the beads processing graphs -

Hey Prashant, my first guess is that this is a visualization artifact resulting from overbinning the data near zero. (I've seen more egregious versions of this in other contexts.) Do you know how the bin edges are being calculated for the post-calibration data? If the calibration function is scaling data away from zero and the bin edges are not similarly adjusted, spreading fewer data values over the near-zero bins can introduce this artificial bimodality.
If you're relying on the logicle scale defaults, the FlowCal.plot.hist1d() function should get the bin edges dynamically from the FCSData object, which will use the data and the FlowCal _LogicleTransform to generate bin edges (here -> here). I think the resulting bin edges may depend on whether the data used are calibrated or uncalibrated, though, as this may change how the _LogicleTransform calculates the default T, M, and W Logicle scale parameters (see pubmed 16604519 for more on the Logicle scale and its parameters). If you're explicitly reusing the default uncalibrated bin edges, I would be less surprised to see this kind of visualization artifact; if you're implicitly relying on the FlowCal.plot.hist1d() defaults (which should generate new, updated bin edges for the calibrated data), I'd have to walk more closely through an example to see how the _LogicleTransform is making the bin edges to determine if this might still be an overbinning issue.
(It would also be helpful to inspect the calibration model parameters and make sure they make sense--the exponential term should be near 1.0 for modern cytometers, and the linear scaling factor should depend on the detector voltage.)

Awesome, thank you! I will inspect the bin edges and the calibration parameters and get back to you.
I was calling the plot with this FlowCal.plot.hist1d(processed_single_fcs, channel = fluorescence_channels[0], xlim = (-500, 500), bins = 200)

This is very strange. I can think of a few explanations but it would be easier if you could send us a few .fcs files including a problematic sample and beads, along with the code you're using that results in this issue.

Awesome, thank you both for looking into this!
If you want to reproduce my processing exactly
I have the data and the script all in this github repo : https://github.com/ppreshant/flow_cytometry
I hope it will be reproducible for you, but all you need to do is run the jupyter notebook : scripts_archive/adhoc_flowcal_analysis.ipynb until the Explore MEFL calibration prameters section.
I assume you would have all the flowcal dependancies or you could re-create my conda env in the repo using conda env create -f flowcal_wrappers_environment.yaml
I wrote a lot of wrappers to flowcal functions for automated running on every dataset so it might be hard to follow what each function is doing.
alternatively
If you don't want to clone the repo, you could just run these .fcs data through your flowcal. To approximately reproduce my processing, I do this to my data before MEFLing using this script in g8_process_single_fcs_flowcal.py and g14_gating_functions.py
# gate out saturated events - high and low
singlefcs_gate1 = FlowCal.gate.high_low(single_fcs, channels = scatter_channels)

# auto density gating : for 50% of cells
singlefcs_densitygate = FlowCal.gate.density2d(singlefcs_gate1,
                                       channels = scatter_channels,
                                       gate_fraction = density_gating_fraction,
                                       full_output=True) # full => saves outline

# Singlets: auto density gating : for 90% of cells w FSC-A vs H
singlefcs_singlets90 = FlowCal.gate.density2d(singlefcs_densitygate.gated_data,
                                       channels = singlet_channels,
                                       gate_fraction = 0.90,
                                       full_output=True) # full => saves outline

# convert data into MEFLs
calibrated_fcs = beads_calibration_function(singlefcs_singlets90.gated_data, fluorescence_channels)

There wasn't one problem .fcs file but every sample which has no fluorescence does this bimodal thing around 0 after MEFLing
Here are some plots which give an overview of what MEFLing does to these cells without red fluorescence : raw data on left and MEFLed on right (made through other scripts in R)

Also if it helps for context, I'm using the Sony SA3800 spectral flow cytometer that removes autofluorescence while doing automatic compensation (which is why the no fluorescence samples are very close to 0)

This is very strange. I can think of a few explanations but it would be easier if you could send us a few .fcs files including a problematic sample and beads, along with the code you're using that results in this issue.

Were you able to check out the files or code I sent? If not could you give some hints of the explanations you were thinking of?

I'm very sorry about the delay. I'm out of the office with family stuff until next Wednesday. I'll look into it when I come back.
About the explanations: I guess I am puzzled by the slope of the standard curve, despite the plot looking relatively nice, so I was thinking about looking at that first. Not sure that would explain the dip at zero though. Sorry this is too vague, this is why I wanted to look at it.
I'll get to it as soon as I go back. Sorry again.

No worries. Please take your time.
I'll look into the standard curve slope you mention in the meantime.
On Fri, Apr 28, 2023, 11:14 AM Sebastian M. Castillo Hair <
@.***> wrote:

I'm very sorry about the delay. I'm out of the office with family stuff
until next Wednesday. I'll look into it when I come back.
About the explanations: I guess I am puzzled by the slope of the standard
curve, despite the plot looking relatively nice, so I was thinking about
looking at that first. Not sure that would explain the dip at zero though.
Sorry this is too vague, this is why I wanted to look at it.
I'll get to it as soon as I go back. Sorry again.
—
Reply to this email directly, view it on GitHub
https://github.com/taborlab/FlowCal/issues/359#issuecomment-1527789498,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADRLCH6Q4ZHY7C5XBMB524TXDPUE7ANCNFSM6AAAAAAVRTDYAA
.
You are receiving this because you authored the thread.Message ID:
@.***>

I looked at the data and I have some sense of what's going on. In summary, some of this is a result of how we chose to extend the standard curve to deal with "negative" fluorescence values product of the automatic background subtraction modern cytometers like to make (kids these days smh). But I also found that a lot of this can be mitigated with good beads processing. @JS3xton I think you will be interested in the second part that deals with the standard curve.
Part 1: reproducing the problem with @ppreshant 's data
First, I processed @ppreshant 's data using a modification of one of our example scripts. Code is shown below for reference but I'll summarize the important points after so you don't have to read the code.

import os
import os.path
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import FlowCal

###
# Definition of constants
###

beads_filename     = './Samples_for_testing/beads/A12 Well - A12 WLSM.fcs'

# Names of the FCS files containing data from cell samples
samples_filenames = [
    './Samples_for_testing/A01 Well - A01 WLSM.fcs',
    './Samples_for_testing/A02 Well - A02 WLSM.fcs',
    './Samples_for_testing/A03 Well - A03 WLSM.fcs',
    './Samples_for_testing/A04 Well - A04 WLSM.fcs',
    './Samples_for_testing/A06 Well - A06 WLSM.fcs',
    './Samples_for_testing/A07 Well - A07 WLSM.fcs',
    './Samples_for_testing/A08 Well - A08 WLSM.fcs',
    './Samples_for_testing/A09 Well - A09 WLSM.fcs',

]

# Fluorescence values of each bead subpopulation, in MEF
mefl_values     = np.array([0, 487, 1474, 4516, 11260, 34341, 107608, 260461])

# Plots will be generated at various stages of analysis. The following are the
# names of the folders in which we will store these plots.
beads_plot_dir   = 'plot_beads'
samples_plot_dir = 'plot_samples'

if __name__ == "__main__":

    # Check that plot directories exist, create if they do not.
    if not os.path.exists(beads_plot_dir):
        os.makedirs(beads_plot_dir)
    if not os.path.exists(samples_plot_dir):
        os.makedirs(samples_plot_dir)

    ###
    # Part 1: Processing calibration beads data
    ###
    print("\nProcessing calibration beads...")

    # Load calibration beads data from the corresponding FCS file.
    print("Loading file \"{}\"...".format(beads_filename))
    beads_sample     = FlowCal.io.FCSData(beads_filename)

    print("Performing data transformation...")
    beads_sample     = FlowCal.transform.to_rfi(beads_sample)

    # Gating
    print("Performing gating...")

    beads_sample_gated = FlowCal.gate.high_low(beads_sample,
                                               channels=['FSC-A'],
                                               low=(5000))

    density_gate_output = FlowCal.gate.density2d(
        data=beads_sample_gated,
        channels=['FSC-A','SSC-A'],
        gate_fraction=0.8,
        sigma=5.,
        full_output=True)
    beads_sample_gated = density_gate_output.gated_data
    gate_contour       = density_gate_output.contour

    # Plot forward/side scatter 2D density plot and 1D fluorescence histograms
    print("Plotting density plot and histogram...")

    # Parameters for the forward/side scatter density plot
    density_params = {}
    density_params['mode'] = 'scatter'
    density_params['sigma'] = 5.

    # Plot filename
    plot_filename     = '{}/density_hist_{}.png'.format(beads_plot_dir,
                                                        'beads')

    # Plot and save
    FlowCal.plot.density_and_hist(
        beads_sample,
        beads_sample_gated,
        density_channels=['FSC-A', 'SSC-A'],
        hist_channels=['mScarlet-I-A'],
        gate_contour=gate_contour,
        density_params=density_params,
        savefig=plot_filename)

    # Use beads data to obtain a MEF transformation function
    print("\nCalculating standard curve for channel mScarlet-I-A...")

    mef_transform_fxn = FlowCal.mef.get_transform_fxn(
        beads_sample_gated,
        mef_channels='mScarlet-I-A',
        mef_values=mefl_values,
        # clustering_channels=['FL1', 'FL3'],
        verbose=True,
        plot=True,
        plot_dir=beads_plot_dir,
        plot_filename='beads')

    ###
    # Part 2: Processing cell sample data
    ###
    print("\nProcessing cell samples...")

    # We will use the list ``samples`` to store processed, transformed flow
    # cytometry data of each sample.
    samples = []

    # Iterate over cell sample filenames
    for sample_id, sample_filename in enumerate(samples_filenames):

        # Load sample data from the corresponding FCS file.
        print("\nLoading file \"{}\"...".format(sample_filename))
        sample = FlowCal.io.FCSData(sample_filename)

        # Perform transformations
        print("Performing data transformation...")

        # Transform data to RFI, as done previously with beads.
        sample = FlowCal.transform.to_rfi(sample)

        # First process data without calibration
        # Gating
        print("Performing gating on non-calibrated data...")

        # Apply density gating on the forward/side scatter channels.
        # Return also a contour around the gated region.
        density_gate_output = FlowCal.gate.density2d(
            data=sample,
            channels=['FSC-A','SSC-A'],
            gate_fraction=0.90,
            full_output=True)
        sample_gated = density_gate_output.gated_data
        gate_contour = density_gate_output.contour

        # Plot forward/side scatter 2D density plot and 1D fluorescence
        # histograms
        print("Plotting density plot and histogram...")

        # Parameters for the forward/side scatter density plot
        density_params = {}
        density_params['mode'] = 'scatter'

        # Parameters for the fluorescence histograms
        hist_params = {}
        hist_params['xlabel'] = 'mScarlet-I-A ' + \
            '(a.u.)'

        # Plot filename
        plot_filename = '{}/density_hist_{}.png'.format(
            samples_plot_dir,
            'S{:03}'.format(sample_id + 1))

        # Plot and save
        FlowCal.plot.density_and_hist(
            sample,
            sample_gated,
            density_channels=['FSC-A','SSC-A'],
            hist_channels=['mScarlet-I-A'],
            gate_contour=gate_contour,
            density_params=density_params,
            hist_params=hist_params,
            savefig=plot_filename)

        # We now use the transformation function obtained from calibration beads
        # to transform FL1 data from RFI to MEF.
        sample_mef = mef_transform_fxn(sample, channels=['mScarlet-I-A'])

        # Gating
        print("Performing gating on calibrated data...")

        # Apply density gating on the forward/side scatter channels.
        # Return also a contour around the gated region.
        density_gate_output = FlowCal.gate.density2d(
            data=sample_mef,
            channels=['FSC-A','SSC-A'],
            gate_fraction=0.90,
            full_output=True)
        sample_mef_gated = density_gate_output.gated_data
        gate_mef_contour = density_gate_output.contour

        # Plot forward/side scatter 2D density plot and 1D fluorescence
        # histograms
        print("Plotting density plot and histogram...")

        # Parameters for the forward/side scatter density plot
        density_params = {}
        density_params['mode'] = 'scatter'

        # Parameters for the fluorescence histograms
        hist_params = {}
        hist_params['xlabel'] = 'mScarlet-I-A ' + \
            '(MEF)'

        # Plot filename
        # The figure can be saved in any format supported by matplotlib (svg,
        # jpg, etc.) by just changing the extension.
        plot_filename = '{}/density_hist_{}_mef.png'.format(
            samples_plot_dir,
            'S{:03}'.format(sample_id + 1))

        # Plot and save
        # In this case, we will plot the forward/side scatter channels in
        # the density plot and a histogram of the fluorescence channel FL1
        # below.
        FlowCal.plot.density_and_hist(
            sample_mef,
            sample_mef_gated,
            density_channels=['FSC-A','SSC-A'],
            hist_channels=['mScarlet-I-A'],
            gate_contour=gate_mef_contour,
            density_params=density_params,
            hist_params=hist_params,
            savefig=plot_filename)

While doing this, I found that

calling gate.high_low() with default parameters (i.e. without explicit high or low parameters) is not a good idea for your data. @JS3xton : this function clips by default by taking low and high from FCSData.range, which is initialized to [0, $PnR], but this is not appropriate for floating-point .fcs data with negative values. gate.high_low() actually uses -inf if range[0] is None, but from a quick glance I don't think FCSData sets range intelligently if the data type is floating point. We might wanna look into this more.

I don't think gate.start_end() is necessary either.

your beads data has A LOT of debris which made it really hard to fit a standard curve. I had success via gate.high_low() with low=5000 before any other processing, which removed most of the debris and allowed me to call density gating with a high gate fraction.

After this, the beads parameters I got were [  0.92   1.2  112.69]. Note that the slope (first parameter) is much closer to one than what you mentioned @ppreshant (~0.68).
Still, I did see the double peak around zero in cell samples with vs. without calibration.
Without calibration:

With calibration:

Part 2: looking at the standard curve function
Because all the previous processing looked good to me, I moved on to the standard curve itself, trying to figure out if there was some weird numerical error. If you look at the MEF module documentation you will find that MEF fluorescence is calculated as
s(fl_rfi) = sign(fl_rfi) * exp(b) * (abs(fl_rfi)**m)

This corresponds to the red line in the standard curve plot, with a few additions. The abs() and the sign() functions were added to extend the function to negative values, since calibration is done only with positive fluorescence values. This, combined with m!=1 can create some weird artifacts close to zero.
We can illustrate this with simulated data:
import numpy
import matplotlib
from matplotlib import pyplot

def sc_func(x):
    return numpy.sign(x) * numpy.exp(p[1]) * (numpy.abs(x)**p[0])

# Fluorescence model parameters
p = [  0.68,   1.2,  112.69]

# Simulate converting au to mef
x = numpy.concatenate((
    -numpy.logspace(-8, 4, 1000)[::-1],
    [0],
    numpy.logspace(-8, 4, 1000),
))
y = sc_func(x)

fig, ax = pyplot.subplots()
ax.plot(x, y)
ax.set_xlabel('"a.u."')
ax.set_ylabel('"MEF"')

xlim = 1000
ylim = (xlim**p[0])*numpy.exp(p[1])
ax.set_xlim(-xlim, xlim)
ax.set_ylim(-ylim, ylim)

Because m < 1, values close to zero are pulled farther away from zero (for example, sqrt(x) = x^0.5 > x if x is a small number). This is more evident if we simulate a distribution
# Histogram test
# Generate normally distributed x around zero
# See what happens with the mef-transformed distribution
xn = numpy.random.normal(scale=1000, size=100000)
yn = sc_func(xn)

fig, axes = pyplot.subplots(2, 1, figsize=(8, 4))

ax = axes[0]
ax.hist(xn, bins=100)
ax.set_ylabel('"a.u."')

ax = axes[1]
ax.hist(yn, bins=100)
ax.set_ylabel('"MEF"')

So we can reproduce this issue with just simulated data.
It should be obvious that the closer m is to one, the less dramatic this effect will be. If we repeat this with m=0.92:

And with m > 1 we have the opposite effect. For m = 1.1:

So now the question is what to do with this? I think these are your options:

First, make sure that your beads processing is correct. m=0.68 is highly atypical and suspicious. Ideally you would have it between 0.9 - 1.1, and these should be extremely consistent across your runs (i.e. if you got 0.92 once, you should get +/- 0.1 at most every time in the same instrument). Gating out debris more aggressively, as I did above, might help. Cleaning and doing maintenance on your instrument so the debris is reduced in the first place might also help a lot. Also make sure you're using the right MEF numbers for your channel.
Now, if m is not exactly one you will still have artifacts around zero to some extent. m is  really close to one in most instruments, but we had m=1.08 in our really old cytometer in the Tabor lab so we know large deviations can happen (although as I mentioned these should be consistent).

One option is just to ignore the remaining artifacts. To be honest I doubt this will affect most analysis that I can think of.
The other option is to force m=1. We made it a floating parameter because it made for a better fit, but if these artifacts bother you a lot you could just force it to be one and live with a slightly worse standard curve fit. I think you could easily do this in a hacky way by removing p[0] from line 451 in the FlowCal mef module, function fit_beads_autofluorescence(), inner function sc_fun(). If you do this and have trouble I wouldn't be able to provide help since it's a modification I never tried myself.

Hope this helps

Thanks at lot for the elaborate response @castillohair! applying the MEFL function to a random distribution makes it very clear.
I will definitely make sure that m is in the range you mention. I tried increasing the gating threshold in the instrument for the beads to remove some the of the debris , and will do the gate.high_low() more aggressively too. Thanks for taking the time :)

Nice demonstration, @castillohair.
Yeah, I've also seen FCSData.range be unreliable when the data type is floating point. I'd be open to reducing our reliance on range, or at least testing the data type before using it. Not sure to what extent inaccurate range values compromise other things like FCSData.hist_bins().
I've actually re-implemented calibration in another context, and I simplified the calibration function by hardcoding m as 1. This was simpler and yielded some nice math simplifications. I'd be open to making this the FlowCal default, since modern instruments generally conform to this. We'd have to think about how/if we want to support a function where m is not one, though, for backwards compatibility.


Investigation: web compatibililty - Work in Progress

Issue #, if available: N/A
Description of changes: Investigation to see if we can make this lib work in the browser
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Closing in favor of #60


Fix auto-generation of API-Doc for trainer

Signed-off-by: Jael Gu<EMAIL_ADDRESS>

Codecov Report

Merging #755 (daa7c9a) into main (957a6da) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #755   +/-   ##
=======================================
  Coverage   71.04%   71.04%
=======================================
  Files         167      167
  Lines        7613     7613
  Branches     1251     1251
=======================================
  Hits         5409     5409
  Misses       1831     1831
  Partials      373      373

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 957a6da...daa7c9a. Read the comment docs.

/lgtm
/approve


Updated X logo

Updated X logo and added square to new discord logo. #46

Corrected it. Kindly review again.

Nice. Thanks.


Client Capabilities Support

Added support for client capabilities, as per https://github.com/AzureAD/microsoft-authentication-library-for-java/issues/197
Main functionality is to create a new parameter that can be set as part of an authorization request, and this new parameter is merged into the existing claims parameter.
See https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/pull/1641 for a related implementation in the .NET library

Although slightly off-topic, I encountered the following issue while implementing this on .NET - it looks like there is an expectation that if the user configures claims, then the token cache is bypassed (AcquireTokenSilent will behave as if ForceRefres=true). But if they configure only client capabilities, then the token cache is not bypassed. I believe this is how Android team also implemented this.

Not sure about sending claims to token endpoint - according to spec https://openid.net/specs/openid-connect-core-1_0.html#ClaimsParameter
it is an optional parameter for Authorization Request


Mac OX.Legacy C#. Extract class interface crash

Environment data
.NET Command Line Tools (1.0.0-preview3-004056)
Product Information:
Version:            1.0.0-preview3-004056
Commit SHA-1 hash:  ccc4968bc3
Runtime Environment:
OS Name:     Mac OS X
OS Version:  10.12
OS Platform: Darwin
RID:         osx.10.11-x64
Mono JIT compiler version 4.6.1 (mono-4.6.0-branch-c8sr0/ef43c15 Mon Oct  3 14:35:32 EDT 2016)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS:           normal
SIGSEGV:       altstack
Notification:  kqueue
Architecture:  x86
Disabled:      none
Misc:          softdebug
LLVM:          yes(3.6.0svn-mono-master/8b1520c)
GC:            sgen
VS Code version:
1.7.1
02611b40b24c9df2726ad8b33f5ef5f67ac30b44
C# Extension version:
v1.5-beta8 (and various stable previous version)
Extensions list:
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Steps to reproduce
Select C# class -> cmd+. ->Extract Interface
Expected  behavior
Did create interface
Actual behavior
Error. Problem invoking 'RunCodeAction' on OmniSharp server: null
OmniSharp log
Starting OmniSharp server at 13.11.2016, 11:12:21
Target: /Users/pyotrvasilev/Documents/projects/csharp-cgdk/csharp-cgdk.sln
OmniSharp server started wth Mono
Path: /Users/pyotrvasilev/.vscode/extensions/ms-vscode.csharp-1.4.1/out/.omnisharp-mono/OmniSharp.exe
PID: 77979
OmniSharp: -s /Users/pyotrvasilev/Documents/projects/csharp-cgdk/csharp-cgdk.sln --hostPID 77957 DotNet:enablePackageRestore=false --encoding utf-8 --stdio
{"Event":"log","Body":{"LogLevel":"INFORMATION","Name":"OmniSharp.Startup","Message":"Omnisharp server running using Stdio at location '/Users/pyotrvasilev/Documents/projects/csharp-cgdk' on host 77957."},"Seq":1,"Type":"event"}
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Initializing in /Users/pyotrvasilev/Documents/projects/csharp-cgdk
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Auto package restore: False
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Update workspace context
[INFORMATION:OmniSharp.DotNet.DotNetProjectSystem] Resolving projects references
[INFORMATION:OmniSharp#MSBuild] Detecting projects in '/Users/pyotrvasilev/Documents/projects/csharp-cgdk/csharp-cgdk.sln'.
[INFORMATION:OmniSharp#MSBuild] Loading project from '/Users/pyotrvasilev/Documents/projects/csharp-cgdk/csharp-cgdk.csproj'.
[WARNING:OmniSharp#ProjectFileInfo] TargetFrameworkVersion 'v4.6.1' not supported by this toolset (ToolsVersion: 4.0).
/Users/pyotrvasilev/Documents/projects/csharp-cgdk/csharp-cgdk.csproj
[INFORMATION:OmniSharp.ScriptCs.ScriptCsProjectSystem] Detecting CSX files in '/Users/pyotrvasilev/Documents/projects/csharp-cgdk'.
[INFORMATION:OmniSharp.ScriptCs.ScriptCsProjectSystem] Could not find any CSX files
[INFORMATION:OmniSharp.Startup] Configuration finished.
 We shouldn't offer this code action unless we can do that.


Improvements to haskell-modules/generic-builder

As discussed in https://github.com/NixOS/nixpkgs/pull/286317#discussion_r1478306027 this PR combines #284477, #286317 and https://github.com/NixOS/nixpkgs/pull/286317#discussion_r1477365247.
@sternenseemann
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Thanks. Just noticed that we actually have a set rebuild going on.


SQL table incremental escape $ in column name for cursor_path

dlt version
1.3.0
Describe the problem
Slack feed:
https://dlthub-community.slack.com/archives/C04DQA7JJN6/p1731449028965839
Performing incremental ingest of SQL Server table with cursor_path column set to __$start_lsn. When trying to use this column the following error occurs due to parse():
cursor_path="__$start_lsn"
Error:
JsonPathParserError: Parse error at 1:2 near token $ ($)
Attempted to escape the $ by applying single quotes around the column name:
cursor_path="'__$start_lsn'"
This results in the column not being able to be found:
ResourceExtractionError: In processing pipe dbo_t_eventData_CT: extraction of resource dbo_t_eventData_CT in generator table_rows caused an exception: "Cursor column ''__$start_lsn'' does not exist in table 'dbo_t_eventData_CT'"
Expected behavior
Able to escape $ for cursor_path within incremental pipeline for sql.
Steps to reproduce
source = sql_table(
credentials=connection,
schema="cdc",
table="table_a",
incremental=dlt.sources.incremental(
cursor_path="__$start_lsn"
)
)
Operating system
Linux
Runtime environment
Virtual Machine
Python version
3.11
dlt data source
SQL Server
dlt destination
Filesystem & buckets
Other deployment details
No response
Additional information
https://github.com/dlt-hub/dlt/blob/devel/dlt/sources/sql_database/helpers.py#L63-L69
Was able to get it to work by adding .replace("'", "") just to check that this is the source of the bug and the pipline worked once the ' were rermoved.

            try:
                self.cursor_column = table.c[incremental.cursor_path.replace("'","")]
            except KeyError as e:
                raise KeyError(
                    f"Cursor column '{incremental.cursor_path}' does not exist in table aaaaaaaaa"
                    f" '{table.name}'"
                ) from e

Thanks for reporting this @mikevanloo, I can confirm this is a bug on our end as https://github.com/h2non/jsonpath-ng handles escaping correctly when wrapping the path in quotes. Also it looks like this bug is specific to sql_database source. Will follow-up with a fix.

@burnash Great thanks!


Dynamic tables PR broke feature

Hello,
I have a little issue to report about the PR #12   which broke the color functionality of the "remediation/complexity" from the admin panel (https://github.com/pwndoc/pwndoc/pull/335).
Cordially

Confirmed, for some reason the original Tiptap upgrade PR removed those lines of code. Can you submit a PR to fix @Syzik?

Looks like it's working now even with table. I'm closing the issue.


Add new countries Traffic Coverage

Product: Traffic API
Date: Aug 1, 2019
Details:
Description of the change(s)
map release: 2019.06.010
new coverage for incidents and flow for:
Belarus (BLR)
Bosnia-Herzogovina (BIH)
Kazakhstan (KAZ)
Serbia (SRB)

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

#sign-off

@outinyman: I'm sorry - only the author of this article, @walsehgal, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

#sign-off


Querying on Generated columns does not type check.

With a Generated<Timestamp> column (where 'Timestamp' comes from the kysely-codegen package), like created_at, I'm running into a type error when executing a query. I've created the query in the playground, and you can see the type issue:

Argument of type 'Date' is not assignable to parameter of type 'OperandValueExpressionOrList<DB, "user", "user.created_at">'.
  Type 'Date' is missing the following properties from type 'readonly ValueExpression<DB, "user", Timestamp | null>[]': length, concat, join, slice, and 22 more.(2345)

The following type checks, but the generated sql is incorrect:

Finally, it's worth noting, that had the column not been Generated, things seem to work as expected:

You can't have ColumnType inside Generated or another ColumnType. The types passed to Generated or ColumnType are the actual row types. kysely-codegen might be doing some other type magic to flatten the nested types.

Ah that's exactly right, kysely-codegen has a special definition of 'Generated' that I missed. Thank you!


Favorites will not automatically expand when opened

Description
Favorites will not automatically expand when opened
Steps To Reproduce
No response
Expected behavior
Favorites will not automatically expand when opened
Files Version
v2.0
Windows Version
Windows 10 21H1 19043.1348
Relevant Assets
No response

Merging with #6469


support contacting multiple politicians

closes https://github.com/Stand-With-Crypto/swc-web/issues/642
What changed? Why?

The email action flow
The call action flow
The politician details page when you add your address

How has it been tested?

[X] Locally
[ ] Vercel Preview Branch
[ ] Unit test
[ ] Functional test

Change management
type=routine
risk=low
impact=sev5

nit: oxford comma here


When i try with cpu in Google Pipelines' it gives another results than Colab.

I don't know Why this is happing? Can you share the default parameters of transcribe.py.

How different are the results?
https://github.com/jianfch/stable-ts/blob/8219e886f0aa3f15c60b8aacede509389557958c/stable_whisper/whisper_word_level.py#L39-L151


Process .mp4 from Azure Blob Storage

I'm trying to figure it out how to access file from blob storage. Should I mount blob storage as a volume using this https://docs.docker.com/docker-for-azure/persistent-data-volumes/ or maybe there is different approach?
My use case is:
Upload file to dropbox -> Copy to Blob Storage -> Run docker container with ffmpeg -> analyze uploaded file. All is designed using Azure Logic App.

Never used it but I'd say if ffmpeg can access it, like a regular on a filesystem it should work fine.
Also that blob storage might exposed a signed url (s3 supports that) so you can access your input file that way.


fix: wrap eval_env in Monitor :bug:

Currently, stable_baselines3 prints the following warning:
UserWarning: Evaluation environment is not wrapped with a ``Monitor`` wrapper. This may
result in reporting modified episode lengths and rewards, if other wrappers happen to modify
these. Consider wrapping environment first with ``Monitor`` wrapper.

This PR fixes that.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

Hey there 👋 , we don't use a Monitor because we didn't use a wrapper that modified the environment. However it's a good practice so I merge it for this first Unit.
Thanks 🤗

Done!

Awesome thanks I'm merging it 🤗


Add Rider to .gitignore

Sorry for the delay in getting to this, I would have merged right away but I didn't see it 😢

No rush, just something I noticed whilst browsing through the source locally.


translation server returns a double quote on empty strings in .csv

Godot version:
3.2.4 beta, commit 3a6e90257
OS/device including version:
Windows/Linux
Issue description:
when using .csv for localization, the server returns a double quote (") when using an empty string. It should use the fallback language instead.
Steps to reproduce:
with the following .csv used for translations:
keys,en,de
KEY1,"Good Morning","Guten Morgen"
KEY2,"Good Evening",""
, when using KEY2, the output is a single "
Minimal reproduction project:
translation_csv.zip

I like to add that this is trivial to resolve and I am happy to do a PR