FIX: Source Navigator Icon Symbols affected by accent color

Description
Before, we were using .accentColor to set the color of file icons in the source navigator. However, this wasn't the intended behavior, so I've updated it to use .foregroundStyle on the icons instead.

Related Issues

na
Checklist

[x] I read and understood the contributing guide as well as the code of conduct
[x] The issues this PR addresses are related to each other
[x] My changes generate no new warnings
[x] My code builds and runs on my machine
[x] My changes are all related to the related issue above
[x] I documented my code

Screenshots

Before:

Now:

@austincondiff In SourceControlNavigatorRepositoryItem.swift if found this code. Was this if clause intentional, or am I overlooking something?
if item.symbolImage != nil {
    Image(symbol: item.symbolImage ?? "")
        .opacity(controlActiveState == .inactive ? 0.5 : 1)
         .foregroundStyle(item.imageColor ?? .accentColor)
} else {
    Image(symbol: item.symbolImage ?? "")
       .opacity(controlActiveState == .inactive ? 0.5 : 1)
       .foregroundStyle(item.imageColor ?? .accentColor)
}


No hint with iframe with srcdoc

knavi seems not to work iframe with srcdoc attribute.
i.e. https://interactive-examples.mdn.mozilla.net/pages/tabbed/area.html

Wontfix. because google chrome extension also does not support iframe with srcdoc.


The upgrade plan is to support the latest diffusers0.29？？？

Dear K, can we support diffusers 0.29.0 dependency in the new plan. It can only function properly, so it cannot function properly. If it drops by 0.27.2, many tools will no longer function properly.

Hey,
I don't really plan to support this wrapper as we have better, native option for comfy now:
https://github.com/nullquant/ComfyUI-BrushNet

Hey,
I don't really plan to support this wrapper as we have better, native option for comfy now: https://github.com/nullquant/ComfyUI-BrushNet

27/10000实时翻译
划译
This is possible, I have also installed it! But I want to use yours. Your features are so much more diverse

Hey,
I don't really plan to support this wrapper as we have better, native option for comfy now: https://github.com/nullquant/ComfyUI-BrushNet

This is possible, I have also installed it! But I want to use yours. Your features are so much more diverse

Fine, updated!


ISSUE-481 Fixed SQL injection for search queries

This issue is raised on HDF-3.1-maint as the issue was reported on that release. This will be ported to master once this PR is reviewed.

#481


MQTT & REST support

Are you planning to add MQTT and REST support to your library?

Not at this time.  Patches welcome.


🌱 Spike: SageMaker

User Story
As part of our effort to offer better tooling experience both for Analytical Platform and Data Platform, we would like to investigate alternative ways of providing analytical tooling IDEs to customers. We are looking for solutions that have a good selection of features, are fairly straight-forward to maintain, easily scalable and additionally make it easier to add new tools on customer request.
As such we would like to assess AWS SageMaker as an option.
Value / Purpose
SageMaker is a flexible managed service for providing tooling environments to customers that easily integrates into AWS IAM. it answers at least some of the requirements outlined above. We would like to understand how it stacks up against the current solution of choice: coder.
Useful Contacts
No response
User Types
AP Users
Hypothesis
If we are able to offer a more flexible scalable analytical tooling platform, we will attract additional users, not just from D&A.
Proposal
Assess the capability, operational requirements and costs of SageMaker and compare it to coder to allow us to make a decision regarding out tooling going forward.
Additional Information
No response
Definition of Done

[ ] SageMaker assessed
[ ] Conclusions captured
[ ] Proposal drafted regarding tooling choice and circulated
[ ] POC implemented
[ ] ADR drafted
[ ] UR needs identified
[ ] Follow-on stories raised

I have created this issue in relation to the build of the SageMaker MVP.

PoC implemented as per 🧱 MVP: Build SageMaker in Development#1970.

Discussion created.


feat(onyx-1277): enable context menu for new works for you rail on new home screen

This PR resolves ONYX-1277
Description
One more PR to achieve parity between new and old home screens. This condition (contextModule == "newWorksForYouRail") enables the feature only for newWorksForYouRail. contextModule was missing before.
During refinement session we've discussed opportunity to enable context menu for all home screen rails, I've created a ticket to not forget to do it: jira.

PR Checklist

[x] I have tested my changes on iOS and Android.
[x] I hid my changes behind a feature flag, or they don't need one.
[x] I have included screenshots or videos, or I have not changed the UI.
[x] I have added tests, or my changes don't require any.
[x] I added an app state migration, or my changes do not require one.
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates
#nochangelog

Need help with something? Have a look at our docs, or get in touch with us.

Warnings

:warning:

✅ No changelog changes

  Generated by :no_entry_sign: dangerJS against<PHONE_NUMBER>a0d4626777d7ce06353885e13dd487


Home.jsx: Fix the Get Started button(only on Firefox browsers)

Design link
Hex Codes
As you can see in the image below, the Get Started text isn't really fitting into the button. This issue is ONLY on Firefox browsers, and not on chrome. You need to get the placement of the text right.
Home.jsx can be found in src/pages.

hey @sikehish  can i work on this ?

Sure! Once you're done, send me screenshots of the get started button on both chrome and firefox.

hey @sikehish  i am getting file error while setting up this project
/*  [vite] Internal server error: Cannot redefine property: File */
File Location :-   campUS-Web/src/main.jsx
please check it out

Hi @kushvendar, It's working fine on my end. Can you please elaborate on the issue that you've faced, and what led you to that issue?

sure @sikehish  after setting up the project
1.installing dependencies
2.Replace Firebase Configuration
3. after executing npm run dev command i got this error

There are two things you can do. Either clone the repository once again(and sync all the changes using the sync button on the forked repo page) and do git pull, OR search up for the error online, I haven't come across this error till now, so I'm assuming they there's some issue with npm/Node version on your end.

ok i will try this

hey @sikehish i have resolved the issue and raised a PR kindly check


How do I limit the size of my data directory？After the cluster is started, the example-data directory generated by the node startup directory occupies 140MB. How can I limit the initial size of this directory

Note: for reported bugs, please fill in the following details. bug reports without detailed steps on how to reproduce will be automatically closed.

How do I limit the size of my data directory？After the cluster is started, the example-data directory generated by the node startup directory occupies 140MB. How can I limit the initial size of this directory
Dragonboat version
Expected behavior
Actual behavior
Steps to reproduce the behavior

It is used by pre-allocated files generated by pebble.
See LogDBConfig in config.


Create a staging machine for staging.consciousinternet.org

We became live, we need another machine to test code on
Create a new machine with new installation and add domain  www.staging.consciousinternet.org to it

Done with ssl support
https://www.staging.consciousinternet.org/
https://staging.consciousinternet.org/


test: Fix travis failure - test_outofbandmanagement.py

Description
This PR fixes the travis test failure noticed on the main branch -
ERROR: test suite for <class 'integration.smoke.test_outofbandmanagement.TestOutOfBandManagement'>
----------------------------------------------------------------------
Traceback (most recent call last):

  File "/home/travis/.local/lib/python3.6/site-packages/nose/suite.py", line 210, in run
    self.setUp()
  File "/home/travis/.local/lib/python3.6/site-packages/nose/suite.py", line 293, in setUp
    self.setupContext(ancestor)
  File "/home/travis/.local/lib/python3.6/site-packages/nose/suite.py", line 316, in setupContext
    try_run(context, names)
  File "/home/travis/.local/lib/python3.6/site-packages/nose/util.py", line 471, in try_run
    return func()
  File "/home/travis/build/apache/cloudstack/test/integration/smoke/test_outofbandmanagement.py", line 50, in setUpClass
    cls.skipIfMSIsUnsupported(cls)
  File "/home/travis/build/apache/cloudstack/test/integration/smoke/test_outofbandmanagement.py", line 99, in skipIfMSIsUnsupported
    os_details = SshClient(self.mgtSvrDetails["mgtSvrIp"], 22, self.mgtSvrDetails["user"], self.mgtSvrDetails["passwd"]).execute \
  File "/home/travis/.local/lib/python3.6/site-packages/marvin/sshClient.py", line 81, in __init__
    raise internalError("SSH Connection Failed")
marvin.cloudstackException.internalError: SSH Connection Failed

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[X] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[X] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?
Ran the smoke test - test_outofbandmanagement.py on simulator env - passes
nosetests --with-xunit --xunit-file=results.xml --with-marvin --marvin-config=setup/dev/advanced.cfg -s -a tags=advanced --hypervisor=simulator test/integration/smoke/test_outofbandmanagement.py

==== Marvin Init Started ====

=== Marvin Parse Config Successful ===

=== Marvin Setting TestData Successful===

==== Log Folder Path: /tmp/MarvinLogs/Aug_20_2021_11_24_00_P3BZHV. All logs will be available here ====

=== Marvin Init Logging Successful===

==== Marvin Init Successful ====
=== TestName: test_oobm_background_powerstate_sync | Status : SUCCESS ===

=== TestName: test_oobm_configure_default_driver | Status : SUCCESS ===

=== TestName: test_oobm_configure_invalid_driver | Status : SUCCESS ===

=== TestName: test_oobm_disable_feature_invalid | Status : SUCCESS ===

=== TestName: test_oobm_disable_feature_valid | Status : SUCCESS ===

=== TestName: test_oobm_enable_feature_invalid | Status : SUCCESS ===

=== TestName: test_oobm_enable_feature_valid | Status : SUCCESS ===

=== TestName: test_oobm_enabledisable_across_clusterzones | Status : SUCCESS ===

=== TestName: test_oobm_issue_power_cycle | Status : SUCCESS ===

=== TestName: test_oobm_issue_power_off | Status : SUCCESS ===

=== TestName: test_oobm_issue_power_on | Status : SUCCESS ===

=== TestName: test_oobm_issue_power_reset | Status : SUCCESS ===

=== TestName: test_oobm_issue_power_soft | Status : SUCCESS ===

=== TestName: test_oobm_issue_power_status | Status : SUCCESS ===

=== TestName: test_oobm_multiple_mgmt_server_ownership | Status : SUCCESS ===

=== TestName: test_oobm_zchange_password | Status : SUCCESS ===

@blueorangutan package

@Pearl1594 a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@Pearl1594 should this be ported to 4.15?

This was an issue only on main

Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 953


icmp: Fixed replies to broadcasts.

Summary
ICMP must not reply to broadcasts.
Currently, it is improperly checking whether the destination is a broadcast, by a pure equality check with INADDR_BROADCAST.
The broadcast address, as defined by the subnet mask, is not checked. This results in ICMP replying to broadcasts that it shouldn't.
The fix also takes into account the subnet mast, and checks against the calculated broadcast address, ensuring that only valid responses are sent.
Impact
There are no more ICMP responses to broadcasts.
Testing
Tested on a custom target, based on the STM32F427, using the LAN8720A.
Traffic was examined with Wireshark, with and without the fix, validating the fix.

For future reference, this change was discussed in the NuttX mail list thread "ICMP responses on UDP broadcasts" started 10 May 2022, archived at https://lists.apache.org/thread/qly6hbt63bxocdorc2kk173nys1vgkvt and other places.


[BUG] Search returns Organization rather than Partner

When creating a new Partner, one is required to create a new Organization as well. Once the Partner is created with the same name as the Organization, searching for the Name returns the Organization in the search results rather than the partner.
This can be seen when selecting the card in the search results. A blank details page is shown (No Name displayed and nothing indicating it is an organization). However checking the URL shows it is looking at /organizations/id rather than /partners/id.
If you are able to find the new Partner in the Partners list and select it, it will correctly take you to the /partners/id detail page.

We need to specify types on the search to blacklist organization reuslts


"ADD TOPIC (to end of list)" not functioning correctly

If we add a few items using the normal "+ ADD TOPIC" button, re arrange them, then use lower down "ADD TOPIC (to end of list)" it actually adds the items in the middle, not at the end as expected.

Thanks for reporting this. I just tried and was able to reproduce this following these steps:

Create new series & minutes
Create topic 1 and topic 2 using the + ADD TOPIC... button. We now have Topic 2 before Topic 1
Switch topic 1 and topic 2 by dragging
Add topic 3 using the ADD TOPIC (to end of list) input box
topic 3 is added between the topic 1 and topic 2

Hmmm. I can not reproduce the issue with your above steps.
I tried in FireFox & Chrome. I tried 4Minitz current stable (1.5.2) and current develop.
After your above steps, I get the expected topic order: 1, 2, 3.
The responsible code also looks fine... This line only sets the $position===0 of "insert to top" is reuqested:
https://github.com/4minitz/4minitz/blob/85fc91eae7e8c9693ed4bb36b36ff3b7575bcd6f/imports/collections/minutes_private.js#L181
According to MongoDB $position doc if we use $push with $each WITHOUT a $position, it will append to the end of the array.

I was able to reproduce it on the demo and develop server. Linux 64 bit Chrome 67. Under Windows with probably an older Chrome version I was not able to reproduce it on develop. I can check that again tomorrow and grab the right chrome version.

One more interesting observation: The topic 3 is added correctly into the database, a simple reload will sort the three topics correctly. It seems to be the rendering or the optimistic ui related update in the client side database perhaps?

This helper here https://github.com/4minitz/4minitz/blob/d5a8665333d885cd9c7f87b2d288cf458a954688/client/templates/topic/topicsList.js#L19-L22 returns the topics always in the correct order but they are not rendered correctly. To me this looks like a bug in blaze.

@migerh Hmm - any idea how to proceed here? Can we do anything about this? A workaround for a potential Blaze bug? Or do we have to live with it? The we should comment and close this issue.

I tried a few things but nothing really helped. Even if we manage to find some workaround there's no guarantee it will work after a blaze update. I think we'll have to live with it.


No way to delete stuck containers. Don't know why they got stuck initially.

Required information

Distribution: Ubuntu
Distribution version: 16.04
The output of "lxc info" or if that fails:

Kernel version:  4.4.0-15-generic
LXC version: 2.0.0
LXD version: 2.0.0
Storage backend in use: zfs

Issue description
Containers are stuck after a while. No way to delete stuck containers.
http://d.pr/i/1j8mn
Information to attach

[x] any relevant kernel output (dmesg) bug_dmesg.txt
[ ] container log (lxc info NAME --show-log) - stuck
[x] main daemon log (/var/log/lxd.log) lxd.log.txt
[ ] output of the client with --debug
[ ] output of the daemon with --debug
[x] ps fauxww bug_ps.txt

a "dmesg" and "ps fauxww" output would probably be useful.

@stgraber attached the logs to the main message

You appear to have multiple concurrent copy of the lxd daemon running on your system, that may well be causing your problems.
Try killing 482075 and 482079, see if things get unstuck somehow.

Hmm. Killing those extra LXDs helped. Now I'm able to delete my stuck container.
But I'm now wondering how they got started. I remember rebooting the machine quite recently and I definitely did not start another lxd manually.
The only way how might've been started is when I tried running 'service lxd restart'. But by that time containers were already stuck.
Anyways, thank you!

Yeah, I think we had such a behavior with a bug in one of the late rcs, but 2.0 final was supposed to be fixed, so not sure what's causing that.

If you have any way to reproduce the leftover lxd daemon that'd be very useful as short of having that, there's little we can do :(

It's never happened again during this week. So, let's consider this a random bug and close the issue.
Thank you!


Expert Policy fails in Push-V2 and other tasks, particularly with newer versions of MetaWorld.

I try to use expert policies to create demonstrations. However, I met some problems when starting with the docs/usage/basic_usage.md code. Specifically, the code works well when using the reach task, but it immediately fails when I switch to the push task.
The following is my code when using the latest update of Metaworld
from metaworld import MT1
from metaworld.policies.sawyer_push_v2_policy import SawyerPushV2Policy as p_push

# from metaworld.policies.sawyer_peg_insertion_side_v2_policy import SawyerPegInsertionSideV2Policy as p
mt1 = MT1('push-v2', seed=42)
env = mt1.train_classes['push-v2']()
env.set_task(mt1.train_tasks[0])
obs, info = env.reset()

policy = p_push()

done = False
i = 0
while not done:
    a = policy.get_action(obs)
    obs, reward, done, _, info = env.step(a)
    print(f" Step: {i}, Reward: {reward}, Success: {info['success']}")
    done = int(info['success']) == 1
    i += 1

It will truncate finally (probably maximum length) and not success. a short snapshot of the output is:

However, when I switch back to v0.1.0 (likely with mujoco_py and gym), it works correctly. the code is
from metaworld import MT1
from metaworld.policies.sawyer_push_v2_policy import SawyerPushV2Policy as p_push

mt1 = MT1('push-v2', seed=42)
env = mt1.train_classes['push-v2']()
env.set_task(mt1.train_tasks[0])
obs= env.reset()

policy = p_push()

done = False
i = 0
while not done:
    a = policy.get_action(obs)
    obs, reward, done, info = env.step(a)
    print(f" Step: {i}, Reward: {reward}, Success: {info['success']}")
    done = int(info['success']) == 1
    i += 1

The snapshot of the output is:

Such a phenomenon also appears in most tasks like assembly and basketball. I don't quite understand why such failure cases occur in a newer version of Metaworld. Are there any solvents?

Can you test with different MuJoCo versions?

Thanks, and it works well! Previously, I didn't carefully follow the mujoco<3.0.0 requirements, which led to such a problem.

Hi @Dongjiahua, could you elaborate on your solution to this problem? I have the same issue, but even when moving back to version 0.1.0 I can't have successful trajectories for reach, pick and place, or push tasks.
Thanks!

You shouldn't be using version 0.1.0 -- the most recent push in the master branch generates successful trajectories for those tasks.

Hi Reginald, thanks for the quick reply!
I wasn't, I installed the latest version and couldn't get the expert policies to work there, read here that they worked fine on 0.1.0 and gave that shot, but not luck either. Do you guys have any idea what could be wrong?

If you use the most up to date commit on the master branch it should work -- one of our build tests tests the scripted policies and the tests are currently passing.

I'm so sorry, didn't realize I was importing ML1 instead of MT1. Any particular reason the scripted policies don't work for those ML1 tasks?

The scripted policies require the goal to be observable in the state, but if you use the ML1 version of an environment the goal is zeroed out. Thus the policy can't solve the task


1d regression

move fourier features to utils.py
try using FF for all methods on 1d regression tasks

change  xmap_yhat_sample_lofi_lin in demos/nonstat-1d-regression to use the predict_obs_cov method.

J. Lazzari and X. Liu, “Understanding the Spectral Bias of Coordinate Based MLPs Via Training Dynamics,” arXiv [cs.LG], Jan. 14, 2023 [Online]. Available: http://arxiv.org/abs/2301.05816

M. Tancik et al., “Fourier features let networks learn high frequency functions in low dimensional domains,” in NIPS, Jun. 2020 [Online]. Available: https://proceedings.neurips.cc/paper/2020/file/55053683268957697aa39fba6f231c68-Paper.pdf. [Accessed: Dec. 23, 2022]


Fix layer removing by disconnecting each event individually

Description
This PR closes #1503 and #1500 by individually disconnecting each event that we attach to a layer. With this change you can add and remove layers from the layer list and everything will work as expected. If you've connected additional events you won't lose them. This behavior is also now comprehensively tested.
The approach was to add close methods to every object where a layer event was connected and make sure it got called. It adds a lot of code, but I think this is good practice, and the tests should ensure that we can't add additional event connections and not notice.
When we close the viewer we also now remove all the layers
Type of change

[x] Bug-fix (non-breaking change which fixes an issue)

References

Close #1503
Close #1500
How has this been tested?

[x] comprehensive tests added

Final checklist:

[x] My PR is the minimum possible work for the desired functionality
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works

I'm ok with the change as is, but want to consider a couple of suggestions. To me, it seems a bit hacky that we have to manually/mentally keep track of which events we're subscribed to and how. At the very minimum, it would be good to refactor the code so that the connect/disconnect calls are right next to each other. That will make the code easier to maintain for everyone, especially newcomers.
Better, though, might be to somehow do this automatically within the event system: maybe when we call connections, we disconnect after a traceback? Of course, then you have to worry about logging the traceback somehow. So, I'm not sure whether that's the right approach, but right now it seems like a lot of boilerplate and it relies on a lot of manually calling .close()...

I like the explicit connecting / disconnecting - i think your suggestion here https://github.com/napari/napari/pull/1984#discussion_r536915508 is a good one i can try implementing on this PR.
I'm not sure about waiting for a traceback to disconnect, that seems highly risky for all sorts of reasons!
Curious if @tlambert03 has any ideas here before I implement your suggstion?

To me, it seems a bit hacky that we have to manually/mentally keep track of which events we're subscribed to and how.

Curious if @tlambert03 has any ideas here before I implement your suggstion?

ooof!  with (truly) due respect and admiration for your tracking down all of those connections :joy: I agree that it is hacky that we have to track all of these. I'm ok with this as a "stop gap" ... but I'd really much rather see the fix here ultimately being what I mentioned in https://github.com/napari/napari/pull/1504#discussion_r519193070: namely: the layer itself shouldn't have been connected to all of these things in the first place ... but rather only to the layerlist and the layerlist to the other things.
but, since this should only help to prevent weirdness when closing layers in the meantime, I'm fine with this for now. but I'd hope we can make it all unnecessary in the future.

namely: the layer itself shouldn't have been connected to all of these things in the first place ... but rather only to the layerlist and the layerlist to the other things.

@tlambert03 I completely agree for connections to the viewermodel - the layer shouldn't go directly there, and I want to work to remove those, but what about the connections from the layer within files like the vispy_image_layer.py or the qt_image_controls.py. For these file the layerlist doesn't know about them, but the connections could happen outside them in the higher level vispy/ qt objects. I could also imagine having a new "controller" like objects where all event connections and disconnections happen, but that would be different yet again.

For these file the layerlist doesn't know about them, but the connections could happen outside them in the higher level vispy/ qt objects. I could also imagine having a new "controller" like objects where all event connections and disconnections happen, but that would be different yet again.

yeah, you're right.  I had a concept in my mind, but wires got crossed and that wasn't the correct comparison to make :joy:
I guess what I'm mostly after is an add/remove kind of "bottleneck" wherein, if some developer later introduces a new event, we don't have to make sure to tell them "don't forget to add it to the close event too!".
I wonder whether a connect and disconnect method could help:
class QtImageControls(QtBaseImageControls):
    _layer_connections = {
        "interpolation": "_on_interpolation_change",
        "rendering": "_on_rendering_change",
        "iso_threshold": "_on_iso_threshold_change",
        "attenuation": "_on_attenuation_change",
        "_ndisplay": "_on_ndisplay_change",
    }

    def __init__(self, layer):
        super().__init__()
        self._connect_layer(layer)

    def _connect_layer(self, layer):
        for event_name, method_name in self._layer_connections:
            event = getattr(self.layer.events, event_name)
            method = getattr(self, method_name)
            event.connect(method)

    def _disconnect_layer(self, layer):
        for event_name, method_name in self._layer_connections:
            event = getattr(self.layer.events, event_name)
            method = getattr(self, method_name)
            event.disconnect(method)

then making a new connection is just adding a new key: value to _layer_connections dict.
Might even be possible to put those _connect_layer methods on the base  QtControls class, and each subclass just has a nice clean dict

I wonder whether a connect and disconnect method could help:

ooo this is starting to look nicer. Will make it easier if we want to pull that stuff out of these files completely at some point. Thoughts @jni?

here's a more complete example with some inheritance ideas:  all the connection/disconnection happens on the base class:
class QtLayerControls(QFrame):
    _layer_connections = {
        "blending": "_on_blending_change",
        "opacity": "_on_opacity_change",
    }

    def __init__(self, layer):
        super().__init__()
        self._connect_layer(layer)

    def _connect_layer(self, layer):
        self.layer = layer
        for event_name, method_name in self._layer_connections:
            event = getattr(self.layer.events, event_name)
            method = getattr(self, method_name)
            event.connect(method)

    def _disconnect_layer(self):
        for event_name, method_name in self._layer_connections:
            event = getattr(self.layer.events, event_name)
            method = getattr(self, method_name)
            event.disconnect(method)

    def close(self):
        self._disconnect_layer(self.layer)
        self.deleteLater()
        super().close()

class QtBaseImageControls(QtLayerControls):
    _layer_connections = QtLayerControls._layer_connections.copy()
    _layer_connections.update({
        'colormap': '_on_colormap_change',
        'gamma': 'gamma_slider_update',
        'contrast_limits': '_on_clims_change'
    })

class QtImageControls(QtBaseImageControls):
    _layer_connections = QtBaseImageControls._layer_connections.copy()
    _layer_connections.update({
        "interpolation": "_on_interpolation_change",
        "rendering": "_on_rendering_change",
        "iso_threshold": "_on_iso_threshold_change",
        "attenuation": "_on_attenuation_change",
        "_ndisplay": "_on_ndisplay_change",
    })

Very nice. If @jni gives green light I'll move over current PR. All this stuff is private and pretty deep inside the codebase, so we can continue to iterate as we go too. I'm also really hoping to remove more and more event connections too

and just to point it out (again, from the old event refactor), we could enforce method naming here:
class QtLayerControls(QFrame):
    _layer_connections = ['blending', 'opacity']

    # ... and then the method:
    def _connect_layer(self, layer):
        self.layer = layer
        for event_name in self._layer_connections:
            event = getattr(self.layer.events, event_name)
            method = getattr(self, f'_on_{event_name}_change')
            event.connect(method)

# and inheritance:
class QtBaseImageControls(QtLayerControls):
    _layer_connections = QtLayerControls._layer_connections + ['colormap', 'gamma', 'contrast_limits']

and just to point it out (again, from the old event refactor), we could enforce method naming here:

At this point I'm wondering if connect and disconnect are becoming generic and reusable enough that they could have function signatures like connect(source, dest, connections) and such only need to be defined once and then we can reuse them in all these places, rather than having _connect defined on the object itself?

Also at this point @tlambert03 if you wanted to take over this PR that would be fine by me, but I'm also happy to implement if we get the rough idea figured out first.
I think fortunately all my tests should work regardless of implementation, so we'll know if we get it right!

Also at this point @tlambert03 if you wanted to take over this PR that would be fine by me, but I'm also happy to implement if we get the rough idea figured out first.

i'm trying to do some other things at the moment, so keep going with it :)

Ok @tlambert03 @jni, I've updated most of the qt_*_controls.py files to use something inspired by the new approach suggested above here. The diff of just this last commit gives pretty good results https://github.com/napari/napari/pull/1984/commits/713513ec1fe0ac8e4fc9f746049c67d199f5a1cb, much less code.
I'll probably do the same approach on the vispy visual files. I'm hesitant to use it on the viewermodel yet because we still want to try and eliminate a bunch of those connections.
Feedback welcome!

Ok, I've moved over the rest of the Qt files to have the new syntax. I've left the vispy files and the viewermodel files as before. To be honest I can see upsides and downsides of both approaches - one is more explicit, but more lines, the other uses some automated magic but results in simpler files. I'll finish up the PR as people see fit.

Ok, I've added a new disconnect method in https://github.com/napari/napari/pull/1984/commits/fa1dbc8c5fcd9406ac6e03ab815b77575eeb6ecc which will take off all the connections between a source and a destination. This means we don't need to maintain the _connections list like we were doing. We can go back now to explicitly connecting events, or we can use a connection dictionary, or we go even more magical and just have a connect(source, destination) which will look for matching pairs of source.events.{name} and destination.events._on_{name}_set and connect them up. While I get some hesitation from @jni on this, it's actually pretty easy to have multiple _on_{name}_set methods then call another method with a different name if we want to connect multiple functions to the same callback? Thoughts @tlambert03 @jni? I might give that a try too and see what it is like

I like this (as is) a lot... love the "disconnect everything from this emitter to this listener".  Actually, maybe call them "emitter" and "listener" rather than "source" and "destination"?... and possibly move that function to the qt utils (if we have it?).  I'm a bit luke-warm about the auto-connections.  The main reason for the connections list was just to be DRY during disconnections, but if we're always just going to disconnect everything, I kinda like leaving the explicit connections, (I do find myself searching ".events.<x>.connect" a lot)

I agree with Talley — lukewarm about auto-_on_*_{change,set}. In general, I dislike things that depend on naming conventions.

I like this (as is) a lot... love the "disconnect everything from this emitter to this listener". Actually, maybe call them "emitter" and "listener" rather than "source" and "destination"?... and possibly move that function to the qt utils (if we have it?)

I'll move this to a util.

The main reason for the connections list was just to be DRY during disconnections, but if we're always just going to disconnect everything, I kinda like leaving the explicit connections, (I do find myself searching ".events..connect" a lot)

I agree with Talley — lukewarm about auto-on*_{change,set}. In general, I dislike things that depend on naming conventions.

So sounds like we're going back to explicit connections, no "connections list", not naming conventions, and moving the "disconnect everything from this emitter to this listener" to a utils and using it where we need?
I'll implement that now, but let me know if I misunderstood!!!

As I have already written it, here is what the automagical connection might look like. We can always pull out this code if we want to go back down that road.
from collections.abc import Iterable

def connect(source, destination, connections=None):
    if connections is None:
        # connection None then do automatically
        for event_name in source.events.emitters.keys():
            event = getattr(source.events, event_name)
            method = getattr(destination, f'_on_{event_name}_change', None)
            if method is not None:
                event.connect(method)
    elif isinstance(connections, dict):
        # connections a dict, then match
        for event_name, method_name in connections.items():
            event = getattr(source.events, event_name)
            method = getattr(destination, method_name)
            event.connect(method)
    elif isinstance(connections, Iterable):
        # connections an iterable, then match to `_on_*_change`
        for event_name in connections:
            event = getattr(source.events, event_name)
            method = getattr(destination, f'_on_{event_name}_change')
            event.connect(method)
    else:
        raise ValueError('Connections not recognized')

def disconnect(source, destination, connections=None):
    if connections is None:
        # connection None then do automatically
        for em in source.events.emitters.values():
            for callback in em.callbacks:
                # Callback is a tuple of a weak reference and method name
                if (
                    isinstance(callback, tuple)
                    and callback[0] is destination.__weakref__
                ):
                    em.disconnect(callback)
    elif isinstance(connections, dict):
        # connections a dict, then match
        for event_name, method_name in connections.items():
            event = getattr(source.events, event_name)
            method = getattr(destination, method_name)
            event.disconnect(method)
    elif isinstance(connections, Iterable):
        # connections an iterable, then match to `_on_*_change`
        for event_name in connections:
            event = getattr(source.events, event_name)
            method = getattr(destination, f'_on_{event_name}_change')
            event.disconnect(method)
    else:
        raise ValueError('Connections not recognized')

Ok @tlambert03 @jni I've gone back to explicit connections (but I've left the standardized names in case we want to use the automated approach in the future).
This is now ready for re-review! Thanks for your input both, I think it is much better now than my original version

We've still got some memory leak issue - see

I'll keep looking at what can be done

Ok, after much searching, it appears like the memory leak is coming from this code being run
def disconnect_events(emitter, listener):
    """Disconnect all events between an emitter group and a listener.

    Parameters
    ----------
    emitter : napari.utils.events.event.EmitterGroup
        Emitter group.
    listener: Object
        Any object that has been connected to.
    """
    for em in emitter.emitters.values():
        for callback in em.callbacks:
            # *callback* may be either a callable object or a tuple
            # (object, attr_name) where object.attr_name will point to a
            # callable object. Note that only a weak reference to ``object``
            # will be kept. If *callback* is a callable object then it is
            # not attached to the listener and does not need to be
            # disconnected
            if (
                isinstance(callback, tuple)
                and callback[0] is listener.__weakref__
            ):
                em.disconnect(callback)

any ideas why this would cause the problem @jni?

Ok - it is the listener.__weakref__ call. Well who knew!!

Ok, looks like the weakref.ref(listener) syntax is ok, but the listener.__weakref__ syntax is not! I'm going to clean this up and then we should be in the clear!!

Alright, all tests are passing!!! I'll probably leave this one overnight if anyone wants to have any final looks. What a journey for weakref.ref(listener) vs listener.__weakref__, but there we are!!

Alright, all tests are passing!!! I'll probably leave this one overnight if anyone wants to have any final looks. What a journey for weakref.ref(listener) vs listener.__weakref__, but there we are!!

Wow, great job.  Would be curious to learn more about this if you found good resources online!


Wing cutout geometry with leading edge devices

Hello everyone,
I have a question regarding the leading edge devices: is it possible to generate a wing geometry from TIGL in which the cutouts for trailing  AND leading edge devices are taken into account? The  CCPACSWing::GetLoftWithCutouts method unfortunately only considers the trailing edge devices. Here is my use case:
tigl-slats.zip
Best regards,
Daniel

The leading edge devices are unfortunately not implemented yet.

I'm currently working on a project which needs the cut outs for LE and TE devices, but that project is not DLR related. We would need the functionality till the end of the year. I assume with this background I need to implement a workaround for this issue?

[ ... ]  We would need the functionality till the end of the year. I assume with this background I need to implement a workaround for this issue?

Yes, I am afraid so. I am happy to help in figuring something out. It all depends on how complex the cutouts have to be. In the simplest case, you could just have a Boolean Cut with a box, as in https://github.com/rainman110/tigl-workshop/blob/master/Exercises/solutions/Exercise2_Customization_Visualization_Solution.ipynb.

Thanks for the workshop notebook! I think I'll use it for the workaround

Thanks for the workshop notebook! I think I'll use it for the workaround.


Use API instead of context for fetching labels

What has been done in this PR?
Change the data origin for the labels to the HTTP API by using Octokit. This allows using the action in the same job that updates the labels (using something like TimonVS/pr-labeler-action).
Other changes

Move the whole code of the action inside the run function, as GitHub suggests.
Wrap the action's code in a try/catch to correctly fail on errors.

Hi @danielchabr! Sorry to bother. Any chance this could get reviewed? Thank you very much!


[Blazor] Remove script check for components

We used to have this check to preclude people accidentally adding script tags to their components, since in the context of interactive rendering it does not do what they expect.
As we are rendering components statically in .NET 8.0, this warning/errors creates more problems than it solves, and there is no reason for us to keep it around, and instead, we will let the customers do as they see fit.

@javiercn @chsienki Should this now be closed?

Closed via https://github.com/dotnet/razor/pull/8744


Obtained different PPL for Wikitext and C4 compared to results reported in the paper

Hi, thank you so much for the amazing paper and repo.
I am trying to reproduce the Wikitext and C4 perplexity in the OmniQuant paper. I downloaded the repo and run the following experiment:
CUDA_VISIBLE_DEVICES=0 python main.py --model meta-llama/Llama-2-7b-hf  --epochs 20 --output_dir ./log/llama-7b-w3a16g128 --eval_ppl --wbits 3 --abits 16 --group_size 128 --lwc
As shown in the paper, the ppl for Wikitext and C4 for Llama-2-7B at w3g128 should be 6.03 and 7.75, respectively.
But I obtained the following results from the log.
[2024-09-12 03:20:31 root] (main.py 144): INFO wikitext2 : 6.098666191101074
[2024-09-12 03:23:30 root] (main.py 144): INFO c4 : 7.8100385665893555
Did I set the hyperparameters wrongly? Hope you could help me clarify, thanks!

The checkpoints have some mismatch with current code.
Retrain by yourself through current code can successfully reproduce the results.

Thank you for the quick response!


nushell: 0.93.0 -> 0.94.0

Description of changes
Diff: https://github.com/nushell/nushell/compare/0.93.0...0.94.0
Release notes: https://www.nushell.sh/blog/2024-05-28-nushell_0_94_0.html
Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

The nushellFull package attempts to build the dataframe feature, which has been removed in this nushell release.

nushellFull should probably be removed altogether (or, at least, deprecated).

totally forgot about the full version! i've aliased to nushell with a warning for now. i think it'd be a good idea to fully remove this closer to the release of 24.11 in a few months
backporting this to 24.05 as well since this isn't a breaking change and stable users can be alerted of the deprecation

nice cleanup!
i also noticed this package is not doing it check phase(changed a few months back because of some broken tests in fe856f46a11df0ef160d890fcc94e3e0eded7e50).
, doCheck ? false

can that be changed back to true with this release?

wow 0.94.1 is also out 👀 https://www.nushell.sh/blog/2024-05-30-nushell_0_94_1.html

can that be changed back to true with this release?

i tried this when first updating the package but it looks like we still have some failures with xdg dirs :/
i'll try again with 0.94.1

Nushell 0.94.1 just came out. https://www.nushell.sh/blog/2024-05-30-nushell_0_94_1.html

@getchoo Do you mind updating to the very latest version?

I took @getchoo's great work into https://github.com/NixOS/nixpkgs/pull/316690 that has the plugins updated and is version 0.94.1

see #316690


Allow CSS class strings in JS plugins to be overridden/configured

I'm coming from the context of React+Webpack+CSS modules where I am getting the Bootstrap CSS class names like this in my React component:
import bsStyles from 'bootstrap.css'

// if you're unsure, bsStyles is now a hash of original classes to renamed classes, something like:
{
  collapse: 'bootstrap__collapse___1wPer',
  navbar: 'bootstrap__navbar___2YbzV'
}

Collapsed content

When you use the collapse component that ships with BS, the classes it adds in JS don't exist anymore.
The JS modules that ship with Bootstrap don't allow one to override/set the classes. E.g. imagine being able to do something like:
import collapse from 'bootstrap/dist/js/umd/collapse'

collapse.provideClassNames({ ...bsStyles })

Taking an example of how the current collapse JS module looks:
var ClassName = {
  IN: 'in',
  COLLAPSE: 'collapse',
  COLLAPSING: 'collapsing',
  COLLAPSED: 'collapsed'
};

Could that object be made configurable when the module is included? I would suspect that maybe it needs to be changed to lowercase first since the keys in bsStyles are the original classes with no uppercasing and the object could almost be swapped out exactly for the given replacement (but making sure that the default classes are also defined for the standard Bootstrap use cases):
var ClassName = {
  in: 'in',
  collapse: 'collapse',
  collapsing: 'collapsing',
  collapsed: 'collapsed'
};

Thoughts?

No plans to add this in v4 or v5 at this time.


Initialize volumes when mounted to a host directory

According to the documentation, new volumes should be initialized with the contents of the base image in the volume location.
This indeed works when running docker -v /path/inside/container ..., but not when running docker -v /path/on/host:/path/inside/container.
The documentation doesn't mention there should be a different behavior, so we should either:

Update the documentation to mention that the behavior is different when the volume is bound to a host directory
Find a way to initialize the volume when binding it to a host directory. Perhaps if the host directory does not initially exist, or perhaps with an extra docker flag?

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

We really don't want to do anything to user specified paths.
So this should just be a doc update.
Thanks!


Bad Gist LInk in Readme

In the Readme.md, you have a bad link.
Under the heading Using the Repo, there is a link for an example of how to use the repo. It uses the following link: https://gist.github.com/cyberwombat/11008970
This gist is no longer valid. I get a 404 from github.

Duplicate of #630


Add _0sdp for consistency

Hi.
For consistency reason I think its better to add _0sdp as well.
Sometimes we need to provide 0dp value for layout and there is no equivalent in sdp for the same.
If you want I can do a PR for the same @elhanan-mishraky

I can add it if it will be a popular demand.


Resource with typed member variable or a typed return produces Orphan instance at exit

Godot version:
Godot Engine v3.2.4.beta3.official
OS/device including version:
windows 10
Issue description:
I run into this issue when running a script from command line. It shows this error message at exit.
ERROR: ~List: Condition "_first != __null" is true.
   At: ./core/self_list.h:112
ERROR: ~List: Condition "_first != __null" is true.
   At: ./core/self_list.h:112
WARNING: cleanup: ObjectDB instances leaked at exit (run with --verbose for details).
     At: core/object.cpp:2132
Leaked instance: GDScriptNativeClass:536
Leaked instance: GDScript:1160 - Resource path: res://TestResource.gd
Hint: Leaked instances typically happen when nodes are removed from the scene tree (with `remove_child()`) but not freed (with `free()` or `queue_free()`).
ERROR: clear: Resources still in use at exit (run with --verbose for details).
   At: core/resource.cpp:475
Resource still in use: res://TestResource.gd (GDScript)
Orphan StringName: res://TestResource.gd
Orphan StringName: parent
Orphan StringName: GDScriptNativeClass
Orphan StringName: _name
Orphan StringName: res://TestResource.gd::13::TestResource.set_parent
Orphan StringName: res://TestResource.gd::10::TestResource._init
Orphan StringName: res://TestResource.gd::16::TestResource.name
Orphan StringName: set_parent
Orphan StringName: res://TestResource.gd::19::TestResource.parent
Orphan StringName: _parent
Orphan StringName: name
Orphan StringName: Resource
Orphan StringName: _init
Orphan StringName: GDScript
StringName: 14 unclaimed string names at exit.

This error occures when i use a typed member on a resource class where should be freeing by default if not in use.
Using a untyped member no error is shown.
class_name TestResource
extends Resource

# if using typed var than this line produces the error
# ERROR: clear: Resources still in use at exit
var _parent :TestResource = null

...

Steps to reproduce:

use the attached example project
open windows command console and run 'runScript.bat'

Minimal reproduction project:
orphanResources.zip

It produces also orphans when use a typed return function
class_name TestClass
extends Resource

const WARNINGS = "warnings"
const FAILED = "failed"
const ERRORS = "errors"

enum  {
	INIT,
	STOP,
}

func before(suite_name :String, total_count) -> TestClass:
	return self

Loading resource: res://./addons/gdUnit3/GdTest.gd
Loading resource: res://addons/gdUnit3/src/core/event/TestClass.gd
Loading resource: res://default_env.tres
Loaded builtin certs
ERROR: ~List: Condition "_first != __null" is true.
   At: ./core/self_list.h:112.
ERROR: ~List: Condition "_first != __null" is true.
   At: ./core/self_list.h:112.
WARNING: cleanup: ObjectDB instances leaked at exit (run with --verbose for details).
   At: core/object.cpp:2135.
Leaked instance: GDScript:1160 - Resource path: res://addons/gdUnit3/src/core/event/TestClass.gd
Leaked instance: GDScriptNativeClass:538
Hint: Leaked instances typically happen when nodes are removed from the scene tree (with `remove_child()`) but not freed (with `free()` or `queue_free()`).
ERROR: clear: Resources still in use at exit (run with --verbose for details).
   At: core/resource.cpp:477.
Resource still in use: res://addons/gdUnit3/src/core/event/TestClass.gd (GDScript)
Orphan StringName: total_count
Orphan StringName: STOP
Orphan StringName: before
Orphan StringName: ERRORS
Orphan StringName: res://addons/gdUnit3/src/core/event/TestClass.gd::15::TestClass.before
Orphan StringName: res://addons/gdUnit3/src/core/event/TestClass.gd
Orphan StringName: GDScriptNativeClass
Orphan StringName: WARNINGS
Orphan StringName: res://addons/gdUnit3/src/core/event/TestClass.gd::0::TestClass._init
Orphan StringName: suite_name
Orphan StringName: INIT
Orphan StringName: Resource
Orphan StringName: FAILED
Orphan StringName: _init
Orphan StringName: GDScript
StringName: 15 unclaimed string names at exit.

That is really annoying.
I get now tons of orphan error since i try to execute my project as an CLI tool.
I want to use typed scripts but this bug makes this imposible.
This is an critical issue in my eyes and needs to be fixed as soon as possible.
And please don't say fix only in 4.0.

Not reproducible in 4.0, likely because of the new GDScript parser.

Details
PS D:\Software\godot\bin> .\godot.windows.tools.64.exe -d -s "F:\Godot\bugs\orphanResources_4\OrphanResources.gd" --verbose
Godot Engine v4.0.dev.custom_build.4de0768cd - https://godotengine.org
Using "ICU / HarfBuzz / Graphite" text server...
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
        ReadDataFilesInRegistry: Registry lookup failed to get layer manifest files.
        Objects - 1
                Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle<PHONE_NUMBER>368
     at: VulkanContext::_debug_messenger_callback (drivers\vulkan\vulkan_context.cpp:152)
Using Vulkan Device #0: AMD - Radeon RX 580 Series
Using "wintab" pen tablet driver...
WASAPI: wFormatTag = 65534
WASAPI: nChannels = 2
WASAPI: nSamplesPerSec = 48000
WASAPI: nAvgBytesPerSec = 384000
WASAPI: nBlockAlign = 8
WASAPI: wBitsPerSample = 32
WASAPI: cbSize = 22
WASAPI: detected 2 channels
WASAPI: audio buffer frames: 1962 calculated latency: 44ms

CORE API HASH:<PHONE_NUMBER>601296711
EDITOR API HASH:<PHONE_NUMBER>3697416794

Debugger Break, Reason: 'Parser Error: Identifier "TestResource" not declared in the current scope.'
*Frame 0 - F:/Godot/bugs/orphanResources_4/OrphanResources.gd:5 in function ''
Enter "help" for assistance.
debug> c
SCRIPT ERROR: Parse Error: Identifier "TestResource" not declared in the current scope.
          at: GDScript::reload (F:/Godot/bugs/orphanResources_4/OrphanResources.gd:5)
ERROR: Method/function failed. Returning: ERR_PARSE_ERROR
   at: GDScript::reload (modules\gdscript\gdscript.cpp:832)
PS D:\Software\godot\bin> .\godot.windows.tools.64.exe -d -s "F:\Godot\bugs\orphanResources_4\OrphanResources.gd" --verbose
Godot Engine v4.0.dev.custom_build.4de0768cd - https://godotengine.org
Using "ICU / HarfBuzz / Graphite" text server...
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
        ReadDataFilesInRegistry: Registry lookup failed to get layer manifest files.
        Objects - 1
                Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle<PHONE_NUMBER>464
     at: VulkanContext::_debug_messenger_callback (drivers\vulkan\vulkan_context.cpp:152)
Using Vulkan Device #0: AMD - Radeon RX 580 Series
Using "wintab" pen tablet driver...
WASAPI: wFormatTag = 65534
WASAPI: nChannels = 2
WASAPI: nSamplesPerSec = 48000
WASAPI: nAvgBytesPerSec = 384000
WASAPI: nBlockAlign = 8
WASAPI: wBitsPerSample = 32
WASAPI: cbSize = 22
WASAPI: detected 2 channels
WASAPI: audio buffer frames: 1962 calculated latency: 44ms

CORE API HASH:<PHONE_NUMBER>601296711
EDITOR API HASH:<PHONE_NUMBER>3697416794

Debugger Break, Reason: 'Parser Error: Identifier "TestResource" not declared in the current scope.'
*Frame 0 - F:/Godot/bugs/orphanResources_4/OrphanResources.gd:5 in function ''
Enter "help" for assistance.
debug> q
CrashHandlerException: Program crashed
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[0] SceneTree::quit (D:\Software\godot\scene\main\scene_tree.cpp:539)
[1] LocalDebugger::debug (D:\Software\godot\core\debugger\local_debugger.cpp:277)
[2] ScriptDebugger::debug (D:\Software\godot\core\debugger\script_debugger.cpp:100)
[3] GDScriptLanguage::debug_break_parse (D:\Software\godot\modules\gdscript\gdscript_editor.cpp:240)
[4] GDScript::reload (D:\Software\godot\modules\gdscript\gdscript.cpp:824)
[5] GDScriptCache::get_full_script (D:\Software\godot\modules\gdscript\gdscript_cache.cpp:211)
[6] ResourceFormatLoaderGDScript::load (D:\Software\godot\modules\gdscript\gdscript.cpp:2325)
[7] ResourceLoader::_load (D:\Software\godot\core\io\resource_loader.cpp:194)
[8] ResourceLoader::_thread_load_function (D:\Software\godot\core\io\resource_loader.cpp:221)
[9] ResourceLoader::load (D:\Software\godot\core\io\resource_loader.cpp:578)
[10] Main::start (D:\Software\godot\main\main.cpp:1992)
[11] widechar_main (D:\Software\godot\platform\windows\godot_windows.cpp:161)
[12] _main (D:\Software\godot\platform\windows\godot_windows.cpp:185)
[13] main (D:\Software\godot\platform\windows\godot_windows.cpp:199)
[14] __scrt_common_main_seh (d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[15] BaseThreadInitThunk
-- END OF BACKTRACE --

Not reproducible in 3.2 main, too.

Details
PS D:\Software\godot32\bin> .\godot.windows.tools.64.exe -d -s "F:\Godot\bugs\orphanResources\OrphanResources.gd" --verbose
Godot Engine v3.2.4.rc.custom_build.8a020a657 - https://godotengine.org
Using GLES3 video driver
OpenGL ES 3.0 Renderer: Radeon RX 580 Series
OpenGL ES Batching: ON
        OPTIONS
        max_join_item_commands 16
        colored_vertex_format_threshold 0.25
        batch_buffer_size 16384
        light_scissor_area_threshold 1
        item_reordering_lookahead 4
        light_max_join_items 32
        single_rect_fallback False
        debug_flash False
        diagnose_frame False
WASAPI: wFormatTag = 65534
WASAPI: nChannels = 2
WASAPI: nSamplesPerSec = 48000
WASAPI: nAvgBytesPerSec = 384000
WASAPI: nBlockAlign = 8
WASAPI: wBitsPerSample = 32
WASAPI: cbSize = 22
WASAPI: detected 2 channels
WASAPI: audio buffer frames: 1962 calculated latency: 44ms

CORE API HASH:<PHONE_NUMBER>587898049
EDITOR API HASH:<PHONE_NUMBER>2510104001
Loading resource: F:/Godot/bugs/orphanResources/OrphanResources.gd

Debugger Break, Reason: 'Parser Error: The identifier "TestResource" isn't declared in the current scope.'
*Frame 0 - F:/Godot/bugs/orphanResources/OrphanResources.gd:5 in function ''
Enter "help" for assistance.
debug> c
SCRIPT ERROR: GDScript::reload: Parse Error: The identifier "TestResource" isn't declared in the current scope.
          At: F:/Godot/bugs/orphanResources/OrphanResources.gd:5
ERROR: GDScript::reload: Method failed. Returning: ERR_PARSE_ERROR
   At: modules\gdscript\gdscript.cpp:583
PS D:\Software\godot32\bin> .\godot.windows.tools.64.exe -d -s "F:\Godot\bugs\orphanResources\OrphanResources.gd" --verbose
Godot Engine v3.2.4.rc.custom_build.8a020a657 - https://godotengine.org
Using GLES3 video driver
OpenGL ES 3.0 Renderer: Radeon RX 580 Series
OpenGL ES Batching: ON
        OPTIONS
        max_join_item_commands 16
        colored_vertex_format_threshold 0.25
        batch_buffer_size 16384
        light_scissor_area_threshold 1
        item_reordering_lookahead 4
        light_max_join_items 32
        single_rect_fallback False
        debug_flash False
        diagnose_frame False
WASAPI: wFormatTag = 65534
WASAPI: nChannels = 2
WASAPI: nSamplesPerSec = 48000
WASAPI: nAvgBytesPerSec = 384000
WASAPI: nBlockAlign = 8
WASAPI: wBitsPerSample = 32
WASAPI: cbSize = 22
WASAPI: detected 2 channels
WASAPI: audio buffer frames: 1962 calculated latency: 44ms

CORE API HASH:<PHONE_NUMBER>587898049
EDITOR API HASH:<PHONE_NUMBER>2510104001
Loading resource: F:/Godot/bugs/orphanResources/OrphanResources.gd

Debugger Break, Reason: 'Parser Error: The identifier "TestResource" isn't declared in the current scope.'
*Frame 0 - F:/Godot/bugs/orphanResources/OrphanResources.gd:5 in function ''
Enter "help" for assistance.
debug> q
CrashHandlerException: Program crashed
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[0] SceneTree::quit (D:\Software\godot32\scene\main\scene_tree.cpp:647)
[1] ScriptDebuggerLocal::debug (D:\Software\godot32\core\script_debugger_local.cpp:214)
[2] GDScriptLanguage::debug_break_parse (D:\Software\godot32\modules\gdscript\gdscript_editor.cpp:230)
[3] GDScript::reload (D:\Software\godot32\modules\gdscript\gdscript.cpp:580)
[4] ResourceFormatLoaderGDScript::load (D:\Software\godot32\modules\gdscript\gdscript.cpp:2246)
[5] ResourceLoader::_load (D:\Software\godot32\core\io\resource_loader.cpp:270)
[6] ResourceLoader::load (D:\Software\godot32\core\io\resource_loader.cpp:384)
[7] Main::start (D:\Software\godot32\main\main.cpp:1651)
[8] widechar_main (D:\Software\godot32\platform\windows\godot_windows.cpp:160)
[9] _main (D:\Software\godot32\platform\windows\godot_windows.cpp:184)
[10] main (D:\Software\godot32\platform\windows\godot_windows.cpp:196)
[11] __scrt_common_main_seh (d:\agent\_work\63\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[12] BaseThreadInitThunk
-- END OF BACKTRACE --

your reports shows some crashes!

Yeah, but not related to this issue. The debugger crashes on quit and I believe this is intended

I executed your script twice. The first time (when I continue execution), you only get a parser error.

hm ok you used latest v3.2.x build right?
I will try with nightly build, give me some minutes ;)

Very NICE!!!!!
I take some small tests on my Mac based on (Godot_v3.2.4-rc2_osx.universal.zip) and it works.
That saves my day, i'm happy.
Thanks

We get the crash, because godot only executes the script. This might also lead to the parser error (I guess). I am not familiar with the command line options. Can't you run the whole project and start "OrphanResources.gd" attached to a tree.

So i guess this can be closed as solved with V3.2.4_rc2 :)

I think so.


Check overflow on device without host synchronization for each tensor

@BacharL, can you please help with the formatting issues? Thanks!


Adds contribuiting and code of conduct pages.

Related to https://github.com/maliput/maliput_infrastructure/issues/135
For reviewers
index.zip
Here is the generated HTML for index pages.

I'd like your insight @tfoote in the addition of these pages

For the code of conduct I'd recommend using the Open Robotics Code of Conduct from: https://github.com/osrf/code_of_conduct#readme

@tfoote Sorry, that link isn't valid. I assume you mean to https://osrf.github.io/code_of_conduct/, correct?
Assuming that's the one, is that ok to use it even though there are so many references to the ROS community? I am saying so because the one I had picked (https://www.contributor-covenant.org/) was pretty general for open source projects, without references to any other communities.

Yes sorry i linked to the source for that not the generated one. I didn't realize it was private. The most important thing about having the code of conduct is having an entity who will enforce it. As these are ROS packages and we're in the ROS community Open Robotics is willing to play that role if necessary to protect the community.
A covenant without enforcement is bad as it suggests that you'll protect people but without the enforcement mechanism then you're giving people a false sense of safety.

Yes sorry i linked to the source for that not the generated one. I didn't realize it was private. The most important thing about having the code of conduct is having an entity who will enforce it. As these are ROS packages and we're in the ROS community Open Robotics is willing to play that role if necessary to protect the community.
A covenant without enforcement is bad as it suggests that you'll protect people but without the enforcement mechanism then you're giving people a false sense of safety.

Great explanation. Fully agree with your vision, thanks for this.

Done! @agalbachicar @tfoote


how can i get the current day for the calendar and the have that day selected

how can i get the current day for the calendar and the have that day selected the first time the calendar loads

let currentDay = Date()
calendarView.selectDate(currentDay)

Let me know if you are still stuck


[Accordion] opening accordion should not unhide all tabs in content

Hi all,
I'm using accordion with some tabs nested in it's content. I was expecting that opening the accordion will show up the active tab, but accordion forces showing up all data-tab contents. Tried to workaround it by removing 'transition visible' classes and clearing up style attr on onOpen callback but no luck.
Testcase:
http://jsfiddle.net/c89x3jts/1/

Would be nice if the Testcase won´t link to the default template from semantic-ui.
Maybe a look at the docs under Accrodion/Settings and then the settings under Behavior will help you?
Can´t help any more because I don´t really understand your problem here.

I've updated the testcase link. Now it should show the correct testcase.

For me there is still the default example. Tested in Chrome and Firefox

Please check the Multiple Tab Groups section from http://semantic-ui.com/modules/tab.html#/examples

Recreated testcase from the ground up: http://jsfiddle.net/svzvtn48/

@IonutBajescu thanks! This solves this issue.

This is a setting animateChildren, which defaults to true.
http://jsfiddle.net/0q6pxgmx/


Add rclone support for moving files

It would be nice to have older VODs automatically be moved to different storage. rclone supports many different file providers and I believe this would work best for this feature.

i thought about this when adding ftp support, never used rclone myself so don't really know how it works, but should be possible

https://github.com/sntran/rclone.js

tiny package it seems like, not really trusting that... i'd rather just use exec like the others

rclone also has a built in API if you'd prefer to access it that way.

seems to work, cool program with those remote profiles. place rclone.conf in config and specify in the exporter

Weird, pulled the new update from the developer branch and I'm not seeing the rclone option.

are you using the vod or file export menu? because i haven't synced the options on the latter for a while

I see now, but I don't understand the directory and remote fields, can you explain them?

directory is where on the remote storage you want the file to be stored
remote is the profile you set up via rclone config, you call it something there and then use that inside the exporter
i have only tested this with sftp, not sure if others make separate files

Ah, I'm an idiot, the Docker container didn't have rclone installed.

Would love some automation with this. Something like a default exporter per channel with a default folder and a default export age. So a cron would check for files created more than x days ago, then export them and then delete them. You can also use rclone move instead of copy which moves the file, checks that the file has been moved, and then deletes the original. Would also be nice to see this reflected somehow in the UI showing that the file is no longer local.

I also understand this is a lot of work you're putting in so if you have a donation link or something, please let me know!

i'd need to plan out something, but a status showing whether something has been exported could be useful.
thanks. i've been hesitant to make a donation page because of the need for filing taxes, but i guess i could manage.
https://ko-fi.com/mrbrax

Wish I could send more. Love the project!

Just checked my FTP server and it seems an apostrophe is being added somewhere that is creating a directory for it on the remote server: https://i.tony.pm/cBL4pqN.png

Possibly? on this line https://github.com/MrBrax/LiveStreamDVR/commit/977ec8259c2a9a337d8f12e1f47ce19011facaa6#diff-dff74dead61bd3c29d8b26e594cf34f04b7aef20985271a25f448fbcf60cbfe2R39

probably, but escaping the paths is janky as hell, sometimes it works when it's not escaped and sometimes it doesn't, so i check it beforehand

i can't really find a good test ftp server, probably since nobody really uses it anymore

Just to clarify, SFTP via rclone is where I'm running into the issue. I have a 20TB Hetzner Storage Box in Germany to back up all of my files. In the hosting industry, they're used often.

Also, adding a button per channel would be nice since rclone supports just passing an entire directory.

oh ok so not plain ftp then.
i'll probably focus on being able to export a single vod folder instead of just the video file, having a mass option depends on how that will be implemented


Multiple databases with OQS

Is this:
Just place "x" to indicate selection (e.g. "[x]")

[x] feature
[] bug:

Details
If I have multiple databases, on a single instance, in which I want to activate OQS, the procedure "master.dbo.open_query_store_startup" only will start the last database in which OQS was installed. it should support multiple databases.

ok, so this is multiple installations of OQS, each running in "classic" mode, right?
We really haven't thought of that before. We assumed one classic installation per instance, after that the "centralized" mode makes more sense to us.
Is centralized mode not right for you in this case?


[INFRA-7697] Fix service delete race condition

Prevent creating new ServiceStatusSnapshots during Service deletion by adding a deleted column to Service. In the pre_delete handler, we set this column to True. In Service.update_status(), we return early if this flag is set.
I also marked Service.update_status as atomic because the test flakes without it. I'm not 100% sure why this fixes it, or if this is even the right fix.
Also adds a test for deleting a service that has a lot of snapshots while new snapshots are being created.

This still doesn't work with MySQL.

@elainearbaugh I think this is ready for re-review. I simplified it quite a bit (just added SELECT FOR UPDATE to lock in two places, instead of adding a whole extra column).


引用G6报错  dependencies were not found：gl-matrix/vec2 gl-matrix/vec3

import G6 from '@antv/g6';
报错信息：
**These dependencies were not found:

gl-matrix/vec2 in<EMAIL_ADDRESS>gl-matrix/vec3 in<EMAIL_ADDRESS>尝试npm install  gl-matrix/vec2 gl-matrix/vec3 时npm报错，是不是这两个包没有了啊

G6版本4.3.8

I got it to work by:

removing  && npm run build:mobile here https://github.com/antvis/G6/blob/master/package.json#L19 as the mobile account isn't there
removing "eslint-plugin-import": "^2.22.1", here https://github.com/antvis/G6/blob/master/package.json#L56 because it was duplicate din the devDependencies
forced "gl-matrix": "3.0.0", above this line to get rid of the error you're facing https://github.com/antvis/G6/blob/master/package.json#L79

I have a similar issue with<EMAIL_ADDRESS>in React, any solution?

我也有这个问题请问解决了吗


Exception handler for annotated services

Currently there is no way to handle an exception raised from an annotated service method. It would be useful if we introduce a simple exception handling mechanism like spring @ExceptionHandler annotation.

@yuinacor You had some opinion on this before. Any suggestions?

Also, no way to handle null which is returned from the service method, because the converters are based on the type of class defined by a user. Need to figure out a better way to handle responses.

public class Service {

  @Converter(JsonConverter.class)
  @ExceptionHandler({IOException.class})
  public CompletableFuture<Model> handle(..){
     ....
  }
}

so we need ExceptionHandler
handle method can return Completable<T> or T. T can be type that converter can handle HttpResponse/AggregatedHttpMessage/converter target.
parameter can handle ServiceRequestContext, httpRequest, AggregatedHttpMessage, HttpParameters. No @Param or  @Path.
How do you think?
I also want to add annotation like @ResponseStatus(404, json). But looks like it doesn't works well with converter. So give up this idea.

@kojilin Basically I agree with you. 👍 I think we need to do dog-fooding your implementation to figure out more convenient way than Spring's exception handling mechanism. We may have better idea after that.

@yuinacor Any comments?

@kojilin Hello! Do you have any progress on this issue? 😃 If you didn't start writing code yet, could I take this issue? I think I can implement a simple exception handler with a similar idea to @Decorate annotation implementation.

Ah, thanks, please

Merged #847 . Close this issue.


Rely on awk and procps being installed in the openjdk containers

This improves the test coverage here to ensure the packages are not forgotten.
Depends-On: https://github.com/SUSE/BCI-dockerfile-generator/pull/1349

Blocking as it breaks the CI at the moment. We can merge it once we fixed the containers.

containers are fixed.

Looks like there's a new issue with cassandra that is unrelated to this PR:
DEBUG    testinfra:base.py:328 RUN CommandResult(backend=<testinfra.backend.docker.DockerBackend object at 0x7f1dfe378fa0>, exit_status=0, command=b"docker exec 68609f79d7928c9c1a1932d0507f043278527c3b5d6c078fac60ecd24a899555 /bin/sh -c 'cat -- /var/log/cassandra.log'", _stdout=b'Cassandra 4.0 requires either Java 8 (update 151 or newer) or Java 11 (or newer).\n', _stderr=b'')

Looks like there's a new issue with cassandra that is unrelated to this PR:
DEBUG    testinfra:base.py:328 RUN CommandResult(backend=<testinfra.backend.docker.DockerBackend object at 0x7f1dfe378fa0>, exit_status=0, command=b"docker exec 68609f79d7928c9c1a1932d0507f043278527c3b5d6c078fac60ecd24a899555 /bin/sh -c 'cat -- /var/log/cassandra.log'", _stdout=b'Cassandra 4.0 requires either Java 8 (update 151 or newer) or Java 11 (or newer).\n', _stderr=b'')

no, it's related. the issue is that cassandra needs awk at runtime, so the patch doesn't work. I'm still undecided what to do about it. we could install it in the openjdk container or not merge this PR.


push.on('notification') is fired only when receive the first push when the app is in foreground (iOS and Android)

Expected Behaviour
When the app is in foreground it should be able to receive many push notifications firing push.on('notification');
Actual Behaviour
When the app is in foreground push.on('notification'); is fired only when receive the first push notification. When receive the second is not fired.
When the app is in background or closed every push notification is received correctly.
Reproduce Scenario (including but not limited to)
Steps to Reproduce

Open the app
the app is in foreground
Send a first push notification
The push.on('notification') method is fired
Send a second push notification
The push.on('notification') method is NOT fired
Send a third push notification
The push.on('notification') method is NOT fired and so on

Platform and Version
Same behaviour on:

Android 6
Android 5.5
iOS 9.3.1

What device vendor

Moto G 3 gen. Android 6
Samsung Galaxy Note 4 Android 5.5
iPhone 6 Plus iOS 9.3.1
iPhone 5s iOS 9.3.1

Cordova CLI version and cordova platform version
cordova --version
5.4.1

cordova platform versions
android 4.1.1
ios 4.1.1

Plugin version
phonegap-plugin-push 1.6.2 "PushPlugin"

Logs taken while reproducing problem
Log iOS:
First push:
didReceiveNotification with fetchCompletionHandler
app active
Notification received
Push Plugin key: alert
Push Plugin key: badge
Push Plugin finish called
Push Plugin stopBackgroundTask called

Second push:
didReceiveNotification with fetchCompletionHandler
app active
Notification received
Push Plugin key: alert
Push Plugin key: badge

Log Android
First push:
PushPlugin_GCMIntentService: onMessage - from:<PHONE_NUMBER>81
PushPlugin_GCMIntentService: normalize extras
PushPlugin_GCMIntentService: key = gcm.notification.e
PushPlugin_GCMIntentService: replace key gcm.notification.e with e
PushPlugin_GCMIntentService: key = gcm.notification.title
PushPlugin_GCMIntentService: replace key gcm.notification.title with title
PushPlugin_GCMIntentService: key = gcm.notification.body
PushPlugin_GCMIntentService: replace key gcm.notification.body with message
PushPlugin_GCMIntentService: key = collapse_key
PushPlugin_GCMIntentService: replace key collapse_key with collapse_key
PushPlugin_GCMIntentService: foreground
PushPlugin: convert extras to json
PushPlugin: key = e
PushPlugin: key = title
PushPlugin: key = message
PushPlugin: key = collapse_key
PushPlugin: key = foreground
PushPlugin: extrasToJSON: {"title":"wwwww","message":"wwwww","additionalData":{"e":"1","collapse_key":"com.example","foreground":true}}

Second push:
PushPlugin_GCMIntentService: onMessage - from:<PHONE_NUMBER>81
PushPlugin_GCMIntentService: normalize extras
PushPlugin_GCMIntentService: key = gcm.notification.e
PushPlugin_GCMIntentService: replace key gcm.notification.e with e
PushPlugin_GCMIntentService: key = gcm.notification.title
PushPlugin_GCMIntentService: replace key gcm.notification.title with title
PushPlugin_GCMIntentService: key = gcm.notification.body
PushPlugin_GCMIntentService: replace key gcm.notification.body with message
PushPlugin_GCMIntentService: key = collapse_key
PushPlugin_GCMIntentService: replace key collapse_key with collapse_key
PushPlugin_GCMIntentService: foreground
PushPlugin: convert extras to json
PushPlugin: key = e
PushPlugin: key = title
PushPlugin: key = message
PushPlugin: key = collapse_key
PushPlugin: key = foreground
PushPlugin: extrasToJSON: {"title":"eeeeee","message":"eeeeee","additionalData":{"e":"1","collapse_key":"com.example","foreground":true}}

@manzapanza Yeah, but what does your push.on('notification') handler look like? It seems by those logs everything is fine with the native side. What are you seeing in the JS console when you receive a push?

I'm so sorry @macdonst to waste your time!
I had implemented using promises but obviously resolve resolve the promise only one time.  Using notify works perfectly.
My method was:
self.onNotification = function(){
  var deferred = $q.defer();
  _instance.on('notification', function(data) {
    deferred.resolve(data);
  });
  return deferred.promise;
};

that I changed to:
self.onNotification = function(){
  var deferred = $q.defer();
  _instance.on('notification', function(data) {
    deferred.notify(data);
  });
  return deferred.promise;
};

Thank you. You can close this issue!

@manzapanza okay, cool. Glad you got it sorted.

I ran into a similar issue but turns out, calling .init() on app resume seemed to be preventing the notification callback from firing over and over. The documentation suggests calling .init() often, even during the app resume. If there another place we can call .init() to ensure the 3rd party push service still has our information?

@trazek
What do you mean by ensuring the 3rd party push service still has our information?
init.() should only be called once per lifecycle of the application, and presumably and preferably right after the deviceready event has fired.
If you're worried about always having the most up-to-date registrationId, then you should use the registration event, as you should already be.

@fredgalvao
I was referring to this note in the documentation:

Note: you will want to call PushNotification.init() each time your app starts. The remote push service can periodically reset your registration ID so this ensures you have the correct value.

Maybe I misunderstand what each time your app starts means. If we can just call .init() once and never again for the life of the app, cool.
Thanks

@trazek Your app starting is when it goes from not running at all to being loaded in memory. As @fredgalvao said that's where you want to call init after you get the deviceready event. If the app is in the background and you are resuming it then you don't need to call init.

@macdonst Thank you for the clarification. Makes perfect sense.

In my case, it was the issue with checking the platform ready. I had no check for platform ready in the function. Once after I added this.platform.ready() event, I started receiving notifications all the time.


Hacktober Feature Request: Document how to run website locally

Describe the feature

Instructions are added to the readme for how to run the website locally.

Advantages

Helps others to test their changes.

Acceptance Criteria
Functional and non-functional criteria that should be met by this work

[ ] The readme instructions can be followed to run the website locally.

Hey..looks like this has been completed already.

You are quite right. Sorry about that. I will close this issue.


ComboBox PointerWheelChanged not firing

Describe the bug
When using the Combobox and using the PointerWheelChanged event, is does not trigger when one tries to scroll.
To Reproduce
Create a Combobox, create a method to listen for the PointerWheelChanged event
Expected behavior
Should fire the same way as it does for the Datagrid to be able to load Usernames to select, for example dynamically.
Avalonia version
11.1.3
OS
Windows
Additional context
I wanted to use the Combobox to select a user responsible for a task and as i did not want to load all users at once i wanted to implement infinite scroll via the PointerWheelChanged event.

Have you tried a tunneling event? Controls themselves will typically have the first bite of a bubbling event and potentially handle it. If you're specifying the event handler in XAML, it's always a bubbling event. You need to manually AddHandler to create tunneling events.

@WoistdasNiveau maybe you can also try AutoCompleteBox. It has an option for loading items async and user can start typing any character to search for users.


Add xcdat.open() to wrap xcdat.open_dataset() and xcdat.open_mfdataset()

Is your feature request related to a problem? If yes, Please describe

Suggesting a thin wrapper for opening files. Because cdscan-generated xml is still a major part of the PCMDI’s CMIP database, having the capability of open xmls in addition would help buying some time when transitioning PMP to use xcdat.
Describe your proposed solution

xcdat.open(input)
If input is string and .nc file, use xcdat.open_dataset
If input is list of .nc files, use xcdat.open_mfdataset
If input is string and .xml file, read xml (which is ascii file) and find where linked .nc files are, and depending if linked data file is single .nc file or multiple .nc files, use xcdat_opendataset or xcdat.open_mfdataset
Describe alternatives solutions you've considered

Additional context

@pochedls's comment:
"To query for CMIP paths, you need to import xrw (here) and call xrw.get_cmip_paths(). Alternatively, I think you could open an xml file following something like this. This is all “scratch” code…"

@tomvothecoder @lee1043 happy to be an ocean guinea pig for this, so large (multi 10GB) files


Chainflip Integration - Bounty Request

Description
A connector to Chainflip
Chainflip is a cross-chain DEX built on substrate, supporting native BTC, ETH (USDC and USDT), DOT, FLIP and Arbitrum (ETH.arb and USDC.arb).
The goal with this connector is to allow retail liquidity providers to conduct both PMMM and XEMM strategies, making markets on Chainflip's variety of pairs. The Chainflip community has been eagerly awaiting the ability to expand liquidity and increase the number of market makers on the protocol and I think a Hummingbot connector is the perfect fit.

Chainflip Docs
Chainflip Github

Bounty

Sponsor: Chainflipgod (humble Chainflip community member)
Bounty amount: 1,500,000 HBOT
Developer portion: 90%

HI @chainflipgod , I will like to be assigned this task.

hi @chainflipgod to open this bounty you need to fund the bounty (send the full bounty amount to Foundation wallet)
https://hummingbot.org/bounties/lifecycle/#4-fund-bounty
You could find official wallets here:
https://hummingbot.org/bounties/sponsors/#official-foundation-bounty-wallets

Hi @nikspz, bounty is funded with 1,510,000 HBOT! Let me know if you need anything else at this time

Assigned to @KodeSage , please be informed:

Since you’re assigned to this bounty exclusively, please keep us informed on your progress over the next few days
Please review and follow contribution guidelines (https://hummingbot.org/developers/contributions/)
Please review the checklist after PR submitted (https://hummingbot.org/developers/contributions/#checklist)
Let us know if you don’t have time, and we will unassigned and keep it open for other devs
Only one dev can be assigned to one bounty

Thanks for your contribution!

Stoked @nikspz and excited to see the progress @KodeSage !

so If I may get you clearly @fengtality , I will still have to add a gateway connectors in the https://github.com/hummingbot/gateway repo right and support Chainflip as an new EVM-based chain and Dex?

@KodeSage Yes, please feel free to check / submit 2 PRs for both Hummingbot and Gateway repo
You could check TELOS PRs as example, here aare the links
https://snapshot.org/#/hbot-ncp.eth/proposal/0x07becad3e986cc1b5526be9ec2f39b1f93229d457cdc3cac188bf10bd6f60433

feel free to tag me when you got some chainflip specific questions, I'm a community member who uses the lp api a bit and will try to help you out :)

@fengtality @CumpsD I need an LP api for ChainFlip.

@CumpsD @fengtality @chainflipgod  , just as uniswap has/have an SmartOrderRouterAddress , NftManagerAddress and QuoterV2ContractAddress, do chainflip have similar or a more better address like this? cuase I will needing it too.

@CumpsD @fengtality @chainflipgod , just as uniswap has/have an SmartOrderRouterAddress , NftManagerAddress and QuoterV2ContractAddress, do chainflip have similar or a more better address like this? cause I will be needing it too.
I need it to know the slippage, the gas estimate fee and the contract address for the lp provider.

feel free to tag me when you got some chainflip specific questions, I'm a community member who uses the lp api a bit and will try to help you out :)

i wii need some pointers please on the lp api

So to run chainflip-lp-api you can use this docker compose:
services:
  lp:
    image: chainfliplabs/chainflip-lp-api:berghain-1.4.5
    pull_policy: always
    stop_grace_period: 5s
    stop_signal: SIGINT
    platform: linux/amd64
    restart: unless-stopped
    user: root
    ports:
      - "<IP_ADDRESS>:10589:80"
    environment:
      - RUST_LOG=info
    volumes:
      - .:/etc/chainflip/keys
    entrypoint:
      - /usr/local/bin/chainflip-lp-api
    command:
      - --state_chain.ws_endpoint=wss://mainnet-rpc.chainflip.io:443
      - ```

This is basically the following dockerized: https://docs.chainflip.io/lp/integrations/lp-api

You will need to create an LP account to use this, you can do this at https://lp.chainflip.io/

After doing so, you will have to save the private key as `signing_key_file` next to the docker compose, so it can be mapped into `/etc/chainflip/keys`

Chainflip LP does not work with smart contracts, everything is RPC calls:
* https://docs.chainflip.io/lp/integrations/lp-api#rpc-methods

The most important ones will likely be:
* https://docs.chainflip.io/lp/integrations/lp-api#lp_set_limit_order
* https://docs.chainflip.io/lp/integrations/lp-api#lp_update_limit_order

---
> I need it to know the slippage, the gas estimate fee and the contract address for the lp provider.
Dont know enough about Hummingbot to understand this question
---
> i wii need some pointers please on the lp api on how you gets the pairs and all that.
This is an RPC call on the chainflip-node I believe, we will have to ask that from the chainflip team on their Discord

@nikspz @fengtality I dont think you need to add Chainflip as an EVM-chain? Chainflip is not a chain you can send assets on, it's an application-chain built on Substrate.
Users can swap assets cross chain on it. Chainflip generates a deposit address for them, the user sends their funds to it, the funds get swapped and sent out on the other chain. (Not relevant for hummingbot, but this happens by 150 validators witnissing the incoming swap, and signing the outgoing tx)
For Hummingbot users, what matters is them placing limit orders on asset pairs they want to provide liquidity in. They do this by calling RPC methods on the chainflip-lp-api process the user has running, which in turn submits transactions to this application-chain, signed with the user their keys.
Please correct me if I'm wrong, I dont know the Hummingbot terminology enough.

For Hummingbot users, what matters is them placing limit orders on asset pairs they want to provide liquidity in. They do this by calling RPC methods on the chainflip-lp-api process the user has running, which in turn submits transactions to this application-chain, signed with the user their keys.

In addition, its also possible to manage orders by submitting transactions to a public RPC endpoint instead of running an LP API executable. If i understand the usecase right, this might be preferable because signing/submitting transactions can be implemented in the hummingbot code without needing the user to run a LP API executable.
As Chainflip is a substrate blockchain, transactions need to be signed similar to Polkadot transactions. I dont have experience with the python ecosystem, but it looks like py-substrate-interface provides an interface to do this from within python code.
For managing orders, the relevant extrinsics should be liquidityPools.setLimitOrder and liquidityPools.setRangeOrder. An interactive reference of all available extrinsics can be found here: https://polkadot.js.org/apps/?rpc=wss://mainnet-rpc.chainflip.io#/extrinsics
Unfortunately, the polkadotjs interface does not include textual documentation, but the relevant extrinsics are very similar to the respective LP API methods which are documented here: https://docs.chainflip.io/lp/integrations/lp-api

For Hummingbot users, what matters is them placing limit orders on asset pairs they want to provide liquidity in. They do this by calling RPC methods on the chainflip-lp-api process the user has running, which in turn submits transactions to this application-chain, signed with the user their keys.

In addition, its also possible to manage orders by submitting transactions to a public RPC endpoint instead of running an LP API executable. If i understand the usecase right, this might be preferable because signing/submitting transactions can be implemented in the hummingbot code without needing the user to run a LP API executable.
As Chainflip is a substrate blockchain, transactions need to be signed similar to Polkadot transactions. I dont have experience with the python ecosystem, but it looks like py-substrate-interface provides an interface to do this from within python code.
For managing orders, the relevant extrinsics should be liquidityPools.setLimitOrder and liquidityPools.setRangeOrder. An interactive reference of all available extrinsics can be found here: https://polkadot.js.org/apps/?rpc=wss://mainnet-rpc.chainflip.io#/extrinsics
Unfortunately, the polkadotjs interface does not include textual documentation, but the relevant extrinsics are very similar to the respective LP API methods which are documented here: https://docs.chainflip.io/lp/integrations/lp-api

Thank you for this @niklasnatter , this comment/feedback has given me a great insight on what to do now and  I have gotten most of the pointers I need to work on.
@nikspz expect a PR very soon.
Kudos for your help too @CumpsD.

@nikspz @fengtality could you help me get a better understanding on hummingbot why this would be gateway connector please? and not more lika for example polkadex in the hummingbot repo (without a gateway)?

From your site it looks like chainflip is an AMM. Hummingbot AMM connectors
utilize Gateway middleware by convention, while CLOB connectors like
Polkadex are via the core client directly
On Tue, Jul 23, 2024, 2:01 PM David Cumps @.***> wrote:

@nikspz https://github.com/nikspz @fengtality
https://github.com/fengtality could you help me get a better
understanding on hummingbot why this would be gateway connector please? and
not more lika for example polkadex in the hummingbot repo (without a
gateway)?
—
Reply to this email directly, view it on GitHub
https://github.com/hummingbot/hummingbot/issues/7125#issuecomment-2246306555,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANWHVQCV4GY2AJM7MJXR6LZN3ABZAVCNFSM6AAAAABKZFPQCCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBWGMYDMNJVGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

@fengtality yeah, you could kind of compare it with uniswap v3, with an HTTP api (or direct substrate integration, but that's probably too hard)
LPs run an RPC node + wrapper executable (chainflip-lp-api) which exposes a HTTP endpoint accepting RPC calls to place new limit orders and update/remove existing ones.
Various other sources provide data on orderbook and pricing.
It was not clear to me, it seemed all gateway connectors are intended to bridge smart contracts (like uniswap) to a REST like interface, while the connectors in hummingbot talk to HTTP (exchange) endpoints. Which was why I was not 100% sure if a gateway connector was the way to do it, since you're implementing HTTP and WS endpoints?

From your site it looks like chainflip is an AMM. Hummingbot AMM connectors utilize Gateway middleware by convention, while CLOB connectors like Polkadex are via the core client directly
…
On Tue, Jul 23, 2024, 2:01 PM David Cumps @.> wrote: @nikspz https://github.com/nikspz @fengtality https://github.com/fengtality could you help me get a better understanding on hummingbot why this would be gateway connector please? and not more lika for example polkadex in the hummingbot repo (without a gateway)? — Reply to this email directly, view it on GitHub <#7125 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANWHVQCV4GY2AJM7MJXR6LZN3ABZAVCNFSM6AAAAABKZFPQCCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBWGMYDMNJVGU . You are receiving this because you were mentioned.Message ID: @.>

The nomenclature on Chainflip is that it's a "just-in time liquidity AMM", but the simplest comparison is that spot central limit order book, built on substrate.
Pretty much all of the Maker flow that gets filled is in the form of constantly updated limit orders. For the purposes of this bot, we can likely ignore range orders on Chainflip as they are not prioritized when filling liquidity (IE two orders at the same price, a limit order liquidity position and a range order, the limit order will get filled).

Yeah, it's closer to a CLOB than AMM actually @fengtality

I think you guys should define what endpoints the connector should support
and what strategies it should integrate into before the dev starts the
work. We also need to know what to look for in the review process. Since
this is not a standard connector, this work is necessary before any dev
work starts
On Wed, Jul 24, 2024, 1:49 PM David Cumps @.***> wrote:

Yeah, it's closer to a CLOB than AMM actually @fengtality
https://github.com/fengtality
—
Reply to this email directly, view it on GitHub
https://github.com/hummingbot/hummingbot/issues/7125#issuecomment-2248873138,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANWHVTMOK6HEU4HP5Y6DKDZOAHNLAVCNFSM6AAAAABKZFPQCCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBYHA3TGMJTHA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Let me look into the endpoints. I'm also not personally a Chainflip team member but I'm close with the team, so I will see if I can possibly make them available to provide more color and support in this integration as well.
As far as strategies go, I think XEMM (cross-exchange market making) is most important for this. Pure market making is probably a nice added bonus, but most of the liquidity I imagine will be a XEMM strategy.
But Chainflip is a DEX that supports native BTC, ETH, USDT, USDC and DOT. Most of the liquidity is provided from professional market makers via their custom cross-chain market making. My hope with this Hummingbot connection is/was to make it easier for people to do cross-exchange market making on Chainflip, so that is really the main strategy.

I think you guys should define what endpoints the connector should support and what strategies it should integrate into before the dev starts the work. We also need to know what to look for in the review process. Since this is not a standard connector, this work is necessary before any dev work starts
…
On Wed, Jul 24, 2024, 1:49 PM David Cumps @.> wrote: Yeah, it's closer to a CLOB than AMM actually @fengtality https://github.com/fengtality — Reply to this email directly, view it on GitHub <#7125 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANWHVTMOK6HEU4HP5Y6DKDZOAHNLAVCNFSM6AAAAABKZFPQCCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBYHA3TGMJTHA . You are receiving this because you were mentioned.Message ID: @.>

actually I have a made good progress in building this, 😅

Let me look into the endpoints. I'm also not personally a Chainflip team member but I'm close with the team, so I will see if I can possibly make them available to provide more color and support in this integration as well.
As far as strategies go, I think XEMM (cross-exchange market making) is most important for this. Pure market making is probably a nice added bonus, but most of the liquidity I imagine will be a XEMM strategy.
But Chainflip is a DEX that supports native BTC, ETH, USDT, USDC and DOT. Most of the liquidity is provided from professional market makers via their custom cross-chain market making. My hope with this Hummingbot connection is/was to make it easier for people to do cross-exchange market making on Chainflip, so that is really the main strategy.

I noticed that it is a spot CLOB ages ago and I have been building with that in mind. I am using a similiar approach to polkadex connector  as chainflip  lp does not deal with normal http request but rpc request. I might be able to make a draft pR soon for you guys to see what i have been up to.

Looking forward to it!

Hi @CumpsD @niklasnatter @chainflipgod @nikspz  I just made a draft PR.
Please do take a look at it. I need all necessary and possible reviews and feedback.

HI @fengtality @nikspz , The PR is Open now and ready for Review.

@KodeSage Thanks for your efforts on this connector bounty. Unfortunately, we are unable to approve this bounty for payment unless it fulfills the stated requirements. Hummingbot connectors should be a drop-in folder that works with the core Hummingbot client without changes just like other CLOB connectors in the codebase.
This may be a Chainflip issue as it's different from normal CLOB connectors, but regardless we cannot approve the connector PR as-is. To resolve this issue, we have returned the full bounty payment to the sponsor @chainflipgod (see transaction https://etherscan.io/tx/0xebbd5b74f45001a49c72081f377893bd82df68912ca3da7d5b9298cba906acfc) and will close this pull request.
The work you've done is very close, so I think the sponsor should arrange partial payment to you and/or find another developer from the community to take over this work. We will pass your contact information to the sponsor so that you and they can communicate directly.

Thank you for the Update and Feedback @fengtality