Compilation for Windows (cygwin) troubles

Tried to compile the version from 16.oct.2016 for Windows (cygwin), it have major changes in compilation process since the last one I've tried on Windows. So finally got all compiled but had to "fix" the following issues:
- First issue:
It required a pandoc.
CMake Warning at cmake/modules/pandocology.cmake:171 (message):
  Pandoc not found.  Install Pandoc (http://johnmacfarlane.net/pandoc/) or
  set cache variable PANDOC_EXECUTABLE.
Call Stack (most recent call first):
  doc/man/CMakeLists.txt:13 (add_document)

**Duplicate of #479**

- **Second issue**:
```
CMake Error at CMakeLists.txt:97 (install):
  install Library TARGETS given no DESTINATION!
```
I've changed the `CMakeLists.txt`:
from:
```
install(TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION lib/${CMAKE_LIBRARY_PATH}
)
```
to:
```
install(TARGETS ${PROJECT_NAME}
    DESTINATION lib/${CMAKE_LIBRARY_PATH}
)
```
The `cmake` finished with success.

Then I've run the `make` and got
- **Third issue**:
```
[ 59%] Generating st-term.1
pandoc.exe: /cygdrive/r/stlink/build/doc/man/st-term.md: openFile: does not
exist (No such file or directory)
```
The file `st-term.md` (and others `.md`) does exist, but windows version of
pandoc can't see it because of unix-style path. If I run manually ...
```
pandoc.exe r:\stlink\build\doc\man\st-term.md
```
... all be fine. In cygwin path `/cygdrive/r/stlink/build/doc/man/st-term.md` is equal to normal windows path `r:\stlink\build\doc\man\st-term.md`.
I'm not very familiar with `cmake` to fix such path-generation for `pandoc` on windows, so I've
removed a string:
```
"add_subdirectory(doc/man)"
```
from `CMakeLists.txt` and finally all stlink utilities were compiled.

Hope this information will be useful to fix issues in windows compilation.

Hi @LonelyWolf sorry for my late reply. I have pushed changes to the master branch which you can test out. Hopefully I have not broken other builds (mac/linux/unix), but we will see. Could you test this out:
https://github.com/texane/stlink/commit/68b0f3bddc3c4aaffe34caa6a3201029edd8ad56

Got the latest sources from repo, then:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

Compilation success.
Thanks.

Also I can confirm what this tool flawlessly works with STM32L151RD and STM32L476RG via:

ST-Link v1 (from the old STM32VLDISCOVERY board)
ST-Link v2 (the ST programmer)
ST-Link v2.1 (Nucleo board)
This is for known working targets.

Great! Thanks for you report.


Question / Feature Request: Ability to target children

First off I'd like to thank everyone involved for this library!
I've recently found myself trying to style components that come from other libraries and, while I can use tw(ThirdPartyComponent), it adds Tailwind classes only to the "container" and can't use CSS selectors to target any children.
Would an API like this be possible?
const MyComponent = tw.div`
  py-8
  relative

  ${(props, selector) => selector('.child-element')`
    px-4
    absolute
  `}
`;

Where selector would try to find any child matching the CSS selector passed.

🤔 not sure this would be possible. In order to be able to query the DOM, we would first need to render the component.

@MathiasGilson thanks for taking the time to reply.
Yes, I'm aware that I could extend a styled-component, but the problem I was having was trying to style a component from a third party library, like Ant Design's Date Picker. Besides, when extending a styled-component you can only write CSS and can't use Tailwind classes for nested children.
Shortly after opening this issue I realized my idea above was rather silly because being able to map my selector function above with, say, twComponentRef.querySelector would've required the component to be rendered. And even then, a component like a Date Picker would only render certain pieces after the user had interacted with it (opening a calendar after clicking.)
I ended up taking what I believe was the most reasonable approach: write those style overrides in a CSS file and import it.
Anyway, thanks again for the hard work 😄

Yeah that's what I do with ant.design too!
You can also override css props from the build config in your packager (webpack in my case)


Release 2.2.0 breaks newline expansion in parameters (e.g. "notes")

The latest version changes how parameters are passed through the step and out to cURL. Previously, it was possible to include newlines in the "notes" field. This was useful for building things like changelogs using the "Markdown" Notes Type. In 2.2.0 these are no longer preserved and multi-line values are now passed through as a single-line string.

Hi, we released a new version of step (https://github.com/bitrise-io/steps-hockeyapp-deploy/releases/tag/2.2.1), which includes the fix for multiline notes.
Thanks for your contribution @crrobinson14 ! :)


add readme for magic-sdk.

📦 Pull Request
add readme for magic-sdk. Fix the npm magic-sdk page.
🗜 Versioning
(Check one!)

[x] Patch: Bug Fix?
[ ] Minor: New Feature?
[ ] Major: Breaking Change?

✅ Fixed Issues

[List any fixed issues here like: Fixes #XXXX]

🚨 Test instructions
[Describe any additional context required to test the PR/feature/bug fix.]
⚠ Update CHANGELOG.md

[ ] I have updated the Upcoming Changes section of CHANGELOG.md with context related to this Pull Request.

:rocket: PR was released in<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>:rocket:


ci: Converting bluelotus:beyond to mc-modpack-kit

It would be good if this project used mc-modpack-kit.

[x] Move to packwiz
[ ] Set up mc-modpack-kit
[x] Scream
[ ] Figure out how to write good changelogs

Currently working on it at the develop branch

i cant help


question

can i paste this in to my cheat source so that its done automatically ?
cause im sharing my paste with some mates and adding this would help me alot from giving them files every week

If by "can" you mean if your allowed to:
yes, your allowed to do what ever you want with the code or program. As it's license allows you to (https://github.com/danielkrupinski/VAC-Bypass-Loader/blob/master/LICENSE)
if by "can" you mean will the code work with your cheat:
Mostlikely no, as Vac bypass has to be injected before steam is opened, and your cheat mostlikely has to be injected after csgo.exe is opened. This would confilct with Vac bypass and cause your cheat to not be injected, as well as clasing steam and csgo, and only opening steam up after.
but, I have seen certain cheats that inject before steam is opened, so theoretically it's possible.
(I belive the cheat that does this is "project infinity" https://project-infinity.cloud/, but I'm not 100% possitive)


thoughts on modularity, real re-use, app-wide coordination

Hi Elm community,
This is not an issue, just a discussion I would like to have on building modular, well-defined applications under the elm architecture. I will try to keep it brief, which will require a lot of hand-waving.
The most important pieces of any application architecture I have implemented always seem to turn out the same:

modularity / re-use with good separation of concerns
the ability to clearly and predictably communicate between components
the ability to concisely and predictably coordinate multiple components to perform major context switches / transitions.

These three pieces enormously impact the refactor-ability of the codebase, the velocity of developers in that codebase, and the lifespan/maintainability of the entire application.
Modularity / Re-use
Ideally an entire application is built from the bottom up from small, loosely coupled, reusable components. If these components can be completely unaware of their place in an application, and only serve a small, defined purpose with a minimal api surface, you are on the right track to a highly maintainable and refactor-able code base.
Clear and predictable communication
If each component is modular, you can build up a tree hierarchy of components where communication between depths or leaves or branches happens only across a small interface at defined intersections. No matter the form of communication - be it a flux architecture, a messaging bus, or pub/sub, this "bounded" communication also keeps you on the right track to a highly maintainable and refactor-able code base.
The ability to coordinate context switches
Most apps have major contextual chunks that form concrete or logical boundaries in which to partition your components. Sometimes this is as simple as main navigation tabs, and sometimes it is more nuanced (consider following a deep link to a different part of your application). If your architecture does not offer a way to reliably and conveniently swap between these contexts, you are going to end up with a lot of fragile code that has to be hand-held through state re-hydration, serialization, branching within contexts, and all sorts of other tedious and error-prone bandaids.
Where does elm fit in?
I have been fooling around with the elm architecture for a little bit, and have tried to familiarize myself with its strengths and weaknesses. It seems relatively similar to the redux pattern (immutable, explicit top->bottom action flow, predictability) with perhaps the major difference being that truly reusable components are much simpler.
Modularity
Using Signals and forwardTo, parents provide their reusable children the information necessary to "just work" so that children can be completely unaware of the rest of the application. There are plenty of (mostly) clear examples where this can be extended to allow lists of lists of entirely dynamic reusable components (the "Model with a context" example is still pretty unclear to me).
One issue I bumped into almost immediately using this pattern is a similar but slightly more advanced use case: when a parent does not merely want to forward its child's actions, but is interested in a subset of those actions.
For example, consider a simple chat interface with a MessageBox , a Post, and a Chat component to hold everything together. What I want to be able to do is pipe InputChanged into the MessageBox without needing to know the details, but when MessageSent appears, capture some details about that action inside of the parent. A rough sketch would be something like...
type Action
    = MessageBoxAction MessageBox.Action

update : Action -> Model -> Model
update act model =
    case act of
        MessageBoxAction msg ->
            case msg of
                -- for a particular action, do something before forwarding it on to the child
                MessageBox.Action.MessageSent ->
                    let
                        updatedMessage = MessageBox.update msg model.currentMessage
                        newPost = Post.init msg model.posts
                    in
                        { model |
                            posts = model.posts :: [ newPost ]
                            , currentMessage = updatedMessage
                        }
                -- for any unspecified actions, just forward to the child
                _ ->
                    { model |
                        currentMessage = MessageBox.update nested model.currentMessage
                    }

This won't compile. I can think of a few other ways to achieve the same end, but none of them are a good idea because they either burden the reusable component with unnecessary requirements or end up with circular and difficult-to-trace "on update do another update" patterns.
I feel like if a cleaner general pattern can be reached (and it might be simple and I'm just missing it), then truly reusable components are actually possible in elm.
Communication
This is pretty inherit in elm. Everything is explicit, and the communication lines are well drawn down a component hierarchy. The biggest challenge I believe will be maintaining a small API surface across components. Sometimes the temptation is strong to update on actions that probably aren't any of your component's business. This eventually carves out an application where changing one action name, or removing a single component can break everything in that hierarchy subtree.
            root
        a           b

    c   d         e   f    g

    h   i          j   k   l

"Update H" needs to be piped from a -> c -> h. In a naive implementation, changing the action to "Update h" requires also changing a and c. I think elm avoids this through the use of a generic "On some child action just pipe the message through and update the model".
Context
I have no idea how elm might handle something like this. I believe the excellent work done over at redux-saga handles context switching in one of the most elegant ways I have seen. Because redux, like the elm architecture, is basically an event-sourced architecture, the concept of sagas "just works". When SOME_TRANSITIONING_EVENT arrives, you can utilize the api of components to predictably transition the application step by step.
The problem with sagas, though, is they are by-nature imperative and not functional. It would be great to hear some thoughts on how the elm architecture handles this case.

As you have seen with  MessageBoxAction msg an action can hold a value. Why not make MessageBox.Action.MessageSent hold the send message as a string? But I myself am very new to Elm too, so feel free to submit better solutions.

Hi, i'm trying to build websites with elm.
As far as modularity is concerned, Why not allow simple communications between modules, like subscriptions do?
This would allow one to build apps bottom up.
For instance, i want an input component, and an "accumulator of inputs" component
When enter is hit, the whole input is piped to listening components ...
The Top down approach will have the "supervisor" (Top most component) have to store a lot of information ...
If the hierrachy is deeply nested, then it might get tedious to maintain "sense" in that top most component ...
What you guys think?

Expect more discussion.

Here's the beginning of advice on this kind of stuff: http://guide.elm-lang.org/reuse/
We will have more resources coming in the next few months, but that is the gist. If you are thinking about components, if you are thinking about parents and children and communication, something has already gone wrong.
Also, this community uses forums like elm-discuss and the Elm slack for discussions like this. Issues are for tracking concrete problems and work, not for discussions.


Update blueskyweb.xyz links in README.md to bsky.social

This PR updates the two links in README.md that point to blueskyweb.xyz to the equivalent bsky.social URLs.
Also, I noticed that Line 13 still refers to 'Big Graph Service', should this be updated to 'Relay'?
https://github.com/bluesky-social/indigo/blob/c72ce2340db3cc99fc886c2284daf19e438c7b91/README.md?plain=1#L13

thanks!
yup, probably should be "Relay"


[SPARK-50208][CORE][FOLLOWUP] Rename useDriverIdAsAppId variable to useDriverIdAsAppName

What changes were proposed in this pull request?
This is a follow-up of SPARK-50208 in order to rename a variable useDriverIdAsAppId to useDriverIdAsAppName.

#48740

Why are the changes needed?
To fix a misleading typo.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Pass the CIs.
Was this patch authored or co-authored using generative AI tooling?
No.

cc @viirya

Thank you, @HyukjinKwon and @viirya .

Merged to master.

Thank you!


Why should not deploy pd and tikv on the same node

Question

Why should not deploy pd and tikv on the same node?  bad performance or  other considerations?

Hi!
It's generally not recommended to colocate PD and TiKV because it will lead to poor performance under high load.
PD and TiKV are both quite resource intensive, and introducing more services on a single node will increase thread contention, memory pressure, and disk pressure, resulting in much slower response times.
You can also consider the resilience of the cluster, a cluster with colocated TiKV and PD instances may be more sensitive to failure, creating latency spikes on writes during transient network partitions.


Added precommit-config.yaml

@SiddhantSadangi is that the same as in the neptune-prophet integration?

yup


Don’t block the generation of a build system by build graph generation

We currently load the entire package before generating a SwiftPMBuildSystem. That means that the initialize request to SourceKit-LSP is blocked until the package has been loaded, preventing us from offering any sort of functionality, including syntactic functionality like formatting.
Decouple build system creation and build graph generation (aka. package loading for SwiftPM). We can operate with fallback build settings until the build graph has been loaded and reopen the document once the proper build settings are available.
rdar://126644596

@swift-ci Please test

@swift-ci Please test

@swift-ci Please test

@swift-ci Please test Windows


Remove version: Daum.PotPlayer version 211118

Checklist for Pull Requests

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

Manifests

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

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

Microsoft Reviewers: Open in CodeFlow

URL: https://t1.daumcdn.net/potplayer/PotPlayer/Version/211118/PotPlayerSetup64.exe
Status Code: 200
(Automated message - build 871)


Add unschedualbe to infra

Add a ansible group for infra nodes
Add unschedulable tag infra nodes
Remove swap off due to waalinux issue for now.

Did u do the pr?
Sent from my iPhone

On 31 May 2017, at 4:00 PM, Eduardo Mínguez<EMAIL_ADDRESS>wrote:
@e-minguez commented on this pull request.
In reference-architecture/azure-ansible/node.sh:

@@ -26,9 +26,4 @@ DATA_SIZE=95%VG
EXTRA_DOCKER_STORAGE_OPTIONS="--storage-opt dm.basesize=3G"
EOF

-# Disable swap
-sed -i -e 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
-swapoff -a
I think we need to fix it instead removing it
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Retest

I'm testing it
Let u know
Sent from my iPhone

On 31 May 2017, at 4:00 PM, Eduardo Mínguez<EMAIL_ADDRESS>wrote:
@e-minguez commented on this pull request.
In reference-architecture/azure-ansible/node.sh:

@@ -26,9 +26,4 @@ DATA_SIZE=95%VG
EXTRA_DOCKER_STORAGE_OPTIONS="--storage-opt dm.basesize=3G"
EOF

-# Disable swap
-sed -i -e 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
-swapoff -a
I think we need to fix it instead removing it
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Feat/js/chat

TLDR:
for await (const res of embedbase.generate('hello')) {
    console.log(res)
    // Hello, how, are, you, ?
}

ps: didnt use cross-fetch because of https://github.com/lquixada/cross-fetch/issues/165 - workaround use low level lib

https://edge-runtime.vercel.app/packages/vm interesting for future better tests


Changed Statusbrush to ImageBrush. Updated csproj to copy Icons

The status icons can be modified in the ressources folder.
They will be copied automatically to output build directory.

Why did you decide to make these images actual files in the directory of Toxy instead of just embedded resources? Seems kind of inconvenient to me.

You can edit the icons without compiling. I thought for dev time its could be okay. In my opinion images shouldn't be a part of a dll. The compiletime is bigger and every change of the Images need a build. But i can change this if you want to. =)

I'd prefer having them as embedded resources for the sake of consistency for now. I like what you did to the 'busy indicator' though, the offline and busy indicators looked way too similar ;)

now it would be into binary


PUT and DELETE Routes inconsistent results parsing reg.query

Using Express 4.12.3 and node 0.12.2 and attempting to implement CouchDB using cradle I attempted to use routes that mirror the CouchDB uses of http methods GET -- to read PUT -- to add create etc and DELETE -- to delete
Using a near line for line match with a PUT '/createDB' route and a PUT '/deleteDB' route the  PUT '/createDB' works consistently while THE '/deleteDB' ROUTE FAILS using either  the PUT or DELETE methods.
-----  WEIRD -------  :-()
router.put('/createDB', function(req, res, next) {    // WORKS !!!!
    var db = new (cradle.Connection)().database(req.query.dbName);
    db.create();
    db.exists(function(err,exists){
        if (err) res.send(req.query.dbName + ' not created');
        if (exists) res.send(req.query.dbName + ' created');
    });

});

router.put('/deleteDB', function(reg, res, next){      // FAILS
    var db = new (cradle.Connection)().database(req.query.dbName);
    db.exists(function(err,exists) {
        if (err) res.send(req.query.dbName + ' does not exist');
        if (exists) {
            db.destroy();
            res.send(req.query.dbName + ' destroyed');
        }
    });
});  //  Notice that the syntax is essentially identical to the /createDB route above ???

router.delete('/deleteDB', function(reg, res, next){   // FAILS
    var db = new (cradle.Connection)().database(req.query.dbName);
    db.exists(function(err,exists) {
        if (err) res.send(req.query.dbName + ' does not exist');
        if (exists) {
            db.destroy();
            res.send(req.query.dbName + ' destroyed');
        }
    });

There is nothing wrong with the routes, the failure is on the parse
The stack trace
<!DOCTYPE html><title></title><link rel="stylesheet" href="/stylesheets/style.css">
req is not defined

ReferenceError: req is not defined
    at c:\Users\cloidjgreen\WebstormProjects\MGScheduler\routes\db.js:43:49
    at Layer.handle [as handle_request] (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\layer.js:82:5)
    at next (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\route.js:110:13)
    at Route.dispatch (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\route.js:91:3)
    at Layer.handle [as handle_request] (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\layer.js:82:5)
    at c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\index.js:267:22
    at Function.proto.process_params (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\index.js:321:12)
    at next (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\index.js:261:10)
    at Function.proto.handle (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\index.js:166:3)
    at router (c:\Users\cloidjgreen\WebstormProjects\MGScheduler\node_modules\express\lib\router\index.js:35:12)

Just using GET to deliver the route and param works fine.
Not a desirable workaround.  I have debugged deeply into the stack and do not find the failure point.
The request seems intact deep into the code

You have typos... Your function argument is reg instead of req, thus why you would get ReferenceError: req is not defined errors.


Add health check to drone-workers

This PR adds health check to test can drone-workers be reached (is there any point to send build job).
This is useful in distributed setup when drone-master / drone-workers  are on different host.  If drone-workeris terminated / removed from auto scaling group due to low CPU load you dont need to notifydrone-masterdirectly (with drone-cli / drone rest api) becausedrone-masterwill removedrone-worker` from node list after three connection retries.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Oskars.Gavrisevs seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.

@ogavrisevs we are in the process of changing the approach to an agent-based pull queue that would obsolete this pull request https://github.com/drone/drone/issues/1386
I really appreciate the pull request, however, this isn't something we would be able to merge since we are taking things in a different direction. I recommend using the gitter in the future to discuss changes prior to implementation so we can all get on the same page. Cheers!


has-part "electron"

https://ui.transltr.io/main/results?l=Diabetes Mellitus&i=MONDO:0005015&t=0&q=f2175bb7-43aa-4ed0-9c8f-574cbca1856e
Returns a bunch of subpaths like:

But electrons has an information content of 16 or so:
https://nodenormalization-sri.renci.org/1.4/get_normalized_nodes?curie=MESH%3AD004583&conflate=true&drug_chemical_conflate=false&description=false
So this should be filtered out.

@maximusunc is this because the IC filtering didn't make it up to prod?  Or some other reason?

The IC filtering has been in prod for a while. But I looked into this this morning and found another major bug where we're actually filtering out the pinned node in this query. I'm working on a fix.

Yeah, I suspect that's https://github.com/ranking-agent/aragorn/issues/223 ?   It might also be related to the issue that Abrar has been working on with subclasses?

Yes, I think they might all be somewhat related, at least by the filter function.


Icon does not become bright when receiving a notification

Rocket.Chat Version: 0.52
Running Instances: 1
Client OS: Tested and replicated on Windows 7, Windows 10, Arch Linux
When I receive a private message (or a mention) that triggers a notification, I would expect the RocketChat icon to glow until I give focus to Rocket Chat.
This seems to be a regression since it worked in prior versions. (see https://github.com/RocketChat/Rocket.Chat/issues/3667)

Please, let me know if this is still an issue.

Same here.
Mac os 2.15.1
Win 2.15.0
Log out -> Delete server -> Add it again previously fixed the issue, but not right now.

this is still an issue in 20 clients that use my server. they use several versions including 2.15.3


slideToClickedSlide not working when simulateTouch set to false

Fromt this issue: https://github.com/nolimits4web/Swiper/issues/1281
Demo: http://jsfiddle.net/zfegpfjx/8/

Sorry, but it is a touch-first slider and when you disable this option most of mouse events will not work. If you need it, enable back this option, or make it manually:
$('.swiper-slide').on('click', function (){
  mySwiper.swipeTo($(this).index())
});


Conditional Timeouts

Hey, since #110 was just closed, I added conditional timeouts to Slowpoke. You can set the service timeout with:
config.slowpoke.timeout = lambda do |env|
  request = Rack::Request.new(env)
  request.path.start_with?("/admin") ? 15 : 5
end

Noted. I see you're making a new middleware object for each timeout value, which certainly isn't ideal. But, at least there's a footgun available to footgunners. :joy:


Unbreak 1192 and another execution summary bugfix

Motivated by #1192

@daveFNbuck feel free to review. Also ping @nicolehedblom.

Looks good to me, but I'm not familiar with the execution_summary stuff yet.


Tintconverter

Add tint_conversion folder and TintConverter class to convert recording and sorting extractor objects (from spikeextractors) to the TINT format (.X for tetrode files with waveforms, .cut and .clu for unit labels for each spike).
Also includes tutorial notebooks for running spike sorting with spikeinterface and exporting to nwb for both intan and axona data.
Current issues:

Converting intan spike sorting output to TINT format is currently only supported for axona data.
intan data used for testing was suboptimally short. Would need data from Hussaini lab to assess whether it's working as intended.

Can you solve the conflicts and merge then?


clsx example does not behave correctly

great resource! thanks for providing this. running into an issue with the clsx example:
given this config:
"tailwindCSS.experimental.classRegex": ["clsx\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"]
intellisense only works outside of a string:
i.e. this works, but is not useful:

whereas this should work, but does not:

using tailwind 3.2.7

Thanks for this! I'll look into it then get back to you.

Oh I think I see whats wrong. the config should be enclosed with an array. Something like this:
"tailwindCSS.experimental.classRegex": [
["clsx\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"]
]

I do think that the examples don't make that clear enough. I will fix this. Thanks for bringing it up 😄

My bad! I see the problem in the regex.
This should work:
"tailwindCSS.experimental.classRegex": [
    ["clsx\\(([^)]*)\\)", "(?:'|\"|`)([^\"'`]*)(?:'|\"|`)"]
 ]

The original snippet only worked for when using single quotes. This change should fix it. Let me know if theres still something wrong,

This seems to work well! Thanks a lot @paolotiu

Great to hear that 😄


Fix bad CLA_ACCESS_TOKEN reference

Changes

Changes PERSONAL_ACCESS_TOKEN to CLA_ACCESS_TOKEN in the CLA Assistant Github Action.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>4
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 99.503%

Totals

Change from base Build<PHONE_NUMBER>3:
0.0%

Covered Lines:
1202

Relevant Lines:
1208

💛  - Coveralls


SSL Support

Is it possible to use SSL with this input plugin?  The example only does barebones without SSL.

Currently the plugin does not support SSL. Will update soon.

Added SSL support. Get the latest release from here and let me know if it works.
Updated readme with steps to enable SSL.

HI.  I tried using the new plugin you provided in your last post.  I couldn't get it to work.  I used the flags that you provided.  I used VisualVM to try to connect to from my local machine and it initially didn't work.  After adding the VisualVM-Security plugin and adding the trust store, it connected to the remote server.

Please let me know if there are any exceptions in graylog server log. Also send me the command line params you are passing to the Java application, to enable remote JMX monitoring.

I checked the server.log file mentioned in the log4j2.xml file in /etc/graylog/server.  Nothing out of the ordinary shows up.
2016-09-12T14:51:26.507-04:00 INFO  [InputStateListener] Input [JMX/57d1c31b57aae11b0107e99d] is now RUNNING
2016-09-12T15:09:32.617-04:00 INFO  [InputStateListener] Input [JMX/57d1c31b57aae11b0107e99d] is now STOPPING
2016-09-12T15:09:32.617-04:00 INFO  [InputStateListener] Input [JMX/57d1c31b57aae11b0107e99d] is now STOPPED
2016-09-12T15:09:32.618-04:00 INFO  [InputStateListener] Input [JMX/57d1c31b57aae11b0107e99d] is now TERMINATED
2016-09-12T15:09:32.620-04:00 INFO  [InputStateListener] Input [JMX/57d1c31b57aae11b0107e99d] is now STARTING
2016-09-12T15:09:32.621-04:00 INFO  [JMXTransport] JMX Input Plugin started ...
2016-09-12T15:09:32.622-04:00 INFO  [InputStateListener] Input [JMX/57d1c31b57aae11b0107e99d] is now RUNNING

I have the following added to my setenv.sh in my Tomcat.
export CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.trustStore=$CATALINA_BASE/certs/keystore.jks -Djavax.net.ssl.trustStorePassword=PASSWORD"
export CATALINA_OPTS="$CATALINA_OPTS -Djavax.net.ssl.keyStore=$CATALINA_BASE/certs/keystore.jks -Djavax.net.ssl.keyStorePassword=PASSWORD"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.ssl=true -Djava.rmi.server.hostname=<IP_ADDRESS> -Dcom.sun.management.jmxremote.ssl.need.client.auth=false"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.registry.ssl=true"

I set the polling interval to 5 seconds because I got impatient.  Nothing still gets printed in the log file.

@SwagMuffinMcYoloPants I assume you removed old plugin jar (1.0.1) from plugins dir of graylog ( please check if there are multiple jmx plugins jars. The new jar version is 1.0.2).  Can you downloading plugin jar present in attached zip file ( I have added more logger statements) and let know the contents of logs file?
graylog-plugin-input-jmx-1.0.2-SNAPSHOT.jar.zip

The logs printed out an error with the new jar you gave.  It printed the following:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[?:1.8.0_101]
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[?:1.8.0_101]
        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[?:1.8.0_101]
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) ~[?:1.8.0_101]
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[?:1.8.0_101]
        at sun.security.validator.Validator.validate(Validator.java:260) ~[?:1.8.0_101]
        at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[?:1.8.0_101]
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) ~[?:1.8.0_101]
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[?:1.8.0_101]
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) ~[?:1.8.0_101]
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[?:1.8.0_101]
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[?:1.8.0_101]
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) ~[?:1.8.0_101]
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) ~[?:1.8.0_101]
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) ~[?:1.8.0_101]
        at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:747) ~[?:1.8.0_101]
        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123) ~[?:1.8.0_101]
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) ~[?:1.8.0_101]
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) ~[?:1.8.0_101]
        at java.io.DataOutputStream.flush(DataOutputStream.java:123) ~[?:1.8.0_101]
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:229) ~[?:1.8.0_101]
        ... 20 more

I ended up adding my specific certificate into the Java cacerts trust store and everything worked.  The problem was on my side.  Thank you for your time.


Changing features disables kerning for the same font file

Description
If a font has kerning between glyphs accessed through features, the kerning is not applied if the glyphs are separated by a feature change.
In the MWE the superscript ⁰ (U+2070) has kerning that can be removed, making the f and ⁰ touch, which is what always happens with the sups figure 0.
Check/indicate

[x] Relevant for XeTeX
[x] Relevant for LuaTeX
[x] Issue tracker has been searched for similar issues?
[ ] Links to <tex.stackexchange.com> discussion if appropriate

Minimal example demonstrating the issue
\documentclass{article}
\usepackage{fontspec}
\setmainfont{SourceSerifPro-Regular.otf}
% \setfontfamily\garamond{EBGaramond12-Regular.otf}

\begin{document}

f⁰
{\addfontfeature{Kerning=Off}f⁰}
f{\addfontfeature{VerticalPosition=Superior}0}

% \garamond
% {\addfontfeature{Letters=SmallCaps}Th}
% T{\addfontfeature{Letters=SmallCaps}h}

\end{document}

Further details
The workaround to somehow apply the feature before the kerning pair is not always feasible (e.g. changing the footnote style), that in ture wouldn't even work with Source Serif as its sups feature also raises alphabet glyphs.
sups 0 and ⁰ use the same glyph zero.sups, as seen in FontForge metrics for /f/zero/f/zero.sups/f/uni2070. The same issue can be seen in EB Garamond 12 with smcp Th.

Thanks for writing.
Unfortunately there is almost nothing that fontspec can do about this — loading the font with a different feature makes it a different font, and kerning between fonts is not possible.
The only approach I can think of in fontspec to assist would be some helper macros like the following, where X and Y are fontspec features and A and B are text to typeset, and K is inserted between them:
\affinstance{X}{A}{Y}{B} % for use in the document

\affsetup{pattern X}{pattern A}{\K}{pattern Y}{pattern B} % in the preamble

where \affinstance typesets
{\addfontfeature{X} A}\K{\addfontfeature{Y} B}

And regexp could be used for retrieving the appropriate "insert" \K. E.g., in your example we might define in the preamble
\addsetup{}{.*}{\kern-0.1pt}{VerticalPosition=Superior}{.*}

and then in the document you would have to write
\affinstance{}{f}{VerticalPosition=Superior}{0}

resulting in
{f}\kern-0.1pt{\addfontfeature{VerticalPosition=Superior}0}

Does this look like it could be of any help?
If I do anything like this, it won't be in the short term, but I'll leave this open here for further discussion.

I can't think of many other cases (let alone any common ones) where feature changes would need kerning (maybe character variants in some calligraphic font, or ital feature).
For my specific problem however, a workaround in LuaTeX would be to replace the glyphs by replacing the characters instead of the features. One hack is more than enough; this seems like it should be fixed in the kernel anyway, unless that would break some compatibility?
\documentclass{article}
\usepackage{luacode}
\usepackage{fontspec}
\setmainfont{SourceSerifPro-Regular.otf}

\begin{luacode*}
        function luasuperhack ( s )
                s = unicode.utf8.gsub ( s, "0", "⁰" )
                s = unicode.utf8.gsub ( s, "1", "¹" )
                s = unicode.utf8.gsub ( s, "2", "²" )
                s = unicode.utf8.gsub ( s, "3", "³" )
                s = unicode.utf8.gsub ( s, "4", "⁴" )
                s = unicode.utf8.gsub ( s, "5", "⁵" )
                s = unicode.utf8.gsub ( s, "6", "⁶" )
                s = unicode.utf8.gsub ( s, "7", "⁷" )
                s = unicode.utf8.gsub ( s, "8", "⁸" )
                s = unicode.utf8.gsub ( s, "9", "⁹" )
                tex.sprint ( s )
        end
\end{luacode*}
\newcommand{\superhack}[1]{\directlua{luasuperhack(\luastring{#1})}}

\makeatletter
\renewcommand*{\@footnotemark}{\superhack{\@thefnmark}}
\makeatother

\begin{document}

f⁰
f\superhack{0}
f\footnote[0]{test}

\end{document}

That’s a good approach here. If further flexibility is needed, it’s not out of the question that you could construct your own “virtual font” in LuaTeX. (Although I don’t have code lying around to show how to do that.)

It is possible for harf to allow changing font features without switching fonts, but I’m not clear what the interface would look like. I believe that should be doable for luaotafload as well.
I imagine something like attributes can be used for this, but attributes are numbers only. There is also properties which are more general, but I can’t see a way to set them from TeX side.

I think one can define a new font feature to switch to the superscripts without changing the font. In the example I used ! as a trigger, but some other char should work too. I'm in no way sure if the lookup rules are really correct - there is no documentation available, I had only a few context examples and so it is more or less guess and try.  I only add code for 0-4, the rest of the digits are missing.
\documentclass{article}
\usepackage{fontspec}
\directlua{
 fonts.handlers.otf.addfeature {
        name    = "numsups",
        type    = "chainsubstitution",
        lookups = {
            {
             type = "ligature",
              data = {
                    ['zero.sups'] = { "!", "0" },
                    ['one.sups']  = { "!", "1" },
                    ['two.sups']  = { "!", "2" },
                    ['three.sups']= { "!", "3" },
                    ['four.sups'] = { "!", "4" },
                },
            },
            {
             type = "substitution",
              data = {
                    ["zero"]   = "zero.sups",
                    ["one"]    = "one.sups",
                    ["two"]    = "two.sups",
                    ["three"]  = "three.sups",
                    ["four"]   = "four.sups",
                },
            },
        },
        data =
          {
            rules =
             {
                {
                    before  = { {"!","zero.sups","one.sups","two.sups","three.sups","four.sups" } },
                    current = {  { "0", "1", "2", "3", "4" } },
                    lookups = { 2 },
                },
                {
                    current = { {"!"} },
                    lookups = { 1 },
                },
             }
          }
        }
     }

\setmainfont{SourceSerifPro-Regular.otf}[RawFeature=+numsups;]

\begin{document}
f⁰ !11234 123456

f!2134 f!01234 f!43222 01234

f{\addfontfeature{VerticalPosition=Superior}01234}
\end{document}

Ideally we would need a more general solution than this, for example of one wants to enable a cvXX feature for just one character in the text string without breaking other features.

I ran into this issue recently when using an all caps font which makes extensive use of swashes. The swashes are encoded in the "swsh", and the "cv01...cv04" features. They are typically used only in word-initial or word-final position. So I apply the feature only to the first or last letter and not to the whole word, otherwise other letters of the word turn into swashes as well which is not desired. But this breaks kerning.
For reference, my original question on stackexchange: https://tex.stackexchange.com/questions/576819/why-is-kerning-not-applied-when-mixing-opentype-character-variants-swashes-wit

I ran into this issue recently when using an all caps font which makes extensive use of swashes. The swashes are encoded in the "swsh", and the "cv01...cv04" features. They are typically used only in word-initial or word-final position. So I apply the feature only to the first or last letter and not to the whole word, otherwise other letters of the word turn into swashes as well which is not desired. But this breaks kerning.
For reference, my original question on stackexchange: https://tex.stackexchange.com/questions/576819/why-is-kerning-not-applied-when-mixing-opentype-character-variants-swashes-wit

@lvcivs As said in the issue here and on tex.sx there is not much fontspec can do. Better open a feature request for the font. As it is an all caps font, it could e.g. add the swashes only to the uppercase letters, then you could input Barry.

@lvcivs As said in the issue here and on tex.sx there is not much fontspec can do. Better open a feature request for the font. As it is an all caps font, it could e.g. add the swashes only to the uppercase letters, then you could input Barry.


Revert "Add long-term loan flag to Loans"

Reverts SpeciesFileGroup/taxonworks#3747

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (90ebff0) 80.61% compared to head (b803830) 59.78%.

:exclamation: Current head b803830 differs from pull request most recent head a95f736. Consider uploading reports for the commit a95f736 to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@               Coverage Diff                @@
##           development    #3749       +/-   ##
================================================
- Coverage        80.61%   59.78%   -20.83%
================================================
  Files             1891     1535      -356
  Lines            68262    46803    -21459
================================================
- Hits             55026    27979    -27047
- Misses           13236    18824     +5588

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


I cannot set cookie with domain localhost

I use with a self-site certificate and Nginx.

Hey @lagmanzaza, I am pretty sure the browser blocks cookies on localhost.  Either way I would  recommended you setup a domain other than localhost for your testing if you require cookies.  The way I usually do this is to add an entry to my /etc/hosts file and then use this in my local nginx config as the hostname.  Good luck.

I will try it. Thank you, sir


[FEAT] Added a  back to Top  button

Problem :
The absence of a back-to-top button on the website significantly impairs its user-friendliness and navigational convenience, posing a notable problem in terms of user experience
Actual Behavior
The Back to top button is not present
Expected Behavior
There should be a back to top button
Steps to Reproduce (if applicable)

Step1 : Open the website
Step 2 : Scroll to the bottom of the page

Screenshots (if applicable)
Actual:
(screenshot)

Expected (highlight the part that requires changes):
(screenshot)

##Video
https://github.com/itsmohit097/medi-hub/assets/90449806/8abb5ce4-51d6-43cb-a2a8-1959178d77de

Under GSSOC 24, Please assign the work to me!

@Arghyadeep09 assigned to you.
Kindly read the contribution.md file , if not followed properly PR will not be merged.
Do the fork and switch branch process correctly.

when i am trying to push it is saying permission denied why?

@itsmohit097 Why this message is showing when i am trying to push?


Rename scene.reset() to scene.clear()

Closes #469

Closing this and the issue then? (Issue is not from me)

We decided at office hours 2024-02-29 that we will not go ahead with this rename. Thank you for your effort anyway!


Bug in tensorrt_llm_bls

I think there is a bug here in the implementation of bls backend.
The return is inside the for loop, so the backend only handle 1 request per execution and ignore the rest.
    def execute(self, requests):

        responses = []

        for request in requests:
            if self.decoupled:
                response_sender = request.get_response_sender()
            try:

                req = self.decoder.convert_triton_request(request)
                req.validate()
                speculative_decode = (req.num_draft_tokens is not None
                                      and req.num_draft_tokens[0][0] > 0)
                if speculative_decode and (self.draft_llm_model_name is None
                                           or self.draft_llm_model_name == ""):
                    raise Exception(
                        "cannot perform speculative decoding without draft model"
                    )
                res_gen = self.decoder.decode(
                    req, speculative_decoding=speculative_decode)

                for res in res_gen:
                    triton_response = self.decoder.create_triton_response(res)
                    if self.decoupled:
                        response_sender.send(triton_response)
                    else:
                        responses.append(triton_response)

                if self.decoupled:
                    response_sender.send(
                        flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL)

            except Exception:
                self.logger.log_error(traceback.format_exc())
                # If encountering an error, send a response with err msg
                error_response = pb_utils.InferenceResponse(
                    output_tensors=[],
                    error=pb_utils.TritonError(traceback.format_exc()))

                if self.decoupled:
                    response_sender.send(error_response)
                    response_sender.send(
                        flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL)
                else:
                    responses.append(error_response)

            self.decoder.reset_decoder()
            if self.decoupled:
                return None
            else:
                assert len(responses) == len(requests)
                return responses

Also the for loop means that the following requests must wait till the prior ones finished to be processed, which is really not efficient at all.
Please have a look!

@binhtranmcs You can set ${bls_instance_count} to max_batch_size, requests should be able to be processed in parallel.
bls_instance_count

@activezhao Considering the link you provided with the deployment of a TensorRT-LLM model, do we need to modify the count field of the instance_group block also for preprocessing, tensorrt_llm and postprocessing models? If not, can you explain why?
Another question related to instance_group: should we keep the KIND_CPU value for the kind field of preprocessing, tensorrt_llm, tensorrt_llm_bls and postprocessing? If we deploy a TensorRT-LLM engine it makes sense to me to change KIND_CPU to KIND_GPU in tensorrt_llm config.pbtxt file, but I am not really sure how to proceed.
Thanks in advance for your time.


Training become slower

Hi,
When I trained MTR with 20% Waymo data on 8 RTX4090, the estimated training time gradually increased from ~6 hours to ~23 hours. The outputs from logs are shown below. Any idea about the problem?  Thanks!
2024-01-13 20:29:41,786   INFO  epoch: 0/30, acc_iter=1, cur_iter=0/1218, batch_size=10, iter_cost=14.13s, time_cost(epoch): 00:14/4:46:46, time_cost(all): 00:25/143:23:11, ade_TYPE_VEHICLE_layer_5=16.475, ade_TYPE_PEDESTRIAN_layer_5=3.344, ade_TYPE_CYCLIST_layer_5=10.283, loss=67801.148, lr=0.0001
2024-01-13 20:30:09,304   INFO  epoch: 0/30, acc_iter=50, cur_iter=49/1218, batch_size=10, iter_cost=0.83s, time_cost(epoch): 00:41/16:13, time_cost(all): 00:53/8:26:33, ade_TYPE_VEHICLE_layer_5=16.648, ade_TYPE_PEDESTRIAN_layer_5=2.845, ade_TYPE_CYCLIST_layer_5=8.868, loss=3624.866, lr=0.0001
2024-01-13 20:30:37,870   INFO  epoch: 0/30, acc_iter=100, cur_iter=99/1218, batch_size=10, iter_cost=0.70s, time_cost(epoch): 01:10/13:05, time_cost(all): 01:21/7:06:25, ade_TYPE_VEHICLE_layer_5=20.148, ade_TYPE_PEDESTRIAN_layer_5=2.516, ade_TYPE_CYCLIST_layer_5=-0.000, loss=1319.947, lr=0.0001
2024-01-13 20:31:05,643   INFO  epoch: 0/30, acc_iter=150, cur_iter=149/1218, batch_size=10, iter_cost=0.65s, time_cost(epoch): 01:37/11:38, time_cost(all): 01:49/6:36:11, ade_TYPE_VEHICLE_layer_5=11.571, ade_TYPE_PEDESTRIAN_layer_5=1.302, ade_TYPE_CYCLIST_layer_5=3.274, loss=1064.818, lr=0.0001
2024-01-13 20:31:33,584   INFO  epoch: 0/30, acc_iter=200, cur_iter=199/1218, batch_size=10, iter_cost=0.63s, time_cost(epoch): 02:05/10:41, time_cost(all): 02:17/6:21:21, ade_TYPE_VEHICLE_layer_5=12.051, ade_TYPE_PEDESTRIAN_layer_5=1.196, ade_TYPE_CYCLIST_layer_5=-0.000, loss=896.819, lr=0.0001
2024-01-13 20:32:01,143   INFO  epoch: 0/30, acc_iter=250, cur_iter=249/1218, batch_size=10, iter_cost=0.61s, time_cost(epoch): 02:33/09:54, time_cost(all): 02:44/6:11:20, ade_TYPE_VEHICLE_layer_5=13.017, ade_TYPE_PEDESTRIAN_layer_5=1.770, ade_TYPE_CYCLIST_layer_5=3.670, loss=769.815, lr=0.0001
2024-01-13 20:34:44,646   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 20:35:02,177   INFO  epoch: 0/30, acc_iter=300, cur_iter=299/1218, batch_size=10, iter_cost=1.12s, time_cost(epoch): 05:34/17:04, time_cost(all): 05:45/11:13:30, ade_TYPE_VEHICLE_layer_5=20.119, ade_TYPE_PEDESTRIAN_layer_5=1.318, ade_TYPE_CYCLIST_layer_5=7.704, loss=980.100, lr=0.0001
2024-01-13 20:36:56,445   INFO  epoch: 0/30, acc_iter=350, cur_iter=349/1218, batch_size=10, iter_cost=1.28s, time_cost(epoch): 07:28/18:34, time_cost(all): 07:40/12:53:25, ade_TYPE_VEHICLE_layer_5=13.891, ade_TYPE_PEDESTRIAN_layer_5=1.182, ade_TYPE_CYCLIST_layer_5=-0.000, loss=764.403, lr=0.0001
2024-01-13 20:40:12,034   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 20:40:12,624   INFO  epoch: 0/30, acc_iter=400, cur_iter=399/1218, batch_size=10, iter_cost=1.61s, time_cost(epoch): 10:44/22:00, time_cost(all): 10:56/16:11:14, ade_TYPE_VEHICLE_layer_5=11.558, ade_TYPE_PEDESTRIAN_layer_5=1.168, ade_TYPE_CYCLIST_layer_5=8.246, loss=723.942, lr=0.0001
2024-01-13 20:42:28,241   INFO  epoch: 0/30, acc_iter=450, cur_iter=449/1218, batch_size=10, iter_cost=1.73s, time_cost(epoch): 13:00/22:13, time_cost(all): 13:11/17:23:24, ade_TYPE_VEHICLE_layer_5=13.028, ade_TYPE_PEDESTRIAN_layer_5=0.897, ade_TYPE_CYCLIST_layer_5=1.655, loss=654.211, lr=0.0001
2024-01-13 20:45:09,249   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 20:45:17,802   INFO  epoch: 0/30, acc_iter=500, cur_iter=499/1218, batch_size=10, iter_cost=1.90s, time_cost(epoch): 15:50/22:46, time_cost(all): 16:01/19:01:28, ade_TYPE_VEHICLE_layer_5=12.500, ade_TYPE_PEDESTRIAN_layer_5=1.334, ade_TYPE_CYCLIST_layer_5=8.013, loss=635.699, lr=0.0001
2024-01-13 20:48:13,740   INFO  epoch: 0/30, acc_iter=550, cur_iter=549/1218, batch_size=10, iter_cost=2.05s, time_cost(epoch): 18:46/22:49, time_cost(all): 18:57/20:28:08, ade_TYPE_VEHICLE_layer_5=11.864, ade_TYPE_PEDESTRIAN_layer_5=0.763, ade_TYPE_CYCLIST_layer_5=6.737, loss=609.126, lr=0.0001
2024-01-13 20:50:12,644   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 20:50:28,692   INFO  epoch: 0/30, acc_iter=600, cur_iter=599/1218, batch_size=10, iter_cost=2.10s, time_cost(epoch): 21:01/21:40, time_cost(all): 21:12/20:58:57, ade_TYPE_VEHICLE_layer_5=8.360, ade_TYPE_PEDESTRIAN_layer_5=0.767, ade_TYPE_CYCLIST_layer_5=3.163, loss=469.968, lr=0.0001
2024-01-13 20:53:57,198   INFO  epoch: 0/30, acc_iter=650, cur_iter=649/1218, batch_size=10, iter_cost=2.26s, time_cost(epoch): 24:29/21:26, time_cost(all): 24:40/22:32:23, ade_TYPE_VEHICLE_layer_5=9.355, ade_TYPE_PEDESTRIAN_layer_5=0.774, ade_TYPE_CYCLIST_layer_5=-0.000, loss=610.168, lr=0.0001
2024-01-13 20:54:53,206   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 20:56:39,561   INFO  epoch: 0/30, acc_iter=700, cur_iter=699/1218, batch_size=10, iter_cost=2.33s, time_cost(epoch): 27:11/20:09, time_cost(all): 27:23/23:12:35, ade_TYPE_VEHICLE_layer_5=11.248, ade_TYPE_PEDESTRIAN_layer_5=0.852, ade_TYPE_CYCLIST_layer_5=4.962, loss=430.743, lr=0.0001
2024-01-13 20:58:45,682   INFO  epoch: 0/30, acc_iter=750, cur_iter=749/1218, batch_size=10, iter_cost=2.34s, time_cost(epoch): 29:18/18:19, time_cost(all): 29:29/23:18:15, ade_TYPE_VEHICLE_layer_5=6.773, ade_TYPE_PEDESTRIAN_layer_5=0.567, ade_TYPE_CYCLIST_layer_5=6.999, loss=384.074, lr=0.0001
2024-01-13 21:00:07,164   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 21:00:24,382   INFO  epoch: 0/30, acc_iter=800, cur_iter=799/1218, batch_size=10, iter_cost=2.32s, time_cost(epoch): 30:56/16:12, time_cost(all): 31:08/23:02:31, ade_TYPE_VEHICLE_layer_5=9.502, ade_TYPE_PEDESTRIAN_layer_5=0.770, ade_TYPE_CYCLIST_layer_5=0.886, loss=555.664, lr=0.0001
2024-01-13 21:02:19,946   INFO  epoch: 0/30, acc_iter=850, cur_iter=849/1218, batch_size=10, iter_cost=2.32s, time_cost(epoch): 32:52/14:16, time_cost(all): 33:03/23:00:15, ade_TYPE_VEHICLE_layer_5=6.325, ade_TYPE_PEDESTRIAN_layer_5=0.464, ade_TYPE_CYCLIST_layer_5=-0.000, loss=489.205, lr=0.0001
2024-01-13 21:03:55,158   INFO  epoch: 0/30, acc_iter=900, cur_iter=899/1218, batch_size=10, iter_cost=2.30s, time_cost(epoch): 34:27/12:12, time_cost(all): 34:38/22:44:35, ade_TYPE_VEHICLE_layer_5=6.792, ade_TYPE_PEDESTRIAN_layer_5=0.345, ade_TYPE_CYCLIST_layer_5=2.614, loss=502.375, lr=0.0001
2024-01-13 21:05:36,883   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 21:05:58,604   INFO  epoch: 0/30, acc_iter=950, cur_iter=949/1218, batch_size=10, iter_cost=2.31s, time_cost(epoch): 36:30/10:20, time_cost(all): 36:42/22:48:02, ade_TYPE_VEHICLE_layer_5=9.518, ade_TYPE_PEDESTRIAN_layer_5=1.167, ade_TYPE_CYCLIST_layer_5=4.977, loss=575.544, lr=0.0001
2024-01-13 21:08:21,160   INFO  epoch: 0/30, acc_iter=1000, cur_iter=999/1218, batch_size=10, iter_cost=2.33s, time_cost(epoch): 38:53/08:31, time_cost(all): 39:04/23:02:14, ade_TYPE_VEHICLE_layer_5=6.204, ade_TYPE_PEDESTRIAN_layer_5=0.280, ade_TYPE_CYCLIST_layer_5=2.212, loss=407.410, lr=0.0001
2024-01-13 21:10:18,694   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 21:10:31,690   INFO  epoch: 0/30, acc_iter=1050, cur_iter=1049/1218, batch_size=10, iter_cost=2.35s, time_cost(epoch): 41:04/06:36, time_cost(all): 41:15/23:08:06, ade_TYPE_VEHICLE_layer_5=7.311, ade_TYPE_PEDESTRIAN_layer_5=0.306, ade_TYPE_CYCLIST_layer_5=-0.000, loss=578.605, lr=0.0001
2024-01-13 21:13:06,837   INFO  epoch: 0/30, acc_iter=1100, cur_iter=1099/1218, batch_size=10, iter_cost=2.38s, time_cost(epoch): 43:39/04:43, time_cost(all): 43:50/23:26:27, ade_TYPE_VEHICLE_layer_5=9.303, ade_TYPE_PEDESTRIAN_layer_5=0.281, ade_TYPE_CYCLIST_layer_5=4.509, loss=444.431, lr=0.0001
2024-01-13 21:14:56,918   INFO  Save latest model to /home/swc/Disk/Code/MTR/output/waymo/mtr+20_percent_data/my_first_exp/ckpt/latest_model
2024-01-13 21:15:07,665   INFO  epoch: 0/30, acc_iter=1150, cur_iter=1149/1218, batch_size=10, iter_cost=2.38s, time_cost(epoch): 45:40/02:44, time_cost(all): 45:51/23:25:23, ade_TYPE_VEHICLE_layer_5=2.822, ade_TYPE_PEDESTRIAN_layer_5=0.356, ade_TYPE_CYCLIST_layer_5=4.349, loss=283.361, lr=0.0001
2024-01-13 21:16:56,916   INFO  epoch: 0/30, acc_iter=1200, cur_iter=1199/1218, batch_size=10, iter_cost=2.37s, time_cost(epoch): 47:29/00:45, time_cost(all): 47:40/23:18:32, ade_TYPE_VEHICLE_layer_5=4.185, ade_TYPE_PEDESTRIAN_layer_5=0.564, ade_TYPE_CYCLIST_layer_5=2.659, loss=252.469, lr=0.0001
2024-01-13 21:17:06,637   INFO  epoch: 0/30, acc_iter=1218, cur_iter=1217/1218, batch_size=5, iter_cost=2.35s, time_cost(epoch): 47:38/00:02, time_cost(all): 47:50/23:01:52, ade_TYPE_VEHICLE_layer_5=7.351, ade_TYPE_PEDESTRIAN_layer_5=0.358, ade_TYPE_CYCLIST_layer_5=5.175, loss=555.010, lr=0.0001

I found that reducing batch size per GPU from 10 to 8 will accelerate training to ~7 hours.


[discussion] Disable/pause automatic scroll down

A usecase: a long-running build process that prints occasionally noteworthy things to terminal. I scroll up and want to read them or copy them. However when new output from build appears on screen, the terminal automatically scrolls down (even if I'm still dragging scrollbar by mouse).
In this usecase we would like to disable automatic scroll down and let the user inspect the previous output. Some options to support this usecase: disable this altogether (the user should scroll down themselves to resume auto-scroll-down); provide some keyboard/UI shortcut to enable this.
I think Gnome Terminal doesn't do this, but I don't remember for sure.

Thanks! So, there’s a couple issues at play here.
We recently (1.2) implemented scroll locking when you are scrolled up or have an active selection. That part is automatic and unconfigurable. Scrolling will snap back when you press ~Print Screen~ a key that sends input (😉).
We had (fixed in #7247) a bug where we would let the buffer roll underneath the locked scroll region. The fix is about to come out with 1.2.2381.0.
We also have a critical lack of support for infinite scrollback, so you have between 9001 and 32k lines, depending on how you configured Terminal, to print out before the locked scroll region will age out. I can’t pull that issue up in quicksearch on my phone.
With those two things noted, do we need further discussion? 😄

No, I think we're good :) It would be fantastic to have this scenario to added on your functional testing usecase list or something like that :)

Oh don't worry, we've already got the test covered.
Thanks for following up!


Accuracy: exactly + accrossElements: true doesn't work with  delimited text

Hi,
Mark.js doesn't highlight words which ends with
 tag:
For example,
Some one
Some two
.
"Some one" will not be found, when options contains both of accuracy: exactly and accrossElements: true.
As I understood,
when you're looking accross elements, you concatenate text nodes of dom element tree, and than try to match accuracy exactly regexp /(^|\s)({{ word }})(?=$|\s)/gim.
So previous example will search matches in string "Some oneSome two" and will not match.
Steps to reproduce
JSFiddle: https://jsfiddle.net/bw7ghxd0/2/
Thanx.

Hi @siarheiskalaban,
Thanks for submitting.
I've created a simpler example of this situation: https://jsfiddle.net/3gjsf3hq/
I agree that it is expected that "Some one" is beeing found. The string isn't found as mark.js converts text nodes into a dictionary that will look like "Some oneSome two" (as you've assumed). Due to the fact that accuracy: "exactly" requires either the end of the string or a blank after the keyword ("Some one"), there are no matches. In case of accuracy: "partially" (default) it's beeing found.
The problem is that the current implementation doesn't iterate over HTML elements, only over text nodes. Therefore there's currently no way to treat
 as a blank to make it work with accuracy: "exactly".
Something else is required... This issue needs some investigation.

Yeap, the problem is you don't safe context of block elements(and don't create new on ).
I mean, when you're looking in accuracy exactly mode thought dom node, you result is all text nodes.
For example, Some oneSome else string result is "Some oneSome else" and it matches "Some oneSome" request. What's wrong probably just for me, but Google Chrome Ctrl + F works so.
And it's creates another problem, regexp works unexpectably, because I expect (^|\W)(Some else)(?!\w) will match, but not.
So if you'll serve context of block elements and create new on , your result will be ["Some one", "Some two"] and matches will be expectable and problem with  goes off.
FUI:
I used "dom text replacer"(your definitely better :)) with such approach and it probably will be interested for you:
https://github.com/padolsey/findAndReplaceDOMText/blob/master/src/findAndReplaceDOMText.js (line 251, method getAggregateText).
It's Unlicensed as I now.

I think I found a simple solution - I'll submit a PR - but if the
 is in the middle of the key word, it would not be found. E.g. attempting to mark "lorem ipsum" would highlight
lorem ipsum
 but not lorem
ipsum.

@Mottie I trink that's essential. We need to catch all cases with minified HTML.

LOL I forgot I had acrossElements disabled... I still have a bit of work to do to get all tests to pass. I think it might be easier to add it as an ignoreBR option set to true by default.

@Mottie Sorry, do you mean your solution would work with all approaches? I wouldn't introduce a new option for that -- this DOMIterator adjustment should be implemented by default as it makes no sense to have a separate option if something sets accuracy: "exactly"

Well, I got this to work by essentially setting the content of a
 to \n. What this does is alter the HTML so that the break becomes
\n
. The  problem getting the 4 tests to work:

Should wrap matches across iframes recursively - mark with acrossElements and matches across iframes.  It's only returning 25/30 nodes, and I have no idea why.
Should wrap elements in the DOM order - mark with iframes DOM order. Again, no idea why this is a problem.
Should mark correct range including spaces and breaks - mark with range. This one is because the test is using .text() to determine the text range. Since the unaltered
 doesn't have a new line character, the end point is one character off. I'm not sure how to solve this one.... call it a known issue and automatically add one to the end range?
Should mark and parse integer ranges - mark with range. This is the same issue as number 3 above.

@Mottie I don't think that this would work since we also need to respect cases like mentioned in #153 (there's no
, instead the end of a tag would need to be handled as space). If you have any solution in mind that's great and I'd appreciate if you'd share it. But in this case I think it would be better to discuss this first, otherwise you may spend hours in implementing a solution that doesn't fit the criteria.

@julmot
Probably, it should to handle not just br tags, block elements at all. And not just and of tag, if html starts with dom text element and then opens paragraph tag, they'll be on different lines and can be placed at different ends of screen.
But in the same time, it shouldn't handle inline elements such as spans.

I'm struggling with the same problem as in #153
As a workaround, I'm currently appending a & #8203 character to each block-level element before marking and removing it after (I'm not proud of it).
Would it be possible to handle the closing tag of each block-level element as a space, and adding an option to override the list of block elements?
Thanks for your hard work!

Would it be possible to handle the closing tag of each block-level element as a space

Yes, this would be the solution for the issue. However, it needs a rewrite of the internal DOM iterator and therefore will take some time. The option to differentiate between block elements and non-block elements won't make it easier... However, I'll come back to this.

Hi @julmot , are there any plans to address this issue please?

In my case I've solved it using the hack below, by adding a space after each block element and before each BR. It's ugly but it works.
function prepareElementsForMarkJs(elements, type) {
	for (let i = 0; i < elements.length; i++) {
		if (!type) {
			elements[i].innerHTML = elements[i].innerHTML + ' ';
		} else if (type === 'insertBefore') {
			elements[i].insertAdjacentHTML('beforeBegin', ' ');
		}
	}
}

function prepareAllElementsForMarkJs(document) {
	prepareElementsForMarkJs(document.getElementsByTagName('p'));
	prepareElementsForMarkJs(document.getElementsByTagName('div'));
	prepareElementsForMarkJs(document.getElementsByTagName('br'), 'insertBefore');
}

Thanks @laurent22 ! Ended up using your solution :+1:
hope there will be a proper fix in coming releases

Thanks for sharing @laurent22! What I would suggest for the workaround is avoiding unneeded iterations by directly checking all three types at once.
I also hope to find the time to work on solutions for all enhancements and in this case bugs.

Hi @julmot,
I'm the developer of Highlightall extension, which makes use of your excellent library to highlight text upon selection. If there's still a chance that this issue be fixed in a future release, it would be decisive to add a "Match whole words" option in the extension (which I was about to add but I can't do it with this issue).
Thanks anyway for the great job.
Jerome

Just came across same bug, any update on a real fix?


0.9.1 red-room.jxl fails to load with gdk-pixbuf plugin

Describe the bug
In jxl 0.8.2, the red-room.jxl test image is able to be loaded in EOG using the gdk-pixbuf plugin.
In jxl 0.9.1 the red-room jxl test image fails to load in EOG.
The test image can be downloaded here:
https://jpegxl.info/test-page/
To Reproduce

Compile the jxl 0.9.1 release with no patches
Download red-room.jxl from here: https://jpegxl.info/test-page/
Run gdk-pixbuf-pixdata red-room.jxl test.pixdata
It outputs failed to load "red-room.jxl": Failed to load image “red-room.jxl”: JxlDecoderSetImageOutBuffer failed

The error is due to here: https://github.com/libjxl/libjxl/blob/8e7dc5eff3d3dc92281ce4edbd5ea86e58c8aaf0/lib/jxl/decode.cc#L2443 as, gdb outputs:
(gdb) finish
Run till exit from #0  JxlDecoderImageOutBufferSize (
    dec=dec@entry=0x555555581750, format=format@entry=0x55555556dc50,
    size=size@entry=0x7ffffffee0e0)
    at /builddir/libjxl-0.9.1/libjxl-0.9.1/lib/jxl/decode.cc:2402
JxlDecoderSetImageOutBuffer (dec=0x555555581750, format=0x55555556dc50,
    buffer=0x7ffff44b0010, size=1351980)
    at /builddir/libjxl-0.9.1/libjxl-0.9.1/lib/jxl/decode.cc:2441
2441	in /builddir/libjxl-0.9.1/libjxl-0.9.1/lib/jxl/decode.cc
Value returned is $1 = JXL_DEC_SUCCESS
(gdb) print min_size
$2 = 1354416
(gdb) print size
$3 = 1351980

This became a problem in 0.9.0 due to https://github.com/libjxl/libjxl/commit/2ef999bbaa3e5d03b1894d224b6f44e756b6822e and reverting the commit does work around the issue.
Using gdk_pixbuf_get_pixels_with_length(), the length of pixel buffer is 1354413 which is also too small.
Expected behavior
The pixdata file is outputted with no errors.
This issue is specific to the gtk-pixbuf plugin.
This image loads fine with gimp and krita.
It also mostly works with djxl, djxl -v red-room.jxl test.jpeg outputs the file as expected however djxl -v red-room.jxl --disable_output aborts in packed_image.h on line 87. May not be related though.
Environment

OS: Void Linux
Compiler version: Tested with both gcc 12 and gcc 13
CPU type: x86_64
cjxl/djxl version string: djxl v0.9.1 0.9.1 [AVX2,SSE4,SSE2]

There appears to be two issues here:
(1) Row Stride isn't being taken into account in the gdk-pixbuf plugin.
(2) Row Stride is taken into account in the min_size calculation but it's calculated incorrectly. If the distance between two rows is larger than an exact row of pixels, then the trailing unnecessary data isn't actually needed after the last pixel.


610 mzgate add native support

Context: The MZgate is the natural gate to decompose an arbitrary linear optical interferometer into single- and two-mode passive gates. Currently, interferometers are decomposed into MZgates and Rgates and then internally the MZgate is decomposed into two BSgates and two more rotation gates, leading to an increase by a factor of two in terms of the number of two mode gates needed to decompose and apply a given interferometer, making the process potentially less than optimal.
Description of the Change: This change implements the MZgate and its gradients natively on the Fock backends using the The Warus implementation (cf. XanaduAI/thewalrus#256).
Benefits: Reduces the number of two-mode gates needed to apply the given interferometer.
Possible Drawbacks: N/A
Related GitHub Issues: Native support in the Fock backends for the MZgate #610

This PR should only be merged after a release of The Walrus is made containing the requirements (MZgate and its gradients).

I've added a test file to check if the native implementation using the gate from The Walrus agrees with the gate decomposition.

@sduquemesa : It would be a nice if you could a simple benchmark of this new implementation. For example, check how long it takes to propagate the evolution of 4 (or any other number) of photon going into an interferometer with unitary drawn from the Haar measure. You could check how long it takes with your implementation and with the old one.

Regarding the documentation check, in order to get this passing, you will need to also update the Walrus link in doc/requirements.txt.

@josh146  I have updated the requirements but doc builds keep failing

@sduquemesa it looks like you have updated requirements.txt, but doc/requirements.txt (this is the file used to install the documentation requirements) will also need to be updated 🙂

@sduquemesa it looks like you have updated requirements.txt, but doc/requirements.txt (this is the file used to install the documentation requirements) will also need to be updated 🙂

@josh146 🤔 I did, here is the file on this branch and the change is already committed. Works properly on my local env.
Apparently is a git issue... github did not have a good day yesterday,

@sduquemesa : seems like this lines of your code are not being tested:

Can you check what is going on?

@sduquemesa : seems like these lines of your PR are not being tested:

Can you add a new test?

I'm stuck with an issue that you maybe already faced with other custom gradients implementation: whenever tensorflow tries to call the custom gradient (from backprop) it fails silently and then returning None.
Like decomposition/native-gates, do I need to register this custom gradient somewhere?

Benchmark of native vs. decomposed MZ gate for different number of modes.
See benchmark source code here


Upgrade paho-mqtt to 1.4.0

Description:
Cahngelog: https://github.com/eclipse/paho.mqtt.python/blob/master/ChangeLog.txt
Example entry for configuration.yaml (if applicable):
mqtt:
  broker: localhost
  discovery: True

$ mosquitto_pub -h <IP_ADDRESS> -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion"}'

2018-09-18 14:02:15 INFO (MainThread) [homeassistant.core] Bus:Handling <Event platform_discovered[L]: service=load_platform.binary_sensor, platform=mqtt, discovered=name=garden, device_class=motion, platform=mqtt, state_topic=homeassistant/binary_sensor/garden/state>
2018-09-18 14:02:15 INFO (MainThread) [homeassistant.components.binary_sensor] Setting up binary_sensor.mqtt
2018-09-18 14:02:15 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=binary_sensor.garden, old_state=None, new_state=<state binary_sensor.garden=off; friendly_name=garden, device_class=motion @ 2018-09-18T14:02:15.523584+02:00>>

Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass

If the code communicates with devices, web services, or third-party tools:

[x] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[x] New dependencies have been added to the REQUIREMENTS variable ([example][ex-requir]).
[x] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.

Oh, do you see in the changelog the better asyncio support? Even added an example.
https://github.com/joernheissler/paho.mqtt.python/blob/1a7ad0d638e63a51438dc32453e85ce0e1d87f2a/examples/loop_asyncio.py
We should switch our MQTT integration to that. CC @OttoWinter

Tracked issue for MQTT conversion to asyncio here: https://github.com/home-assistant/home-assistant/issues/16690

I did see it but my "asyncio" coding skill are still limited.


ScrollView properties/events missing

I think we currently can't get and set the current scrollposition of the scrollview.
If I am right these parts should be inclueded:
Properties

ScrollX
ScrollY

I don't know if other events should be included like e.g.  SetScrolledPosition. When we have the scrollX and scrollY property the events should not be needed.

@SergejDK Good find. We're indeed missing a bunch of properties and events on ScrollView.
In addition to ScrollX and ScrollY, we need to add the events Scrolled and ScrollToRequested.
I'm not sure how to correctly support the method ScrollToAsync though.
Should we let people get a reference to the control themselves to call ScrollToAsync, or should we transform it into a parameter of ViewElement?
E.g.
let scrollViewRef = ViewRef<ScrollView>()
View.ScrollView(ref=scrollViewRef)

// Sometimes later
async {
    do! scrollViewRef.ScrollToAsync(10.0, 20.0, true)
}

OR

View.ScrollView(scrollTo=(10.0, 20.0, true))

The 2nd one looks cleaner. But we won't be able to await it...

Is one way of the examples for ScrollToAsync easier to test?

Correction: ScrollX and ScrollY are read-only. Only the events Scrolled and ScrollToRequested should be added to Fabulous.

Is one way of the examples for ScrollToAsync easier to test?
You mean for unit tests?
If so, the 2nd one is also the easiest to unit test. It's only a tuple value.

What is the difference between the AcceleratorProperty of the MenuItem and the ScrollX/Y? They are both readonly.
Yes I meant for unit tests. Well then I think the 2nd solution is okay. Or is there some other profit with using the 1st solution ?

Accelerator is an attached property with static getter/setter. (GetAccelerator/SetAccelerator)
ScrollX/ScrollY are standard properties that are readonly. They have their corresponding backing attached properties (ScrollXProperty) but lack a way to set them, other than ScrollToAsync. (SetScrolledPosition is marked for internal use only)
And when writing views, we only create new ViewElements to describe how we want the view to be.
We can't read the current values of the controls on the UI, other than though ViewRef/Created.
So these properties are useless for Fabulous.
So from an out-of-XF viewpoint, ScrollX and ScrollY are readonly, Accelerator is not.
That's why you were able to add support for Accelerator.

Yes I meant for unit tests. Well then I think the 2nd solution is okay. Or is there some other profit with using the 1st solution ?

With the first solution, the only 2 advantages I see are :

Ability to await the scroll animation to finish
Be closer to the way Xamarin.Forms works (so less docs to write and easier to move to new XF versions)

But the drawback is it not really the way Fabulous works.
The 2nd one is better in that way.

Accelerator is a dependency property with static getter/setter. (GetAccelerator/SetAccelerator)
ScrollX/ScrollY are standard properties that are readonly. They have their corresponding backing dependency properties (ScrollXProperty) but lack a way to set them, other than ScrollToAsync. (SetScrolledPosition is marked for internal use only)
And when writing views, we only create new ViewElements to describe how we want the view to be.
We can't read the current values of the controls on the UI, other than though ViewRef/Created.
So these properties are useless for Fabulous.
So from an out-of-XF viewpoint, ScrollX and ScrollY are readonly, Accelerator is not.
That's why you were able to add support for Accelerator.

Great explanation! 👍
Thank you :)

The documentation part is okay to write, I mean it needs to be written either way.

Ideally yes, but if we can just point people to docs.microsoft.com and not write the docs ourselves, it will save us a lot of work. :)

I do think that we can go with the 2nd one.

Ok, I'm good with it.
We will need a documentation explaining how to have a similar "awaitable" experience the Fabulous way (by using the Scrolled event I guess? -- I don't mean using async/let!).
And I think it will be good to also add the Xamarin.Forms way to the docs, to let people know they can still use the classic ScrollToAsync if they want to.


Version 0.9.0

maintenance

Codecov Report
Patch and project coverage have no change.

Comparison is base (a31172e) 94.04% compared to head (52317fb) 94.04%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the GitHub App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##           master     #181   +/-   ##
=======================================
  Coverage   94.04%   94.04%
=======================================
  Files          82       82
  Lines        5086     5086
  Branches      479      479
=======================================
  Hits         4783     4783
  Misses        176      176
  Partials      127      127

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Forward more functions to decorated manifolds

Currently, only base_manifold, representation_size, and manifold_dimension for decorator manifolds are forwarded to the base manifold. This means that when decorator manifolds like ArrayManifold, MetricManifold, and GroupManifold are implemented, for any of the other methods like zero_tangent_vector or isapprox to be called, then they must be explicitly reimplemented for the decorator manifold to forward.
I think a more useful pattern is to forward most functions by default and let the decorator override that behavior if necessary. e.g. MetricManifold will override any methods that depend on a concept of a metric. This ensures that when one e.g. wraps Rotations in  a GroupManifold to get SpecialOrthogonal then one can still has the functionality of Rotations such as inner.
For decorator-specific methods like local_metric or compose, they can have a pattern like this:
my_fun(::MyDecorator, args...) = ...
function my_fun(M::Manifold, args...)
    is_decorator_manifold(M, args...) && return my_fun(base_manifold(M), args...)
    error("my_fun not implemented for $(M) and $(args)")
end
my_fun(M::MyWipingDecorator, args...) = error("my_fun not implemented for $(M) and $(args)")

This would unwrap decorators until one of the manifolds supports a function or error when it reaches one that removes functionality. This would make e.g. an ArrayManifold{GroupManifold} behave similarly to a GroupManifold{ArrayManifold} for the core functions and make the manifolds a bit more robust to different orders of decoration (though perhaps we should just support one).

I think it's fine to have a specific order the decorators have to be applied in, currently I think it is GroupManifold(ArrayManifold(MetricManifold(M))), any of them can be omitted. Right now it's all about being able to swap GroupManifold with ArrayManifold because MetricManifold has to be in the same place.
I am conflicted about this proposal. On one hand it's quite hard to write correct forwarding and for example ArrayManifold doesn't do this totally right (for example it doesn't forward vector_transport_to). It would be nice to have a more robust approach to forwarding. On the other hand, it feels like quite a bit of work just to be able to swap ArrayManifold and GroupManifold since we are unlikely to get new decorators anytime soon. I'd wait with working on this proposal until we have an idea for a new decorator.

I think it's fine to have a specific order the decorators have to be applied in, currently I think it is GroupManifold(ArrayManifold(MetricManifold(M))), any of them can be omitted.

Even in that order, there are insufficient forwards. e.g. methods like local_metric, which explicitly require that a MetricManifold be passed. Likewise, GroupManifold doesn't forward inner, exp, zero_tangent_vector. So in practice, one can often only use one decorator at a time.
Either way, to me it makes the most sense to put ArrayManifold as the outermost decorator, since one can never guarantee that a decorator won't override functionality, and that way any core function we implement can have semantic checks.

for example ArrayManifold doesn't do this totally right (for example it doesn't forward vector_transport_to).

Oh, is that just a missing forward, or is there a reason for that?

Right now it's all about being able to swap GroupManifold with ArrayManifold because MetricManifold has to be in the same place.

No, I would like to as much as possible enable one to use the order that makes the most sense for their applications. I don't see why MetricManifold needs to be the innermost decorator. As I see it, MetricManifold should reset the defaults on all metric-related functions. I have applications where SpecialEuclidean can be equipped with several different metrics, some of which are left- or right-invariant. Some don't use the group structure at all. For these cases, it makes the most sense to first construct a SpecialEuclidean (which is an alias for SemidirectProductGroup with specific arguments) and then decorate it with a metric. With the current approach, there is no good way to do this without heavy code duplication or constantly unwrapping the decorators to use some functionality.
We actually have more decorators than these though. Technically every AbstractGroupAction is a decorator for an AbstractGroupManifold that simply equips it with additional functionality. This is reflected in the introduction of base_group, which duplicates the function of base_manifold, and implementing the compose functions to forward to the decorated group.
As I see it, decoration is analogous to "equipping". Ideally it would only add functionality/geometric structure, not replace it, but since we e.g. implement some manifolds with default metrics, then MetricManifold resets some functionality. With this view, I think forwarding until an error is raised is a good way to go.

If the order should not matter, we can just do an undecorate or an undecorate_to (with a type we are looking for)?

Even in that order, there are insufficient forwards. e.g. methods like local_metric, which explicitly require that a MetricManifold be passed. Likewise, GroupManifold doesn't forward inner, exp, zero_tangent_vector. So in practice, one can often only use one decorator at a time.
Either way, to me it makes the most sense to put ArrayManifold as the outermost decorator, since one can never guarantee that a decorator won't override functionality, and that way any core function we implement can have semantic checks.

Yes, right, we have many missing forwards, and I have nothing against forwarding more methods for specific decorator where that makes sense.
Right, ArrayManifold can also be outermost. With ArrayManifold in the outermost position I'd expect it to also check the arguments and results to compose, inv, etc.

for example ArrayManifold doesn't do this totally right (for example it doesn't forward vector_transport_to).

Oh, is that just a missing forward, or is there a reason for that?

Just one of the missing forwards.

No, I would like to as much as possible enable one to use the order that makes the most sense for their applications. I don't see why MetricManifold needs to be the innermost decorator. As I see it, MetricManifold should reset the defaults on all metric-related functions. I have applications where SpecialEuclidean can be equipped with several different metrics, some of which are left- or right-invariant. Some don't use the group structure at all. For these cases, it makes the most sense to first construct a SpecialEuclidean (which is an alias for SemidirectProductGroup with specific arguments) and then decorate it with a metric. With the current approach, there is no good way to do this without heavy code duplication or constantly unwrapping the decorators to use some functionality.

That's an interesting case I didn't think about. It's a good justification for wrapping GroupManifolds in MetricManifolds, so group operations should be forwarded through MetricManifold.

We actually have more decorators than these though. Technically every AbstractGroupAction is a decorator for an AbstractGroupManifold that simply equips it with additional functionality. This is reflected in the introduction of base_group, which duplicates the function of base_manifold, and implementing the compose functions to forward to the decorated group.

AbstractGroupAction isn't technically a Manifold though. It doesn't derive from any types and because it also wraps a G-manifold I don't think any manifold-related functionality can be forwarded (only the group-related functionality).

As I see it, decoration is analogous to "equipping". Ideally it would only add functionality/geometric structure, not replace it, but since we e.g. implement some manifolds with default metrics, then MetricManifold resets some functionality. With this view, I think forwarding until an error is raised is a good way to go.

If the order should not matter, we can just do an undecorate or an undecorate_to (with a type we are looking for)?
Edit: I meant that to get to the point that the order of decorators is irrelevant.

I'll try to summarize what I think about it now:

I agree that group-related operations should be forwarded through MetricManifold, maybe even all decorators by default. Makes sense.
ArrayManifold should probably check arguments and results of group-related functionality instead of plain forwarding.
Order of decorators can't be totally irrelevant, primarily because it'd be quite hard for ArrayManifold to enforce checking of operations that wrap around it (MetricManifold(ArrayManifold(...)) or GroupManifold(ArrayManifold(...))).
Pure forwarding of manifold-related functionality is currently limited to GroupManifold. I'm not against making pure forwarding the default for all decorators but I'm not convinced it's actually helpful at the moment.

Right, ArrayManifold can also be outermost. With ArrayManifold in the outermost position I'd expect it to also check the arguments and results to compose, inv, etc.

Yes, as we add functions to ManifoldsBase, they should get ArrayManifold-specific forwards.

That's an interesting case I didn't think about. It's a good justification for wrapping GroupManifolds in MetricManifolds, so group operations should be forwarded through MetricManifold.

Yes, we'll need to think carefully about how to handle metrics for groups, but some of these cases will probably require MetricManifold wrapping GroupManifold. I'll write up an issue with some ideas we can discuss.

AbstractGroupAction isn't technically a Manifold though. It doesn't derive from any types and because it also wraps a G-manifold I don't think any manifold-related functionality can be forwarded (only the group-related functionality).

No, certainly it doesn't implement the types, but my point is that it effectively decorates the group, not the G-manifold. Action elements are elements of the group, and every element of the group is an element of the action. In other words, we could absolutely have implemented it as an ActionManifold that wraps a group and an AbstractGroupAction and then dispatch on the group and action, by direct analogy to how we dispatch on the base manifold and operation for a GroupManifold. In fact, that would save us a few method implementations.

I'll try to summarize what I think about it now:

I think we're on the same page for points 1-3. I disagree on 4, but I don't think this is urgent. I'll start by making identity, inv, compose, translate, inverse_translate, translate_diff, inverse_translate_diff, and their mutating variants all forward to the decorated manifold by default here, and we can revisit this later.

If the order should not matter, we can just do an undecorate or an undecorate_to (with a type we are looking for)?

I like the idea of having something like base_manifold that doesn't unwrap all decorators. base_manifold in the cases I've checked can unwrap many decorators at compile time. If we can implement undecorate_to the same way, that would probably make the kind of forwarding I'm talking about a lot easier, when a function is tied to a specific manifold type (e.g. that would be useful for group operations but not naively for metric ones, since metric functions could be implemented on the base manifold).

Yes, we'll need to think carefully about how to handle metrics for groups, but some of these cases will probably require MetricManifold wrapping GroupManifold. I'll write up an issue with some ideas we can discuss.

Sure, great :slightly_smiling_face:

No, certainly it doesn't implement the types, but my point is that it effectively decorates the group, not the G-manifold. Action elements are elements of the group, and every element of the group is an element of the action. In other words, we could absolutely have implemented it as an ActionManifold that wraps a group and an AbstractGroupAction and then dispatch on the group and action, by direct analogy to how we dispatch on the base manifold and operation for a GroupManifold. In fact, that would save us a few method implementations.

Yes, that's an option, although to me it wouldn't feel right.

I think we're on the same page for points 1-3. I disagree on 4, but I don't think this is urgent. I'll start by making identity, inv, compose, translate, inverse_translate, translate_diff, inverse_translate_diff, and their mutating variants all forward to the decorated manifold by default here, and we can revisit this later.

OK, I don't have a particularly strong feelings about 4, I just don't see the benefit right now. If you want to work on it, then sure, we can have pure forwarding of manifold-related functions by default.

To continue a discussion started in #104 (where it did not belong, sorry) - my main point was the folloing: Let's look at one of the functions in groups.jl namely translate:
translate(M::Manifold, x, y) = translate(M, x, y, LeftAction())
function translate(M::Manifold, x, y, conv::ActionDirection)
    return translate(M, x, y, conv, is_decorator_manifold(M))
end
function translate(M::Manifold, x, y, conv::ActionDirection, ::Val{true})
    return translate(M.manifold, x, y, conv)
end
function translate(M::Manifold, x, y, conv::ActionDirection, ::Val{false})
    return error("translate not implemented on $(typeof(M)) for elements $(typeof(x)) and $(typeof(y)) and direction $(typeof(conv))")
end
function translate(G::AbstractGroupManifold, x, y, conv::ActionDirection)
    return compose(G, _action_order(x, y, conv)...)
end

translate!(M::Manifold, z, x, y) = translate!(M, z, x, y, LeftAction())
function translate!(M::Manifold, z, x, y, conv::ActionDirection)
    return translate!(M, z, x, y, conv, is_decorator_manifold(M))
end
function translate!(M::Manifold, z, x, y, conv::ActionDirection, ::Val{true})
    return translate!(M.manifold, z, x, y, conv)
end
function translate!(M::Manifold, z, x, y, conv::ActionDirection, ::Val{false})
    return error("translate! not implemented on $(typeof(M)) for elements $(typeof(x)) and $(typeof(y)) and direction $(typeof(conv))")
end
function translate!(G::AbstractGroupManifold, z, x, y, conv::ActionDirection)
    return compose!(G, z, _action_order(x, y, conv)...)
end

which takes 27 lines. Why can't we (like for exp and exp!) replace the first 10 (or even 13? I think even 13) lines by
function translate(M::Manifold, x, y)
  z = allocate(...)
  return translate!(M,z,x,y)
end

and from the same regime - is it necessary to overwrite exp? When this gets called with a group action, it still passes down to exp! and that's properly overwritten. Similarly for a few functions in the beginning.
In general, I was thinking about generalizing base_manifold with a level such that one can also just remove the outer level. so base_manifold(M) would still strip all decorators, base_manifold(M; level=1)would strip one decorator and one could even do base_manifold(M; strip=MetricManifold) which would go through the decorators and just remove all metrics. If (and I have never worked with those). maybe that'll also help a few definitions?


Serve source indexes of the queried data

Hello!
It would be great if Client could serve the source indexes of the queried data. Jina's Document object includes parent_id parameter, maybe it can be used?
I don't get it why it is not a part of the service functionalities
What plans do you have for developing the library in the near future?

@jamnicki Thank you for your suggestions! It is great to add a new function in the Client.

What plans do you have for developing the library in the near future?

So far the project is holiday work, and we cannot secure a fixed time to contribute, but of course, I will keep contributing.
The next step of ALaaS is obvious, we wish to provide a better user experience for ML scientists and engineers from the following perspectives,

Added more AL strategies.
Support customized torch models.
Support continual learning.

Welcome to make contributions if you have time : )


Nested classes deserialization

I have an issue where i'm trying to serialise an object, that has a top level class with an Id property, and a list of nested classes which also have an Id property.
    public class MyClass1
    {
        public string Id { get; set; }
        public string MyTopProperty { get; set; }

        public IEnumerable<MyClass2> MyClass2 { get; set; }
    }

    public class MyClass2
    {
        public string Id { get; set; }

        public string MyProperty { get; set; }
    }

and if i do:
            var myClass = new MyClass1()
                          {
                              MyTopProperty = "hello",
                              MyClass2 = new List<MyClass2>()
                                         {
                                         }
                          };

            var doc = new DocumentRoot<MyClass1>()
                      {
                          Data = myClass
                      };

            var json = JsonConvert.SerializeObject(doc, new JsonApiSerializerSettings());

this will give me:
{
  "data": {
    "type": "myclass1",
    "attributes": {
      "myTopProperty": "hello"
    },
    "relationships": {
      "myClass2": {
        "data": [

        ]
      }
    }
  }
}

when really i'm expecting to see:
{
  "data": {
    "type": "myclass1",
    "attributes": {
      "myTopProperty": "hello"
    },
    "relationships": {
      "myClass2": [
        ]
    }
  }
}

this becomes an issue when i receive some json and i try deserialising it back into MyClass1 and i get an exception that says  Expected to find nested object within data.attributes.myClass2 that matches \data$\
Is there a way around this?

I missed the part in the documentation about overriding ResourceObjectConverter

You shouldn't need to override ResourceObjectConverter. That is really only for advanced tweaking with the way the serialization works
The output you are getting is correct, its you expectation that is not right. Have a look at http://jsonapi.org/format/#document-resource-object-relationships the resource object should have a data element. That data element should contain an empty list if its a one-to-many relationship

Sorry. I wrote the wrong expectation out. It's been a long day.
{
  "data": {
    "type": "myclass1",
    "attributes": {
      "myTopProperty": "hello",
      "myClass2": [
      ]
    }
  }
}

i was expecting myClass2 to be an attribute of MyClass1, not a relationship.


Fix circular require

I was getting a circular require warning while running the rspec-rails test suite. This should fix it. Also took the chance to remove some unnecessary requires in other places.

hmmm -- this will break things for anyone who is just doing require 'capybara' currently -- I have to take the time to go back through the older readmes and see when that was the last suggested way to use capybara

I just looked at this version of the README (back in 2009) and it seems to make the same suggestions as now.

Ok -- we'll give it a try and hope no one screams

Hi. On RSpec we pin to the oldest version of capybara we support, which is currently the 2.2.x series. Would it be possible to get this patch backported into the 2.2.x series and released? If not, it's a non-issue, but if you can, that'd be great!


Remove some unused bin_io derivations from Transition_frontier

This PR removes some dead code depending on bin_io from the Transition_frontier libraries.

!ci-build-me

none of the types changed in this PR are persisted?

Confirmed. These types had deriving bin_io on them because of (presumably) copy-paste in the early codebase, and they got converted to versioned types as part of that change. The bin_iowas never used.