Customizable task step viewer

Hey, I just made a Pull Request!
As a developer of scaffolder templates, I would like to have a possibility to customise the step execution panel.
Like as an example we would like to achieve to have that notification message block highlighted in a red border

Initially i tried to use TaskPageComponent to achieve it, but ended up with a few copy pasted folders from scaffolder and it was still not enough.
Having less invasive customisation is great for adding small things.
TaskPageComponent is great for complete redesign.
The way to use it:

<Route
      path="/create"
      element={
        <ScaffolderPage
          components={{
            TaskStepViewerComponent: BolTaskStepViewer,
          }}

:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[x] Added or updated documentation
[x] Tests for new functionality and regression tests for bug fixes
[x] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Hey @acierto! :wave:
First of all, thanks for this - wanna put this on pause for a little bit however, as we're currently re-implementing this page part of the scaffolder next work, and there's some other customization points that I want to round off first and then look at this.
Basically this page is going to be completely reworked, and wondering if a component that can render a CompletedOutputs or something might be sufficient.
What I'm thinking is that the scaffolder plugin will show you a simple timeline of the steps as they're executing and if they fail we will show you the logs, but once there are results for successful tasks you can provide your own component to render the outputs from the job in a particular way with some hooks to get the current template etc to make sure that you only show it on certain templates or whatever? Does this seem like it fits what you want to do and are we on the same page? 😅

Hey @benjdlambert!
The whole idea makes sense.
The only question is, what's the reason to wait till the end of the task, but not the end of the step?
For example if we would like to show to the user some notification in the middle of task execution (like step 2 where task has 5 steps). At this case it won't be possible.
Even though if you refactor it completely it still will take some time, so if that's possible would be nice to have it meanwhile, but up to you to decide :)

PR incoming that will replace this PR, will close this once the other one is made, but want to keep this around in the meantime.

So as of the release that goes out today, you'll be able to provide a TemplateOutputsComponent to the scaffolder/next router which will allow you to totally replace the links that are already rendered with whatever you want. We've got some followup work to add some hooks to allow you to get the current template in an easier way etc, but the building blocks are in place. Hopefully from 1.11 we will have the scaffolder/next for public preview and some instructions that will be shipped next week to get people to try this out, with the hope that 1.12 will be<EMAIL_ADDRESS>I think that this pretty much solves this issue and we can close this PR. I'm not feeling that with the current timeline that we have proposed that it's worth us backporting this to the current implementation as it's up for deprecation pretty soon.


summary length

[Enter feedback here]
the summary length using both document summarization and conversation summarization is very less. i have been looking into the paramenters where I can increase the length in either cases. but it is not possible. can someone help me with it?

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 22a1a6ed-7d85-fe6d-c184-fc413e324c34
Version Independent ID: 59cfc14c-6097-c9ef-c94b-9918dba4fa53
Content: Use the Language SDK and REST API - Azure AI services
Content Source: articles/ai-services/language-service/concepts/developer-guide.md
Service: azure-ai-language
GitHub Login: @aahill
Microsoft Alias: aahi

@jahnvisikligar
Thanks for your feedback! We will investigate and update as appropriate.

@jahnvisikligar Thanks for taking this into consideration. What is the solution to the summary length problem currently? As I am working on building my project using Azure AI services(multi-services). What should I do at the moment to address this issue?

@jahnvisikligar
I've delegated this to @aahill, a content author, to review and share their valuable insights.

#please-close


Twemoji 2.4

Twitter has updated some of their emoji graphics in December 2017.

terrible timing 😂 - i'll see if i can update this weekend

hi,
Do you have planned date for the next release with updated graphics?
Many thanks for your work!

@iamcal Ping?

@iamcal Is this still maintained. When do you plan the next release?

Support for Twemoji v12.1.4 is coming in #165

fixed in v5.0.0


Compiler bug: Error renaming file

Hello,
i ran in a situation where i got the error: "Error renaming file ... No such file or directory (File::NotFoundError)" running the example code from the crystal website.
stacktrace.txt
System:
OS: Wsl2 with Ubuntu 20.4 lts on Windows 10, Version: 2004, Build number: 19041.450
Crystal Version: 0.35.1
LLVM version: 8.0.0
Description
i was trying to run the getting started code (https://crystal-lang.org/reference/getting_started/http_server.html) from the crystal website. First i ran the hello world example and afterwards i used the same file (hello_world.cr) for the http server example. Running crystal hello_world.cr the second time containing the http server example code caused the error: "Error renaming file ... No such file or directory (File::NotFoundError)"
Steps taken

run crystal hello_world.cr

puts "hello world"

Change code in hello_world.cr to

require "http/server"

server = HTTP::Server.new do |context|
    context.response.content_type = "text/plain"
    context.response.print "Hello world! The time is #{Time.local}"
end

address = server.bind_tcp 8080
puts "Listening on http://#{address}"
server.listen

run crystal hello_world.cr again

unfortunately i am not able to reproduce the issue. Could it be this issue is rather related to my system than to the crystal compiler?


CRUD List page is slow when using filters

Hello, I've recently implemented filters on my CRUD controller, when I try to load the CRUD list view it slowly loads all the items and the pagination loads the items slowly too.
I searched for the problem and I found an issue about 'Slow perfomance in big tables', saying it could be fixed by implementing $this->crud->enableAjaxTable(); in my Entity Crud Controller. The problem is I already implemented that and it doesn't seem to help.
Here's the filter implementation code:
        $this->crud->addFilter([             'name' => 'country',             'type' => 'select2',             'label' => 'Country'         ],             function() {                 return News_Posts::all()->pluck('country', 'country')->toArray();             }             , function ($value) {                 $this->crud->addClause('where', 'country', $value);             });
PS: I'm using Laravel version 5.3.30; Backpack-crud version 3.2.3
Any suggestions and tips is highly appreciated!

Ok, found a way to fix it, the problem was in the filter implementation code. I changed from return News_Posts::all()->pluck('country', 'country')->toArray();  to                return Noy_com_post::pluck('country','country')->toArray();


Update schema for expo-module.config.json

Updating the schema for expo-module.config.json that includes apple, macos, tvos and devtools platforms

I'll merge it, it's being hosted right after and should update automatically (as it's being pulled from github directly)


WSI Validation tests very incomplete

@chrisforbes Is there any specific work needed here other than writing tests that are being tracked in the valid use database?   Or is there significant work that isn't trackable via VUs?   If not, it seems that this work would be covered by ongoing validation test writing efforts.


Add webdroverio tests for badge

Summary
The hello world of tests, badge :).  This PR adds support for webdriverio and creates tests for badges.
A few notes:

I added terra-site/dist to gitignore as it is generated while running tests
There are some test helpers that we can discuss about potentially moving to toolkit as it makes sense.

Not sure if this is your branch, but running npm install on this branch in a non-elevated prompt failed:
https://gist.github.com/calebmeyer/947aa9d7fa71590df3250fc7f5827940
This was the first time I attempted to install terra-core, I'll try again from an elevated prompt.

I see 4 test failures and 1 lint when I run the tests: https://gist.github.com/calebmeyer/da5beb916bf8ba386e98ac3d908b8950

I see 4 test failures and 1 lint when I run the tests:

Interesting, those are jest failures.  My changes wouldn't have touched that functionality.

I'll check it out and comment back.

Okay, testing on master passes all the jest tests, but fails on a docker pull before the nightwatch tests start: https://gist.github.com/calebmeyer/1326603a411641e42a649fb9fd1589ae

I'm not seeing these failures locally.

Okay, must be a race condition or something. I moved the master branch to the root of my hard drive and now I see 5 jest failures instead of 4. I don't think my machine is very good as a testbed. Carry on


nodejs, remove runtime internal data from sandbox, avoid code concat

Issue Ref:
#632
Description:
Please see issue for details.
TODOs:

[ ] Ready to review
[ ] Automated Tests
[ ] Docs

Added a commit according to comments:

handler check is done inside modExecute, to keep concise arrow function body
timer end is also called in handleError()

Thank you @cscheiber. The code LGTM. Now we need some testing before we land this (in the trigger branch). Can you:

Update the examples under ./examples/nodejs/*
Build images for node6 and node8 and push them to your personal repository (or any public docker hub repository)
Modify the references in kubeless.jsonnet for the images you just pushed
Extra: In the file ./examples/Makefile there is a task timeout-nodejs that writes a nodejs function with an infinite loop, you will need to adapt it to the new format.

Once you do the above the CI will test everything with your changes included.

As discussed I adjusted the examples. The file 'index.js' leads to a question: if module.exports=myHandler is replaced by kubeless(myHandler) in the single files - how to deal with index.js in general?

To summarize today's discussions:

one code line will be generated at the end of the main file require('kubeless')(module.exports);
function file structure does not need to change
index.js can be used, however it is not recommended to provide e.g. 50 functions with one index file where runtime will then select just the one to be used
sandbox works only for the main file, not for any required module (unchanged behavior)

A final commit has been provided.

@cscheiber I have pushed the images to my repository, do you mind changing the reference of the images in the kubeless.jsonnet file to the following?
    "ID": "nodejs",
    "versions": [
      {
       	"name": "node6",
        "version": "6",
        "runtimeImage": "andresmgot/nodejs@sha256:37d496adee0896a4a192f7116d8075ae88ee14b1a3c41974d79609e0863ae464",
        "initImage": "node:6.10"
      },
      {
        "name": "node8",
	"version": "8",
        "runtimeImage": "andresmgot/nodejs@sha256:4327d0f7781463a8b0a843000592c2c0df17988662b38b33dbb35b1bdd5ccc2b",
        "initImage": "node:8"
      }
    ],

The file has been updated accordingly. Again, sorry that I had no own repository available for now.

Everything green in the CI so I pushed the images to the kubeless repository. I will leave the CI to run one more time and I will merge the changes. Thanks @cscheiber !


OutOfRangeError (see above for traceback): End of sequence

Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\client\session.py", line 1334, in _do_call
return fn(*args)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\client\session.py", line 1319, in _run_fn
options, feed_dict, fetch_list, target_list, run_metadata)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\client\session.py", line 1407, in _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.OutOfRangeError: End of sequence
[[{{node IteratorGetNext}}]]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:/BGRD/RealTimeDenoisingNeuralBilateralGrid-master/network_train.py", line 176, in
feed_dict={handle_small: train_handle})
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\client\session.py", line 929, in run
run_metadata_ptr)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\client\session.py", line 1152, in _run
feed_dict_tensor, options, run_metadata)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\client\session.py", line 1328, in _do_run
run_metadata)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\client\session.py", line 1348, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.OutOfRangeError: End of sequence
[[node IteratorGetNext (defined at E:/BGRD/RealTimeDenoisingNeuralBilateralGrid-master/network_train.py:122) ]]
Caused by op 'IteratorGetNext', defined at:
File "E:/BGRD/RealTimeDenoisingNeuralBilateralGrid-master/network_train.py", line 122, in
next_element_small = iterator_structure_small.get_next()
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\data\ops\iterator_ops.py", line 414, in get_next
output_shapes=self._structure._flat_shapes, name=name)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\ops\gen_dataset_ops.py", line 1685, in iterator_get_next
output_shapes=output_shapes, name=name)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 788, in _apply_op_helper
op_def=op_def)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\util\deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\framework\ops.py", line 3300, in create_op
op_def=op_def)
File "C:\ProgramData\Anaconda3\envs\MCDenoising\lib\site-packages\tensorflow\python\framework\ops.py", line 1801, in init
self._traceback = tf_stack.extract_stack()
OutOfRangeError (see above for traceback): End of sequence
[[node IteratorGetNext (defined at E:/BGRD/RealTimeDenoisingNeuralBilateralGrid-master/network_train.py:122) ]]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:/BGRD/RealTimeDenoisingNeuralBilateralGrid-master/network_train.py", line 188, in
epoch_avg_psnr_train /= batch_cnt
ZeroDivisionError: float division by zero
Process finished with exit code 1
I wanted to train the network myself, but I made this mistake。

I solved.  sorry,Tfcords are generated each time they run. But when you have the wrong path and can't read the data, the resulting tfcords are empty. So you have to delete it and run it again, or you will report an error


[style]: Styling Changes for Navbar NavLinks

What's the style idea?
I'm excited to contribute to your open-source project and have identified an issue that I would like to work on.
In the current navbar implementation, the styling of the navlinks remains unchanged when interacting with them. I propose adding styling changes to the navlinks to provide better visual feedback to the users when hovering or selecting them.
Expected Behavior:
Light Mode:

On hover: The text color should change to white (#FFFFFF), and the background color should change to black (#000000).
On selection: The text color should remain white (#FFFFFF), and the background color should remain black (#000000).
When not hovering or selected: The text color should be black (#000000), and the background color should be white (#FFFFFF).

Dark Mode:

On hover: The text color should change to black (#000000), and the background color should change to white (#FFFFFF).
On selection: The text color should remain black (#000000), and the background color should remain white (#FFFFFF).
When not hovering or selected: The text color should be white (#FFFFFF), and the background color should be black (#000000).

Implementation Steps:

Identify the CSS classes responsible for styling the NavLinks in the Navbar component.
Add conditional CSS classes or inline styles to update the text color and background color based on the current mode (white or dark) and the hover/selection state.
Implement the necessary  React logic to handle the hover and selection events and apply the appropriate styles.
Test the changes thoroughly in both white and dark modes to ensure the desired styling behavior is achieved.

Add screenshots

I will be changing this navlinks on hovering and selection.
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Once this issue is assigned to me, I will begin working on implementing the proposed changes. I look forward to contributing to this project and improving the user experience of the Navbar NavLinks.

I would like to work on this under gssoc23, please assign me this.

Hello, I would like to work on this issue under GSSOC'23. Can u please assign this issue to me?

@priyankarpal can you assign me this task so that I can start contributing on it.

What's the style idea?
I'm excited to contribute to your open-source project and have identified an issue that I would like to work on.
In the current navbar implementation, the styling of the navlinks remains unchanged when interacting with them. I propose adding styling changes to the navlinks to provide better visual feedback to the users when hovering or selecting them.
Expected Behavior:
Light Mode:

On hover: The text color should change to white (#FFFFFF), and the background color should change to black (#000000).
On selection: The text color should remain white (#FFFFFF), and the background color should remain black (#000000).
When not hovering or selected: The text color should be black (#000000), and the background color should be white (#FFFFFF).

Dark Mode:

On hover: The text color should change to black (#000000), and the background color should change to white (#FFFFFF).
On selection: The text color should remain black (#000000), and the background color should remain white (#FFFFFF).
When not hovering or selected: The text color should be white (#FFFFFF), and the background color should be black (#000000).

Implementation Steps:

Identify the CSS classes responsible for styling the NavLinks in the Navbar component.
Add conditional CSS classes or inline styles to update the text color and background color based on the current mode (white or dark) and the hover/selection state.
Implement the necessary  React logic to handle the hover and selection events and apply the appropriate styles.
Test the changes thoroughly in both white and dark modes to ensure the desired styling behavior is achieved.

Add screenshots

I will be changing this navlinks on hovering and selection.
Code of Conduct

[x]  I agree to follow this project's Code of Conduct

agreed!
Assigned to you @Amitavpanda


Tippy within  with htmlFor prop doesn't show tooltip

When embedding my Tippy within a label that has an htmlFor attribute, the tippy doesn't show up.  Looking at the DOM, I think it's adding then removing the tippy with a single click.

    Text here.
     <Tippy ... />

Not sure what you're trying to achieve. Do you want tippy around a  or #targetElement?

I'm guessing you're trying to use a focus trigger? You need to set hideOnClick={false} in that case.

Apologies! This was poorly explained on my part.
I was just updating to Tippy from an older tooltip lib and had the following markup structure where the tippy was inside a label. It's unrelated semantically, it just happened to exist within it.
I've done a little digging and found that this works fine. The tip appears when clicking the button.

        Label here.
        <Tippy content="Infotip." placement="right" zIndex={19998} trigger="click">
            <button>Click me.
        </Tippy>

    <input type="text" id="field" />

But when you change the button element to a span, the tippy no longer appears.
If you leave it as a span, but remove the htmlFor attribute on the label, the tooltip then appears again.
Not sure if that's expected behaviour?

But when you change the button element to a span, the tippy no longer appears.

Right, I think we should account for this. Currently there's no check if children changed to recreate the instance.
Want to make a PR?

Actually I think this isn't to do with the children changing (but that's an interesting clause!), it just doesn't seem to trigger at all with a span. Refreshing the page with the span as the dom node & the tip doesn't show up.

I can reproduce that on CodeSandbox. I think it has something to do with the focus instantly switching to the input (upon clicking the ). Using hideOnClick="toggle" seems to fix it...
https://codesandbox.io/s/nl3nn2n2p

I think it has something to do with the focus instantly switching to the input

Yeah, that sounds likely. I wonder if it would be more standard behaviour to prevent the bubbling to occur here so it doesn't focus?
But thanks for the workaround, that's great.

btw, as a workaround which enabled me to keep the desired clicking behaviour, I simply used a button and styled it appropriately. That element prevents it from focusing on the input field & all is well. Thanks again!

I think it's fixed in the latest version


SSL support?

Are there any plans for https support?

@georgeyanev we have to add it, you're right

@georgeyanev I will find a developer for the task soon...

@georgeyanev milestone set to 1.0 (correct me if I am wrong)

It should support both HTTP and HTTPS at the same time. Two different ports maybe.

@georgeyanev yes, you're right, my suggestion above is not correct. This is how your TkApp class should look instead:
public class Entry {
  public static void main(final String... args) throws IOException {
    Take app = new new TkFork(
      new FkRegex("/robots.txt", ""),
      new FkRegex("/", new TkHTML("hello, world!"))
    );
    new FtBasic(app, 80).start(Exit.NEVER);
    new FtSecure(app, 80, new File("/tmp/certificate.ssl")).start(Exit.NEVER);
  }
}

Thus, we have to introduce new class FtSecure. Make sense now?

@georgeyanev and, also, we have to teach FtCLI to understand a few new command line arguments:
--https=443
--certificate=/tmp/cert

Something like this...

Yes something like that

@bdragan this is your task now, please help. The budget of it is 30 mins

@georgeyanev PR #425 has been merged to master. The issue can be closed.

@georgeyanev maybe it would be useful to add a sample to README?

@yegor256 I agree, issue #437 created.

@bdragan good for me, ask @georgeyanev to close this ticket

@elenavolokhova please, review this task for compliance with our quality rules

@bdragan

georgeyanev commented 19 days ago
It should support both HTTP and HTTPS at the same time. Two different ports maybe.

georgeyanev commented 18 days ago
Yes, something like that

According to our quality rules:

Messages in a ticket always start with a name of a user they are addressed to.

As far as you are the performer of this ticket you are responsible for its quality. Please make sure that everyone follows this rule in your tickets in the future. Ask them to fix issues before closing the ticket.
Please confirm that everything is clear and you have no questions regarding this approach.

@elenavolokhova I confirm.

@davvd Quality is acceptable here.

@bdragan Thank you!

@davvd Quality is acceptable here.

@elenavolokhova thank you, let's try to make it "good" next time

@bdragan paied 10 mins to @elenavolokhova for QA review (payment ID is 69523039); Many thanks! 30 mins were added to your account in Transaction ID 69523048 (task took 368 hours and 6 mins); added +30 to your rating, now it is equal to +218


Tapping on a person likes your song notification

tapping on this notification brings you to the Feed, ideally scrolled to the correct post

"Liked song" notification should bring user to the post that was liked
"__ is following you" should bring you to the profile of your new user
"

See Issue #240


Suppress warnings and add test coverage

Suppressed various warnings.
PsuedoNetCDF was not getting tested. Now it is.
Added test coverage for print_versions.py

I'm also seeing
xarray/core/dataset.py:3666
  /home/deepak/work/python/xarray/xarray/core/dataset.py:3666: FutureWarning: Converting timezone-aware DatetimeArray to timezone-naive ndarray with 'datetime64[ns]' dtype. In the future, this will return an ndarray with 'object' dtype where each element is a 'pandas.Timestamp' with the correct 'tz'.
  	To accept the future behavior, pass 'dtype=object'.
  	To keep the old behavior, pass 'dtype="datetime64[ns]"'.
    data = np.asarray(series).reshape(shape)

/home/deepak/miniconda3/envs/dcpy/lib/python3.7/site-packages/pandas/core/apply.py:286
  /home/deepak/miniconda3/envs/dcpy/lib/python3.7/site-packages/pandas/core/apply.py:286: FutureWarning: Converting timezone-aware DatetimeArray to timezone-naive ndarray with 'datetime64[ns]' dtype. In the future, this will return an ndarray with 'object' dtype where each element is a 'pandas.Timestamp' with the correct 'tz'.
  	To accept the future behavior, pass 'dtype=object'.
  	To keep the old behavior, pass 'dtype="datetime64[ns]"'.
    results[i] = self.f(v)

locally.

Yeah, I'm not quite sure how we want to handle the datetime64 with timezones warnings. Possibly we just want to silence them in our test suite, and enocourage users to explicitly cast their pandas data to a dtype supported by numpy before loading it into xarray. Doing that properly would require the equivalent of "re-raising" a warning.

I'm going to merge this shortly, and leave further clean-up for later.


forum.rasa.com has no reply for one year

Sorry to ask a question here. But I found forum.rasa.com has no reply for 1 year.
I had a question to ask in RASA forum. And the system recommand 2 same question for me. However, I found both of them had no reply for about one year. May I beg some one to reply the questions?
The links of the same questions as mine are as follow:
https://forum.rasa.com/t/using-custom-nlu-and-rasa-core-by-replacing-rasa-nlu/5555
https://forum.rasa.com/t/how-to-use-my-own-nlu-module-completely-with-rasa-core/6364
Thank you!

Hi @hqsh, if you create a new post on the forum (instead of replying to an old post), someone will answer you 🙂 new questions have much more visibility and we try to answer new posts as they come in.
Github issues are only for bugs and feature requests -- please don't ask questions here.


API: Custom Relationships API Serializer Mixin

Environment

Python version: 3.7
Nautobot version: 1.0.0b4

Proposed Functionality
Provide a custom relationships API serializer and attach to core models.
Add API serializer mixin to allow serialization of custom defined relationships.
May make use of https://github.com/nautobot/nautobot/blob/develop/nautobot/extras/models/relationships.py#L35-L146 to find the relationships.

Use Case
Serialize custom relationships and be able to use in inventory sources, etc.

Database Changes
None

External Dependencies
None
TODO:
In this first implementation we will support only read-only. A user will continue to use the relationship associations endpoints to modify and create relationships.

https://github.com/nautobot/nautobot/blob/develop/nautobot/extras/models/relationships.py#L35-L146

Not sure that I fully understand that is being proposed here but extending the core model serializers with Relationships data sounds dangerous and redundant with the GraphQL interface.

At a minimum, should document that relationships about primarily about enforcement.

Sorry I didn't explain this very well and came from an internal discussion with @lvrfrc87.
A quick example is tying VLANs to a device via a custom relationship defined.
Here is the custom relationship.

And now we edit a device and add VLANS to it. We can then see from either the device page or the VLAN page that there is a relationship.

But if we make an API call, that information isn't available, and is only available via the GUI or GraphQL via the rel_example query.

Should this information be available via all interfaces we currently support such as the API? And maybe @lvrfrc87 can explain his use case better.

That was my understanding of the use case as well, but since there is an alternative via graphql, I think that should suffice. Just my opinion though.

I do not have a deep understanding of Nautobot architecture so I am not the best person to advise on this but from a user point of view, I would expect to have all the device info available also on API,  so I agree with @FragmentedPacket as the info should be available via all interface.

@lvrfrc87 You can get all the information from the REST API but not everything at once :) this is by design for the REST API
The same way that you don't get the list of interfaces for a device by querying /api/dcim/devices, instead you need to query /api/dcim/interfaces to get this information.
You can query /api/extras/relationships/ to get the list of all relationships defined in a system and /api/extras/relationship-associations/ to get the list of all object to object relationships.
GraphQL has been created specifically to address this limitation in a REST API

@dgarros thanks for the explanation! The original issue was raised with nb_inventory though as would be great to get relationship  under host_vars when run nb_inventory. Hope it make sense :)

@dgarros Thanks for the explanation. I will work with @lvrfrc87 offline, but that makes sense to either use the GraphQL interface or update the inventory plugin to grab the necessary relationships.

I actually think this bears a bit more discussion before closing it. We do serialize custom fields onto the model in the REST API, and it would be useful to serialize relationships in the REST API as well. We already have nested serializers for including related objects in "brief" form within the serialization of a base model, and it would seem appropriate to follow that same pattern for objects that are related via a Relationship as well as those that are related by a built-in field.

I actually think this bears a bit more discussion before closing it. We do serialize custom fields onto the model in the REST API, and it would be useful to serialize relationships in the REST API as well. We already have nested serializers for including related objects in "brief" form within the serialization of a base model, and it would seem appropriate to follow that same pattern for objects that are related via a Relationship as well as those that are related by a built-in field.

Seconded. I don't want to have different data from the API and in GraphQL. They should have parity.

Just my 2 cents. There is parity in that the data exists in both API and GraphQL. To me, they serve different purposes. Certainly don't feel too strong about it, but it seems like we have a solution for the use case, and this would be added work.

I want to take the opportunity of this discussion to reinforce my understanding of GraphQL.
Is not GraphQL a "tool" to make API queries easier? If that is the case, why should we some data in API and not in GraphQL?
From user point of you, that could be misleading as he/she would expected to have same data available on all interfaces.

My understanding is all data is exposed in graphql and api, the delta being that how data is returned in both systems.

After some deliberation we have decided that custom relationships should never be emitted by default. We're not quite clear yet on the exact approach but the two key ones are:

Supporting a query parameter that results in relationships being emitted explicitly by the caller. For example GET /api/dcim/devices/:uuid/?include=relationships
Implement nested API detail endpoints for looking up relationships. For example GET /api/dcim/devices/:uuid/relationships/

If it were up to me, it would be option 2. I find the nested endpoint pattern to be very clean and predictable. As we already have API endpoints to be able to filter relationships based on the related content type object per the comment by @dgarros...

You can query /api/extras/relationships/ to get the list of all relationships defined in a system and /api/extras/relationship-associations/ to get the list of all object to object relationships.

... A nested endpoint exposes the forward relationship from the object's point of view pretty naturally, without having to fret about an arcane query parameter.

I like option #2 that @jathanism proposed.

To resolve the issue found on the Ansible inventory, https://github.com/nautobot/nautobot-ansible/issues/53 was opened up on the Nautobot-Ansible project to create an inventory that would use the GraphQL interface. Would that solve for this from an SDK front?
If Option 1 is used, I think we may need to evaluate if there would need to be some updates to the pynautobot SDK to support for the parameters, specifically on the all endpoint of it. Today that does not take in anything that would allow for params to be passed. That may be something that may be of need in general.

To resolve the issue found on the Ansible inventory, https://github.com/nautobot/nautobot-ansible/issues/53 was opened up on the Nautobot-Ansible project to create an inventory that would use the GraphQL interface. Would that solve for this from an SDK front?

Short answer: Yes. Long answer: No.
I want to make sure we are being cautious about disparate interfaces. Certainly we should try to tackle problems in the most optimized or efficient way, but we need to also assert feature parity across all interfaces.

If Option 1 is used, I think we may need to evaluate if there would need to be some updates to the pynautobot SDK to support for the parameters, specifically on the all endpoint of it. Today that does not take in anything that would allow for params to be passed. That may be something that may be of need in general.

100%. Whichever route we take, it must be discoverable in the OpenAPI schema and in the user-facing documentation.

Need to refine the acceptance criteria.

@bryanculver @lampwins Can we close this as a duplicate of #1463?


Cannot add new card

I created a new card using Pass2Pay and added it to my Google wallet. it shows up on Google pay but not classic power menu. The only card that shows up in classic power menu is my Lego VIP card, and I can't manually add cards

Can you please make a fake card (no personal info) in pass2pay of the same type and share the link, then I can see if I can reproduce

Well, I'm not sure how to do that because you have to make a card in the app, and then add it to your wallet. But I fixed the issue I was having. Basically what I was trying to do was create a card with a qr code on it to get into my gated community and then add it to CPM so that I could access the card quickly. However it wasn't showing the card when I added it. I fixed this by changing to a loyalty rewards card at which point it will show up in the power menu. Just in case anyone else has this specific problem.

Yes, that is why it says loyalty cards - it only supports loyalty cards.


TaskDirectoryActions cleanup; move fetchNodeState to MesosStateActions

This PR does not change functionality but moves fetchNodeState action to MesosStateActions from TaskDirectoryActions.

mesosphere-ci Retest this please

Can one of the admins verify this patch?

I've addressed the comments from @MatApple and @orlandohohmeier. Also cleaned up the actions so that we fire different events.
@mlunoe please take a look!

@mlunoe if the changes look good to you, then let's merge!


Inlined Markdown

Describe the solution you'd like

About Me

   <AbellMarkdown>
     Hi, I am **Saurabh**. I love making websites.
     You can follow me on [Twitter at saurabhcodes](https://twitter.com/saurabhcodes)
   </AbellMarkdown>

Dropping it here for future reference
<AbellMarkdown source="../content/index.md" />

suggested by @anuraghazra on Discord

Maybe also directly fetch the content by passing an url :-
<AbellMarkdown fetch="https://md.com" />

or with the same prop
<AbellMarkdown source="https://md.com" />

I think we should call it path instead of source and URLs may cause confusion. Here's why:
In HTML, when we use,  and then change the hello.jpg image, it changes in the website.
But in abell, if we say
<AbellMarkdown source="https://example.com/myblog.md" />

and then make changes in markdown file and push it. It won't change in Abell's website since it needs a rebuild and the source is only read during the abell build
So I think, for now, we can leave URL markdowns to be handled by source plugins.

We can fix this after abelljs/abell-renderer#28


Icebreaker Analytics

Hi there,
Is there anyway to view who has been matched within icebreaker?
We can't seem to find any analytics for this.
Kind regards,
Gavin

@gavinbeere1 , Please check the icebreaker analytics in the same resource groupand the user collection details, there you can filter by pairs notified count, user notified count, etc. It provides details about analytics like how many pairs notified etc.


Fix typo in javadoc

Not a typo

A bracket means that end of the range is inclusive -- it includes the element listed. A parenthesis means that end is exclusive and doesn't contain the listed element. So for [first1, last1), the range starts with first1 (and includes it), but ends just before last1.
Assuming integers:
(0, 5) = 1, 2, 3, 4
(0, 5] = 1, 2, 3, 4, 5
[0, 5) = 0, 1, 2, 3, 4
[0, 5] = 0, 1, 2, 3, 4, 5


fix(Hyundai CA): calculate and set timezone based on Vehicle setting

The purpose of this PR is to fix an issue with certain vehicles (Hyundai CA) returning last_updated_at values in their own timezone rather than UTC.
When KiaUvoApiCA.force_refresh_vehicle_state is called, we compare the last_updated_at value from the vehicle with current system time and set a custom timezone to account for the offset, if any. Once the custom timezone is set, the offset will be zero for subsequent calls to force_refresh_vehicle_state.
Tested and working for Hyundai CA.

Looks to work on my side. It does: hyundai_kia_connect_api - Offset between vehicle and UTC: 0 hours as I would expect.

One item I just realized that with this code it assumes a single time zone per car. As the API class is shared by all cars.  So if two cars were existed with different timezones this would flip back and forth.    Now I doubt that case exists very often.   To solve that we would need to start storing timezone in the vehicle object for this case.   API could set the default in the vehicle. Previously this was a none issue since it was API dependent not car.

Good point. I actually found more information on the cause if the timing issue. Apparently there is a bug in that also affects some time based functionality within the vehicle, scheduling, statistics etc. I found a couple of posts from owners complaining about it.
The bug is in the AV head unit of 2019-2021 Kona EVs sold in Canada, quite possibly other Hyundai vehicles. Some dealers have been replacing these head units for owners that complained, but there is no official recall and most vehicles will likely never have the issue fixed. Seems insane to me that they can't just fix it with a firmware update! Oh well.
In conclusion, I agree that timezone should be stored per vehicle. It's quite likely that Hyundai owners have more than one vehicle, in which case this would become an issue. I'll have a look at it.


Array plotting

This PR is a connected to some other PRs (#723, #737 and #771).
I recently merged #771 where i corrected the angle (phi to psi) used to plot the arrow on the ground, changing the arrow with a line.
Since the arrow was not being plotted correctly, I worked a bit on a correct plotting for the arrow on the ground and I fixed some bugs in a already existing function used to calculate the time gradient on some selected pixels (usually those selected after the cleaning).
I also added an example notebook (thanks to @vuillaut for providing an example to work on) which displays both the cameras (image + hillas, peakpos and selected region which is being considered for the computation of the gradient) and the arrows on the ground (only if the gradient is not zero, otherwise only the line from the hillas parametrization can be plotted).
Here's an image of how it looks like now (from the example file in ctapipe):

I also added an option to the labels in order to plot only the labels inside the desired region (and not all of them as it was before even only a smaller region was selected).
Since the arrows had a strange length, i added some options and changed a bit the code to make it similar to the line plotting: now the length of the arrow can be selected manually.
Open to suggestions and improvements.

I think that we should plot the arrow only if we can be confident about which direction we are watching at: if we are not confident about this, then the line plotting function should be used.
If you think that the arrow plotting still make sense without the time gradient, I can add the None option to time_gradient.

You can get the direction from the geometric asymmetry as well as the time gradient, so that could be used as well - it would be nice to show either one.  The main reason is that we are not guaranteed to have time information, e.g. when we look at data from HESS or early Astri camera simulations

You could also have it just draw lines, not vectors, in the case that the time_gradient is not given

I tried to use the skewness to have the information regarding the time gradient but I don't get really nice results. I think that for the moment I can make the function draw an arrow if the gradient is given, and draw lines if the gradient is either not given (the time_gradient = None option) or if it's zero for some telescopes.

I tried to use the skewness to have the information regarding the time gradient but I don't get really nice results. I think that for the moment I can make the function draw an arrow if the gradient is given, and draw lines if the gradient is either not given (the time_gradient = None option) or if it's zero for some telescopes.

You could just give it a direction keyword argument containing 1, 0, -1 for the three possibilities for each telescope, and the user can decide what to use.

You could just give it a direction keyword argument containing 1, 0, -1 for the three possibilities for each telescope, and the user can decide what to use.

So @MaxNoe: +1 is the arrow, -1 is the flipped arrow and 0 is the line? and it's up to the user decide which is the discriminator (time, skewness, or whatever)?

Yes, that was my idea. What do you think?

Yes, that was my idea. What do you think?

I think that having this as more general as possible is better: I can add a use case with the sign of the time gradient in the notebook that I created.


Top Issues

As the number of issues increases on the issue tracker, I just wanted to mention https://github.com/mapbox/top-issues, which makes it possible to get kind of an issue ranking (as measured by # of interactions, priority labels and age) to prioritize tasks and getting an overview:
https://mapbox.github.io/top-issues/#!maputnik/editor
We could also use custom scoring settings (e.g. based on labels):
https://github.com/mapbox/top-issues#topissuesrc
It has it's limitations regarding Github reactions like

Only reactions on the initial issue comment "count."

but

Because anyone may add reactions, these scores represent the will of the community.

If there's an interest in using this tool, I could draft a .topissuesrc for the Maputnik repo.

Sounds good @pathmapper lets give it a try, see how it goes. Anything to help prioritise sounds great to me. For context, I personally I try to mix my time between stuff I find interesting and stuff I think is important.
I've also realised you're not a part of the Maputnik organisation. I'll get my head around who has access to what and send you an invite (soonish). Also a big thank you from me for your contributions to the project.

We could also potentially try using GitHub projects again to plan a collection of work a bit better. Any thoughts you have on better management of issues, please let me know. I know I haven't been particularly good at this over my involvement in the project

Thanks for the feedback, a draft for a custom scoring is in https://github.com/maputnik/editor/pull/438.
Additions and modifications welcome, I just see it as an attempt to get a better overview and not as something authoritative.
While going through the existing issue labels, I noticed there are a lot of them currently and maybe some of them are not needed anymore.
Using GitHub projects again is a good suggestion, maybe for projects like GitHub integration (https://github.com/maputnik/editor/issues/155, https://github.com/maputnik/editor/issues/239, https://github.com/maputnik/editor/issues/269), Documentation (https://github.com/maputnik/editor/issues/337, https://github.com/maputnik/editor/issues/325) and/or UI redesign (https://github.com/maputnik/editor/issues/252, https://github.com/maputnik/editor/issues/82 ,https://github.com/maputnik/editor/issues/202, #109)?

Thanks @orangemug !


fixes breaking api change in fast-xml parser

https://github.com/NaturalIntelligence/fast-xml-parser/commit/3cb3e30ff1c18729429691469420f45ed15561cc makes a change to the api for tagValueProcessor meaning that we have to make sure the callback argument is a string.

Hey, thanks for the PR. I ended up reimplementing these changes myself in #499 since I had a couple changes to request and I wanted to get these in quickly. Thanks for your patience.


Add secure mount function

contains unsafe libc function

Added secure mount function in a separated secure mount file. Test passed, ready for a review.

Test passed, ready for a review. Thanks.

Changed based on the request. Test passed, and ready for another review. Thanks.
I changed the commit message and added some inline comments for the code. Hope these could make it clearer about what the change is used for.

Implemented request changes. Test passed. Ready for a review. Thanks.

Change merged.  Please take a look at the rewritten commit message.


Add getting_started_windows_vulkan docs.

Progress on https://github.com/google/iree/issues/1363

@ScottTodd: did you forget to push the new commits? I'm still seeing old ones.

@ScottTodd: did you forget to push the new commits? I'm still seeing old ones.

I pushed, but GitHub isn't updating the PR :/

@ScottTodd: did you forget to push the new commits? I'm still seeing old ones.

I pushed, but GitHub isn't updating the PR :/

Ah, they are showing up now.


CIP-0036 | Adjust preamble and structure w.r.t CIP-0001

Fixes #604.
Changes

Removed Voltaire from the title as it is now clear that this will not be used for Voltaire.
Moved rationale to Rationale section.
Moved Changelog subsection to Rationale section.
Added Path to Active section.
Added links/missing words/missing grammar.
Removed extra spaces and unused reference.

Rendered Updated Proposal

Tagging current Catalyst team for approval @stevenj

@Ryun1 @stevenj @gufmar - following up what what I mentioned I did in https://github.com/cardano-foundation/CIPs/pull/732#discussion_r1439651533 - does cardano-signer count as an Implementor if it generates JSON format metadata compliant with this CIP?
https://github.com/gitmachtl/cardano-signer#cip36-voting-keys-withoutwith-mnemonics

does cardano-signer count as an Implementor if it generates JSON format metadata compliant with this CIP?

Yes! good spot, we should add to Implementors in the header

Probably wasn't quite ready to merge this one, waiting on some context from the Catalyst team
@stevenj please open a new PR to add the context we talked about


scan custom dir

Something like elucidisk.exe "D:\Program Files"

Try running elucidisk.exe "D:\Program Files".
If that doesn't do what you want, then please explain what you want, and how the current behavior differs from what you want.

oh, okay, thx!
when we use elucidisk.exe . from cmd pls show real path, not only .\

I welcome someone submitting a PR for the request.


Peer Review from Manuel Vazquez

Hi all,
Great progress so far! I enjoyed seeing your approach and analysis of strings. Here are some strengths/areas of improvement
Strengths

Nicely documented throughout, it was very easy to understand what was happening
Impressive use of functions to clean string variables!

Areas of improvement

I fixed the ordering for RQ2. You can reorder using the forcats package or just using "reorder" within the aes. I added this code to your script and it worked

For RQ2 perhaps you can facet wrap your bar charts so that they are all in the same graph and can compare side by side. So instead of having separate graphs you can have one graph. I started some code for that but not really  finalized.

@datalorax

Thanks Manuel! Something went awry in your commits because the Rmd looks like the entire file was deleted and added back in (so the diffs are hard to see).
I like the suggestion to use fct_reorder().


Move maxConnections to NetworkServer

BREAKING CHANGE: now you set MaxConnections in the NetworkServer

Nice work :+1:


add tcp_keepalive to Config object

This PR partially addresses https://github.com/boto/botocore/issues/2249. We have chosen not to incorporate duration_seconds as it is a pretty niche, rarely used argument that also relies on others to be set in the same config object.  Because tcp_keepalive is a setting that originates from an operating system, it can only ever be enabled not disabled. This means if set in a scoped config, but not the client config object, it will still be enabled.

Codecov Report
Base: 95.25% // Head: 95.24% // Decreases project coverage by -0.01% :warning:

Coverage data is based on head (fdd4922) compared to base (15b8bdb).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #2766      +/-   ##
===========================================
- Coverage    95.25%   95.24%   -0.02%
===========================================
  Files           62       62
  Lines        12899    12901       +2
===========================================
  Hits         12287    12287
- Misses         612      614       +2

Impacted Files
Coverage Δ

botocore/config.py
100.00% <ø> (ø)

botocore/args.py
100.00% <100.00%> (ø)

botocore/hooks.py
95.27% <0.00%> (-0.40%)
:arrow_down:

botocore/utils.py
93.51% <0.00%> (-0.08%)
:arrow_down:

botocore/auth.py
97.84% <0.00%> (-0.01%)
:arrow_down:

botocore/parsers.py
99.46% <0.00%> (-0.01%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

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

Thanks for working on this! I spent some time to try and see how a client instance could expose the value back to the caller, but it seems like no matter what, it'll always return None:
import boto3
from botocore.config import Config

# No setting set in either config file or Config object
client = boto3.client("dynamodb")
print(client.meta.config.tcp_keepalive)
# None

# Pass in explicitly to enable
client = boto3.client("dynamodb", config=Config(tcp_keepalive=True))
print(client.meta.config.tcp_keepalive)
# None

Is there another way to access the property, or is that this value is not being persisted to the Config object returned?
https://github.com/boto/botocore/blob/409b4043602eacfd0951ea1b28aa52c5f6dbb6bd/botocore/args.py#L123
i can confirm (via interactive debugger) that the file loader still ends up on scoped_config and the code-side Config object ends up with the correct value in the client_config, so final_args has the right value, but I can't find a way to access it to print out.

@miketheman sweet! That's exactly the change I was thinking of thank you for working on it. I'll be speaking with my team this afternoon, but assuming we're set, I can approve it and we can get it merged ASAP.

thanks @dlm6693 and @miketheman my team is dealing with this exact issue right now and getting an official fix in place would be mega helpful

@HayesData Sorry to hear you're hitting this issue! An "official fix" is already in place with this change since version 1.27.84 - the change allows setting the desired configuration via Config instantiation, not an environment variable (yet).
Like @dlm6693 posted a little earlier, you can update your client creation to account for the configuration already, like so:
import boto3
from botocore.config import Config
cfg = Config(tcp_keepalive=True)  # here's the important bit!
s3_client = boto3.client('s3', config=cfg)
s3_client....


v0.11.2 release planning

The v0.11.2 release is scheduled for Dec 15, but let's shoot for end of next week (Dec 13).
Please tag any missing PRs/issues for v0.11.2, and take a look through the v0.11.2 milestone to see what should be pushed to v0.11.3.  We have a bit of a review backlog built up.

#2310 and #2311 might need to be pushed back to 11.3. Will update as my schedule evolves

#2184 -> 11.3?

FYI I'm planning to release v0.11.2 in a few hours.  If any unmerged PRs are ready to go, please point them out :)

#2306 will have to move to 11.3 as I can't finish it in the next couple of hours. I could get it done tonight (MST) if we want it merged with 11.2 though.

I was about to say that there's no rush and we can push #2306 to the next release, but it would be nice for #2306 and #2274 to be done in the same release.  Let's plan for releasing 0.11.2 on Monday Dec 16th then.


⚠ Jenkins Plugins Artifactory has degraded performance

In 2b1dc9d, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 2528 ms

Resolved: Jenkins Plugins Artifactory performance has improved in c022af0 after 2 hours, 4 minutes.


Error when enabling Starlink

https://github.com/geerlingguy/internet-pi/blob/1acc1eb7fc1afec8af03833fa9b7a9debfd05ffb/tasks/internet-monitoring.yml#L48
This line wasn't working, error indicated that "present" isn't an option.  Changing it to state: hard seems to do the trick.

Oops; bug from https://github.com/geerlingguy/internet-pi/pull/84 — those tasks are supposed to use copy and not file. I just pushed a fix for that.

I had the same problem. I tried it again just now and I get

@salro - Oops! Just fixed in the commit above.


memory leak on long sync

PGSync version: 2.5.0
Postgres version: 14
Elasticsearch version: 8.8.2
Redis version: 7
Python version: 3.11.4
Problem Description:
hi @toluaina
I have a table with lakhs of entries. During profiling the sync process, I see the memory leak reaching to a state where it eats up whole 32 GB RAM shutting down the whole sync.
Error Message (if any):

was this during the initial sync?
how big is the overall database?

Yes initial sync, Overall Db is 150GB+
To confirm it was not from Elastic DB. We have kept Elastic on different machine.

Couple of observations:

When setting thread_count to 1 seems to reduce the rate at which memory is leaked.
Even still I see parallel_bulk of elasticsearch creates extra threads. And this seems to be leaking memory as well

Any success with the initial sync @accelq? I have a similar case with 1TB of data


feat: suppress REPL startup message

It would be useful for teaching purposes to have a -q flag for roc repl that suppressed the startup message so that it didn't appear in captured output:
  The rockin' roc repl
────────────────────────

Enter an expression, or :help, or :q to quit.

If this is added, could -q (or some other flag) disable colorized output? The escape sequences used to change colors have to be filtered out if I'm saving output for inclusion in Markdown and other docs.

Yeah, those sound like helpful features :+1:
I would go with two flags like --no-header and --no-colors.


fix: handle existing negative css transforms on resizable elements

The regex for resize wasn't working for my component when translate contained a negative value.

Added test for pull request changes. Thx

Thank you! 😃


Build docs for test-runtime-utils

@tylerbutler , we can publish these docs but external devs should not be consuming them.
We've consolidated things that external devs consume to azure-service-utils test-client-utils

Yup -- these are only built so we can consume them in the API rollup step (see #7652).


feat: mentions

Should be much better after https://github.com/v0l/snort/issues/47 but this is a start.


'undefined method #method' when using abstract class without non-abstract implementations

Not sure if that's the same bug as #4224 or another (or maybe not a bug at all but a feature), but now i've met a problem without generics at all, in situation when no non-abstract implementations of class available:
https://carc.in/#/r/1spe
abstract class GrandParent
  abstract def work : Nil
end

# without it, compiles ok
abstract class Parent < GrandParent
  # doesn't matter, error is same if uncommented

  # def work
  # end
end

# # with it, compiles ok
#
# class Child < Parent
# end

class Container
  @data :  GrandParent?

  def work : Nil
    if data = @data
      data.work
    end
  end
end

Container.new.work

Error text:
Error in line 28: instantiating 'Container#work()'
in line 23: undefined method 'GrandParent#work()'

Maybe it is intended behavior, as there is no sense to use a class if no non-abstract implementation exists. But it is still possible that some library code provides an abstract interface and client just doesn't use it leaving a field nil \ array empty etc. Of course it is easily solvable by providing dummy implementation of class in library code.
So i'm reporting it just in case it is still not an intended behavior and as possibly related to #4224.

It's a bug. It works if the abstract class doesn't have subclasses, but the check is missing for when the abstract class subclasses are all abstract.

The original code now compiles fine with Crystal 0.35.1. Seems this was fixed at some point.


sails cannot deal the error "UnhandledPromiseRejectionWarning",but I find express done

Node version: v10.15.0
Sails version (sails): v0.12.14

I find express can deal the error  "UnhandledPromiseRejectionWarning" by change layer
The code like this:
const Layer = require('express/lib/router/layer');
Object.defineProperty(Layer.prototype, 'handle', {
enumerable: true,
get() {
return this.__handle;
},
set(fn) {
if (fn.length === 4) {
this.__handle = fn;
} else {
this.__handle = (req, res, next) =>
Promise.resolve()
.then(() => fn(req, res, next))
.catch(next);
}
},
});

And I want to change the interval server error 500, anyway?

@bmrainc Thanks for bringing this to our attention.  Can you provide more info about where you're seeing this error.  Also, what is your overall use case?


Cleanup requirements.txt

Remove virtualenv and related deps. These aren't needed in a requirements.txt.

Alright I'll do


fix compatibility for Unity 2018

in Unity 2018,AnimationClip.SetCurve(); argument must not null.
https://docs.unity3d.com/2018.1/Documentation/ScriptReference/AnimationClip.SetCurve.html

👍


Bug: Async fetch operations are not using the DbDataReader.ReadAsync method (in v1.12.0 to v1.12.2)

Affected by the latest release and core compiler updates, the current fetch operations are not using the DbDataReader.ReadAsync() operations. All the Async fetch operations (i.e.: BatchQueryAsync, QueryAsync and ExecuteQueryAsync) are using this sync method.

We are aware of this and is currently working on the solution. This will be a part of the next release.

Available at version RepoDb v1.12.2.

The fix is now deployed and is available at RepoDb v1.12.3.

Hi. I was looking to fill similar ticket but since you were faster I will ask question part of my issue :) I am looking at private static async Task<IEnumerable<TResult>> ExecuteQueryAsyncInternalForType<TResult> and can't figure out what is the purpose of AsList() in var result = (await DataReader.ToEnumerableAsync<TResult>(reader, dbFields, connection.GetDbSetting())).AsList(); Because of this you later have to do casting (IEnumerable<TResult>)result which otherwise could be avoided I'd guess.

You are correct, this is a valid question to the ToEnumerableAsync() method as the resultset is actually a List<TResult>, we are not using IAsyncEnumerable<TResult> there (meaning, no yielding). However, the AsList() is casting it back to the correct type, and no conversion is happening. The impact is very minimal. I hope you that explained.

Yeah, ok, thanks. I think I was associating degraded async performance of larger data sets with that casting and type conversions, but after I updated to 1.12.3 it's returning my data blazing fast nonetheless.

Remember, there is no conversion there. It is only casting it, but to make it perfect, you are correct that the mentioned AsList() call is not necesarry. I am happy if you could PR that :)

This has been fixed and is now available at RepoDb v1.12.3. Closing this incident ticket now.


[Question]: Index created from a LanceDBVectorStore is not returning all nodes?

Question Validation

[x] I have searched both the documentation and discord for an answer.

Question
I don't know what I am doing wrong. I chunked a few hundred documents using the HierarchicalNodeParser and stored them in a lanceDB database using this guide. It has about 24000 leaf nodes in it.
If I want to query the data, I use the code down below:
embed_model = OpenAIEmbedding(model="text-embedding-3-large")

db = lancedb.connect("./lancedb_RL_test_2")
Settings.embed_model = embed_model
table = db.open_table("docs_OpenAI")
vector_store = LanceDBVectorStore.from_table(table)
index = VectorStoreIndex.from_vector_store(vector_store)
storage_context = StorageContext.from_defaults(persist_dir="./RL_test_2")
base_retriever = index.as_retriever(similarity_top_k=10000)

question = "test"
nodes = base_retriever.retrieve(question)

What this seems to be doing is initially grabbing the same exact 1080 nodes from the database, then ranking them based on vector similarity to query. I tried tuning the overfetch_factor and nprobes parameters of the LanceDBVectorStore, but this seems to do nothing. I am very confused on what I might be doing wrong? Any help?

@dosu
vector_store = LanceDBVectorStore.from_table() only takes in a table as a parameter, nothing else.
Speaking about this, can this be a feature added in the future? I've been having to go into the LanceDBVectorStore and manually changing the query_type myself when conducting some evaluation on my RAG system.

@dosu
vector_store = LanceDBVectorStore.from_table() only takes in a table as a parameter, nothing else.
Speaking about this, can this be a feature added in the future? I've been having to go into the LanceDBVectorStore and manually changing the query_type myself when conducting some evaluation on my RAG system.

Update: I ran some more tests and it is not an issue of creating a vector store from a lancedb table, which I thought it might have. Here is some code:
question = "test"
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-large-en-v1.5")
vector_store = LanceDBVectorStore(uri="./lancedb_RL_test_2", table_name="docs_8.1", query_type="hybrid")
docstore = SimpleDocumentStore()
docstore.add_documents(all_nodes)
storage_context = StorageContext.from_defaults(vector_store=vector_store, docstore=docstore)
index = VectorStoreIndex(nodes=all_leaf_nodes, storage_context=storage_context)
index.storage_context.persist(persist_dir="./RL_test_2_8.1")
retriever = index.as_retriever(similarity_top_k = 2500)
nodes = retriever.retrieve(question)
db = lancedb.connect("lancedb_RL_test_2")
table = db.open_table("docs_8.1")
vector_store2 = LanceDBVectorStore.from_table(table)
index2 = VectorStoreIndex.from_vector_store(vector_store)
retriever2 = index2.as_retriever(similarity_top_k = 2500)
nodes2 = retriever2.retrieve(question)
Keep in mind, "all_leaf_nodes" contains 3558 nodes, but both times I retrieve nodes using the VectorStoreIndex as a retriever, it is being limited to 1498. Any idea of what might be happening? I can see the 3500+ nodes inside of my lancedb table directory.

@dosu
Update: I ran some more tests and it is not an issue of creating a vector store from a lancedb table, which I thought it might have. Here is some code:
question = "test"
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-large-en-v1.5")
vector_store = LanceDBVectorStore(uri="./lancedb_RL_test_2", table_name="docs_8.1", query_type="hybrid")
docstore = SimpleDocumentStore()
docstore.add_documents(all_nodes)
storage_context = StorageContext.from_defaults(vector_store=vector_store, docstore=docstore)
index = VectorStoreIndex(nodes=all_leaf_nodes, storage_context=storage_context)
index.storage_context.persist(persist_dir="./RL_test_2_8.1")
retriever = index.as_retriever(similarity_top_k = 2500)
nodes = retriever.retrieve(question)
db = lancedb.connect("lancedb_RL_test_2")
table = db.open_table("docs_8.1")
vector_store2 = LanceDBVectorStore.from_table(table)
index2 = VectorStoreIndex.from_vector_store(vector_store)
retriever2 = index2.as_retriever(similarity_top_k = 2500)
nodes2 = retriever2.retrieve(question)
Keep in mind, "all_leaf_nodes" contains 3558 nodes, but both times I retrieve nodes using the VectorStoreIndex as a retriever, it is being limited to 1498. Any idea of what might be happening? I can see the 3500+ nodes inside of my lancedb table directory.

Hi @caes27 , thanks for reporting the issue.
I tested from integration end and came to the following conclusions (I used hierarchical parser and ingested 768 nodes into the DB) :

len(index.vector_store._table.search().where(None).limit(700).to_pandas()) gives the correct result and returns 700
I added a print statement /logged the len(results) fetched in the query function and similarity_top_k seems to be correctly parsed by lancedb query function. response = index.as_retriever(similarity_top_k = 700).retrieve('test') returns nodes : 700
but when I check len(response) it returns 234 which seems odd.

I am not sure but it seems to be an issue in how the final results are built by llama index retriever API / query engine API, I can see VectorIndexRetriever._build_node_list_from_query_result() function being called but  @logan-markewich could you have a look once as you would have a better idea?
from lancedb integration API end, it seems to be fine, perhaps some minor docstore, storage context issue could be there and I can make the fix if needed but I am not sure what the fix is.
adding the query function debug code snippet :
    def query(
        self,
        query: VectorStoreQuery,
        **kwargs: Any,
    ) -> VectorStoreQueryResult:
        """Query index for top k most similar nodes."""
        if query.filters is not None:
            if "where" in kwargs:
                raise ValueError(
                    "Cannot specify filter via both query and kwargs. "
                    "Use kwargs only for lancedb specific items that are "
                    "not supported via the generic query interface."
                )
            where = _to_lance_filter(query.filters, self._metadata_keys)
        else:
            where = kwargs.pop("where", None)

        query_type = kwargs.pop("query_type", self.query_type)

        _logger.info("query_type :", query_type)

        if query_type == "vector":
            _query = query.query_embedding
        else:
            if not isinstance(self._table, lancedb.db.LanceTable):
                raise ValueError(
                    "creating FTS index is not supported for LanceDB Cloud yet. "
                    "Please use a local table for FTS/Hybrid search."
                )
            if self._fts_index is None:
                self._fts_index = self._table.create_fts_index(
                    self.text_key, replace=True
                )

            if query_type == "hybrid":
                _query = (query.query_embedding, query.query_str)
            elif query_type == "fts":
                _query = query.query_str
            else:
                raise ValueError(f"Invalid query type: {query_type}")

        lance_query = (
            self._table.search(
                query=_query,
                vector_column_name=self.vector_column_name,
            )
            .limit(query.similarity_top_k * self.overfetch_factor)
            .where(where)
        )

        if query_type != "fts":
            lance_query.nprobes(self.nprobes)
            if query_type == "hybrid" and self._reranker is not None:
                _logger.info(f"using {self._reranker} for reranking results.")
                lance_query.rerank(reranker=self._reranker)

        if self.refine_factor is not None:
            lance_query.refine_factor(self.refine_factor)

        results = lance_query.to_pandas()

        if len(results) == 0:
            raise Warning("query results are empty..")

        nodes = []

        for _, item in results.iterrows():
            try:
                node = metadata_dict_to_node(item.metadata)
                node.embedding = list(item[self.vector_column_name])
            except Exception:
                # deprecated legacy logic for backward compatibility
                _logger.debug(
                    "Failed to parse Node metadata, fallback to legacy logic."
                )
                if item.metadata:
                    metadata, node_info, _relation = legacy_metadata_dict_to_node(
                        item.metadata, text_key=self.text_key
                    )
                else:
                    metadata, node_info = {}, {}
                node = TextNode(
                    text=item[self.text_key] or "",
                    id_=item.id,
                    metadata=metadata,
                    start_char_idx=node_info.get("start", None),
                    end_char_idx=node_info.get("end", None),
                    relationships={
                        NodeRelationship.SOURCE: RelatedNodeInfo(
                            node_id=item[self.doc_id_key]
                        ),
                    },
                )

            nodes.append(node)

        # _logger.info("nodes :", len(nodes))
        print("nodes :", len(nodes)) # this returns the correct no. of nodes as per similarity_top_k

        return VectorStoreQueryResult(
            nodes=nodes,
            similarities=_to_llama_similarities(results),
            ids=results["id"].tolist(),
        )

Hello @raghavdixit99,
Thank you for helping me, I really appreciate it.

I rechunked a smaller set of documents and ingested 3500 nodes into a separate lancedb table. I set similarity_top_k to 1500 and by adding your debugging statement of:
 print("nodes :", len(nodes)) # this returns the correct no. of nodes as per similarity_top_k

It correctly showed 1500 nodes being retuned, but in the final response:
response = index.as_retriever(similarity_top_k = 700).retrieve('test')
print(len(response))

This outputted 1488 nodes, so some nodes were lost in this process. It was kinda fascinating how yours went from 700 to 234. But there is also another issue.
Since there is 3500 documents, I wanted to test it with a larger limit/similarity_top_k.
I set it to 2500 and everytime, both by using:
table_nodes = table.search().limit(2500).to_list()
print(len(table_nodes))

response = index.as_retriever(similarity_top_k = 2500).retrieve('test')
print(len(response))

The top piece of code returned 1510 nodes.
For the bottom piece of code, the debugging statement added into the query function showed 1510 nodes, and then it went down to 1498.
The limit/similarity_top_k was set to 2500, so what is going on here? I think this a bigger issue than the nodes being lost in the final stages of the retrieval process?
Tagging for visbility: @logan-markewich

@caes27 , a lancedb search : table.search().limit(x) will return the correct result as thats calling our OSS API which is a simple vector search and has been tested without any issues.
Additionally, I locally tested it via len(index.vector_store._table.search().where(None).limit(None).to_pandas()) and got the entire table(768 nodes) which is the correct result, you can refer to our API reference for more details - https://lancedb.github.io/lancedb/python/python/#lancedb.query.LanceQueryBuilder.limit
Perhaps your table has not ingested all the data or your uri needs a refresh (rm -rf /your_lancedb_path).
As for the final retrieval results coming less than expected I have already covered that in my comment and tagged Logan, we should wait for his response as it seems like a parsing problem from the base retriever class.
Thanks

Hey @raghavdixit99,
I believe you when you say the table.search().limit(x) method works lol
I have refreshed the uri multiple times and same issue. Maybe it's a matter of how nodes are being ingested into the lancedb table when you do this:
vector_store = LanceDBVectorStore(uri="./lancedb_RL_test_3", table_name="docs_8.1", query_type="hybrid")
docstore = SimpleDocumentStore()
docstore.add_documents(all_nodes)
storage_context = StorageContext.from_defaults(vector_store=vector_store, docstore=docstore)
index = VectorStoreIndex(nodes=all_leaf_nodes, storage_context=storage_context)

I can't see anywhere else where it can go wrong.
If you have time, maybe you can try it on your end by populating the table with 2000+ nodes and see if you get the same issue?

Did more digging. As I was populating the table little by little, instead of sending it 25000+ nodes at once, I realized something.
Suppose my table has 500 nodes in it currently and I want to add 300 more nodes to the table. I run the following code:
vector_store = LanceDBVectorStore(uri='lancedb_TEST', table_name='docs', query_type='hybrid')
docstore = SimpleDocumentStore()
docstore.add_documents(all_nodes)
storage_context = StorageContext.from_defaults(vector_store=vector_store, docstore=docstore)
index = VectorStoreIndex(nodes=all_leaf_nodes, storage_context=storage_context)

After this is done, this should mean there is 800 nodes in the lancedb table, but after I execute the following code:
db3 = lancedb.connect("lancedb_TEST")
table3 = db3.open_table("docs")
vector_store3 = LanceDBVectorStore.from_table(table3)
index3 = VectorStoreIndex.from_vector_store(vector_store3)
index3.insert_nodes(all_leaf_nodes)
retriever3 = index3.as_retriever(similarity_top_k = 1500)
nodes3 = retriever3.retrieve(question)

nodes3 is of length 300, which were the nodes I just added. It ignores the 500 nodes that were in the lancedb table previously.
Is this not the correct way to add nodes to an existing lancedb table?
I appreciate any help, thank you!

Hi @caes27
Thanks for the update.
Since you are trying to iteratively ingest data you should try changing the mode to “append” by default the table overwrites the data could be the reason for such behavior.
vector_store = LanceDBVectorStore(uri='lancedb_TEST', table_name='docs', query_type='hybrid', mode=“append”)

Hello @raghavdixit99,
I think I might have found the issue that was causing problems.
First, I noticed some faulty logic in the LanceDBVectorStore's "add" method, and fixed it myself. At the same time, I thought about upgrading the package and this also fixed it lol.
I also tried your solution yesterday, and it works if the table already exists and has some sort of data in it. However, it throws an error when the table is empty. So that is a work around, but this fix in the "add" method seemed to solve ingesting data into a fresh table:
Previous:
if self._table is None:
            self._table = self._connection.create_table(
                self._table_name, data, mode=self.mode
            )
        else:
            if self.api_key is None:
                self._table.add(data, mode=self.mode)
            else:
                self._table.add(data)

After:
if self._table is None:
            self._table = self._connection.create_table(
                self._table_name, data, mode=self.mode
            )
        else:
            if self.api_key is None:
                self._table.add(data, mode="append")
            else:
                self._table.add(data)

From what I saw, the data was ingested in batches and when the second batch came around, because it was in "overwrite" mode, the second batch's data would completely wipe the first batch's data and so on.
The other problem with LlamaIndex losing some nodes in the retrieval process still persists, so I'm still waiting.
Thanks again Raghav for your help.

Hi that is not faulty logic, you are hardcoding the mode argument and we have added that as per user’s requirement/ input. Please follow the usage as per my last comment, rest we are waiting on Logans response.

docstore.add_documents(all_nodes)
storage_context = StorageContext.from_defaults(vector_store=vector_store, docstore=docstore)
index = VectorStoreIndex(nodes=all_leaf_nodes, storage_context=storage_context)

Hi @caes27 In your example, I saw all_nodes passed to docstore and all_leaf_nodes passed to VectorStoreIndex, is this intended, or this could be the reason of your issue?
docstore.add_documents(all_nodes) storage_context = StorageContext.from_defaults(vector_store=vector_store, docstore=docstore) index = VectorStoreIndex(nodes=all_leaf_nodes, storage_context=storage_context)

Hello @raghavdixit99,
I think I might have found the issue that was causing problems.
First, I noticed some faulty logic in the LanceDBVectorStore's "add" method, and fixed it myself. At the same time, I thought about upgrading the package and this also fixed it lol.
I also tried your solution yesterday, and it works if the table already exists and has some sort of data in it. However, it throws an error when the table is empty. So that is a work around, but this fix in the "add" method seemed to solve ingesting data into a fresh table:
Previous:
if self._table is None:
            self._table = self._connection.create_table(
                self._table_name, data, mode=self.mode
            )
        else:
            if self.api_key is None:
                self._table.add(data, mode=self.mode)
            else:
                self._table.add(data)

After:
if self._table is None:
            self._table = self._connection.create_table(
                self._table_name, data, mode=self.mode
            )
        else:
            if self.api_key is None:
                self._table.add(data, mode="append")
            else:
                self._table.add(data)

From what I saw, the data was ingested in batches and when the second batch came around, because it was in "overwrite" mode, the second batch's data would completely wipe the first batch's data and so on.
The other problem with LlamaIndex losing some nodes in the retrieval process still persists, so I'm still waiting.
Thanks again Raghav for your help throughout this whole thread.

Hi @logan-markewich @raghavdixit99 @spearki
I can confirm this is a bug, run into the same issue when first creating a VectorDB from scratch.
What happens is self.mode default to overwrite during initiation.
https://github.com/run-llama/llama_index/blob/f7676375ea8d80ce10b92d4e6de73b1bcb77cbc9/llama-index-integrations/vector_stores/llama-index-vector-stores-lancedb/llama_index/vector_stores/lancedb/base.py#L354C1-L355C1
but since data ingested in batch, and latest batch keep overwriting previous, in the end VectorDB will be initiated with only 'input_record_size%insert_batch_size` records
https://github.com/run-llama/llama_index/blob/f7676375ea8d80ce10b92d4e6de73b1bcb77cbc9/llama-index-core/llama_index/core/indices/vector_store/base.py#L74
https://github.com/run-llama/llama_index/blob/f7676375ea8d80ce10b92d4e6de73b1bcb77cbc9/llama-index-core/llama_index/core/indices/vector_store/base.py#L232
Could you kindly provide a patch update to fix this issue? @caes27 's solution solved it for me

It would be great if @caes27 or @manfredwang093 can open a PR for this, and maybe include a unit test :) Tbh there have been several updates in lancedb since this issue was opened, I'm not even sure if this is an issue still

Encountered the same issue and looking forward to a bug fix.


Launch Template for Node Groups Cause Connectivity Issues

Not sure if I'm the one who supposed to label it as a question or not, couldn't find how to do it if it's on me, sorry.
[X] ✋ I have searched the open/closed issues and my issue is not listed.
Not even sure it's ok to ask here, as Terraform gets executed ok, but I don't know how else to troubleshoot this, so hopefully you could help.

Versions

Module version [Required]: "~> 18.0"
Terraform version: v1.3.5

Provider version(s):

provider registry.terraform.io/gavinbunney/kubectl v1.14.0
provider registry.terraform.io/hashicorp/aws v4.41.0
provider registry.terraform.io/hashicorp/cloudinit v2.2.0
provider registry.terraform.io/hashicorp/helm v2.7.1
provider registry.terraform.io/hashicorp/http v3.2.1
provider registry.terraform.io/hashicorp/kubernetes v2.16.0
provider registry.terraform.io/hashicorp/random v3.4.3
provider registry.terraform.io/hashicorp/tls v4.0.4
provider registry.terraform.io/taiidani/jenkins v0.10.0

Issue Description:
I have EKS that I've installed Jenkins on it.
With the code that works (no launch template), Jenkins job runs ok.
With the code that doesn't work (launch template creation - I need to run a script on the nodes, for now I've put just an echo in the script to eliminate the issue is with the script's content), the Jenkins job fails on a pip install phase-
Installing pip dependencies: ...working... Cannot contact jenkins-agent-cpu-j149c: hudson.remoting.ChannelClosedException: Channel "hudson.remoting.Channel@5a343fa7:JNLP4-connect connection from <IP_ADDRESS>/<IP_ADDRESS>:35866": Remote call on JNLP4-connect connection from <IP_ADDRESS>/<IP_ADDRESS>:35866 failed. The channel is closing down or has closed down
Agent jenkins-agent-cpu-j149c was deleted; cancelling node body
Could not connect to jenkins-agent-cpu-j149c to send interrupt signal to process

Reproduction Code [Required]
Not working-
eks_managed_node_group_defaults = {

    enable_bootstrap_user_data = true
    post_bootstrap_user_data = <<-EOT
      MIME-Version: 1.0
      Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

      --==MYBOUNDARY==
      Content-Type: text/x-shellscript; charset="us-ascii"

      #!/bin/bash
      echo "nothing to do"  ## as you can see it’s just a dummy to test functionality

      --==MYBOUNDARY==--
    EOT
    …..
    …..
}

  eks_managed_node_groups = {
    ci-master = {  …. }
    ci-worker = { …. }
}

Working-
  eks_managed_node_groups = {
    ci-master = {
      ….
      create_launch_template = false
      launch_template_name   = ""
   }
    ci-worker = {
      ….
      create_launch_template = false
      launch_template_name   = ""
   }
}

Steps to reproduce the behavior:
set up the cluster with the non working code- a.k.a:

set enable_bootstrap_user_data = true
set up a script on post_bootstrap_user_data or pre_bootstrap_user_data (I tried them both, both result with the same issue).
don't set at all create_launch_template = false and launch_template_name   = ""
run the jenkins job. you can't without deploying it, so.. let me know if you need me to check anything else in comparison of working and non working code implementation - I've put below the security settings of the node, if there's anything else to compare, let me know.

Expected behavior
The Jenkins job should work ok.
Actual behavior
Jenkins job fails with the error-
Installing pip dependencies: ...working... Cannot contact jenkins-agent-cpu-j149c: hudson.remoting.ChannelClosedException: Channel "hudson.remoting.Channel@5a343fa7:JNLP4-connect connection from <IP_ADDRESS>/<IP_ADDRESS>:35866": Remote call on JNLP4-connect connection from <IP_ADDRESS>/<IP_ADDRESS>:35866 failed. The channel is closing down or has closed down
Agent jenkins-agent-cpu-j149c was deleted; cancelling node body
Could not connect to jenkins-agent-cpu-j149c to send interrupt signal to process

Additional context
attaching screenshots of the security settings of the nodes of the node pool
working-

not working-

I've compared the two, if any - the not working one has more rules to allow connectivity, so it should work.

I tried to follow the code but I can't see a reason why the security settings would defer once we use a launch template.
The root question - Why would the job fail on the connectivity error above while all I did is to create a launch template for the node groups?

Thanks,
Hila

when you use the default launch template created by the EKS managed node group, EKS uses the cluster primary security group on nodes which allows all egress to the public IPv4 internet, and allows all ingress across the security group itself
when you use a custom launch template, you will need to add in the rules your services require since the security group created and attached by this module does not automatically permit ingress across the security group itself by default

Where in the code does it attach the shared node group SG?
and do I really need it if all communications are done via the cluster SG, like in the working example?

Where in the code does it attach the shared node group SG to each node in the nodegroup? (as seen in the non-working code example).

The code here does not - that is just the default behavior of EKS managed node groups. This is also the default for EKS Fargate profiles; users do not even have the option to control what security group is used on EKS Fargate profiles through the API


Covalent Warnings on Build; Please Update to Angular 12

After updating our project to Angular 12, which depends on Covalent, we are getting a lot of warnings on builds due to Covalent SASS code that has been deprecated and will be removed in a future update of SASS.
It would be greatly appreciated if Covalent could have it's dependencies updated, especially Angular to v12, and code properly migrated in the near future.
Thank you

Hi @tsg-tthrash thank you for you comments. Currently we are only supporting 11.x for Angular on our latest release 3.x versions but do absolutely have updates in future versions for covalent to be compatible with angular 12.x


Adapt mutators for use with Goblins framework

After finishing this issue it

MUST be possible to instantiate the Goblins framework with the mutators as toys

MUST be possible to instantiate the ledger value transactions using the STS framework

SHOULD be possible to run the Goblins to create invalid data using the GA approach

SHOULD be possible to see labeled test results from the GA run

obsoleted by @mhuesch work on Goblins and STS-based generators


Python loading error

It will not let me play a youtube song using link or name
Heres the message -
ERROR: Signature extraction failed: Traceback (most recent call last):
File "C:\Users\Guy\AppData\Local\Programs\Python\Python35-32\lib\site-packages\youtube_dl\extractor\youtube.py", line 1070, in _decrypt_signature
video_id, player_url, s
File "C:\Users\Guy\AppData\Local\Programs\Python\Python35-32\lib\site-packages\youtube_dl\extractor\youtube.py", line 958, in _extract_signature_function
raise ExtractorError('Cannot identify player %r' % player_url)
youtube_dl.utils.ExtractorError: Cannot identify player 'https://www.youtube.com/yts/jsbin/player-vflGD0HaZ/en_US/base.js'
(caused by ExtractorError("Cannot identify player 'https://www.youtube.com/yts/jsbin/player-vflGD0HaZ/en_US/base.js'",))
Any help would be apreciated 👍

update your dependencies

@TimmyTheRat sorry, whats a dependencie?

its in your bot folder


add: Enable follower fetching via API

Describe your changes
Steps on how to enable follower fetching via API and Terraform
Checklist

[x] The first paragraph of the page is on one line.
[x] The other lines have a line break at 90 characters.
[x] I checked the output.
[x] I applied the style guide.
[x] My links start with /docs/.

minor nitpicks added, should we also add the image?

Addressed the indentations.
The image was added to the concept topic - https://aiven.io/docs/products/kafka/concepts/follower-fetching


Add some instrumentation to support distributed tracing.

For production, I guess the sample rate should be reduced
from 1 to 0.1 once Kafka messages are also traced.
See also https://github.com/RedHatInsights/custom-policies-ui-backend/pull/61
Signed-off-by: Heiko W. Rupp<EMAIL_ADDRESS>

lgtm

With the two instrumented methods, creation of a new Policy looks like this:

And retrieval of Policies:


feat: Add semver_range to dependency processing and improve logging

Summary
Adds support for populating the semver_range field in the DependsOn table.
Improves logging for missing licenses and packages.
Changes
Modified _process_depends_on in core/db.py to include semver_range.
Improved logging in core/db.py for better debugging.
Why This Change is Necessary
Ensures the semver_range field is populated, making dependency data more granular and useful.
Provides clearer debugging messages for missing licenses and dependencies.
Additional Changes
Replaced all instances of self.logger.warn with self.logger.log as per feedback from the maintainers.

Fixed


Part 2 of properly supporting charge windows

Add a new service which can update one of the two charge windows. This ensures that the time period being written is valid:

Just consists of hours and minutes
In the range 00:00 -> 23:59
End is > start
Period does not overlap any other periods configured on the inverter

It then gathers together all time periods, and writes them in a single write.

The inverter can be specified either using a drop-down in the GUI, or by providing a friendly name. This also updates the existing "write_registers" service to follow the same scheme.

There's a couple of things I need to tidy up:

Make sure the inverter actually supports time periods. I suspect it might just assert currently.
Make sure that the pre-existing time period has a value for enable force charge from grid
Add a service which sets both charge periods together. We might not want to expose this in services.yaml, as I want to pass an array of charge periods and I don't think the UI supports this. This will be used by the custom card in part 3

Make sure that the pre-existing time period has a value for enable force charge from grid

I often have two time periods set where neither has force charge from grid (to give the equivalent functionality of setting the mode to backup which previously wasn't available to me, but also limits the "backup" mode to just a time period).  Setting a time period with no force charge from grid causes the inverter to charge the battery from the solar but not send any to the house.  I use this to balance the two inverters - if house load is low (i.e. so it doesn't need both inverters) then the inverter with the lower battery is given a time period without force charge to top its battery up.

Add a service which sets both charge periods together. We might not want to expose this in services.yaml, as I want to pass an array of charge periods and I don't think the UI supports this. This will be used by the custom card in part 3

If I've understood correctly, the built in modbus component does this (i.e. support arrays) -
  service: modbus.write_register
  data:
    hub: FoxESSInverterModbus
    address: 41001
    slave: 246
    value:
      - 1
      - 31
      - 1053
      - 0
      - 0
      - 0

the values are an array in this case.  I hadn't tried putting templates in individual values of the array, but I don't see why this wouldn't work.

I often have two time periods set where neither has force charge from grid (to give the equivalent functionality of setting the mode to backup which previously wasn't available to me, but also limits the "backup" mode to just a time period). Setting a time period with no force charge from grid causes the inverter to charge the battery from the solar but not send any to the house. I use this to balance the two inverters - if house load is low (i.e. so it doesn't need both inverters) then the inverter with the lower battery is given a time period without force charge to top its battery up.

You misunderstood my note I think. When the integration first starts, we take about 10 seconds to fetch the current value of the registers. We need to program both charge periods together, but the service lets you update just one of the charge periods at a time, which means it needs to know what the current value for the other charge period is (so we can write those same values back). But it doesn't know this if it hasn't yet fetched those registers. The PR already checks whether the start/end time have been fetched correctly, but not if enable charge from grid has been fetched.

If I've understood correctly, the built in modbus component does this (i.e. support arrays)

I want to pass an array of objects, e.g.
data:
  - start:...
    end:...
   ...
  - start:...
    end:...
   ...

This is for use by the card, not normal users. I'd be very surprised if the HA services UI could represent this - nothing I've seen in the docs indicates that it can!

You misunderstood my note I think.

Yes - I had, thanks for the clarification, that makes sense.

I want to pass an array of objects

Next level! OK, that also makes sense.
Thanks.

There we go!

In fact, we should probably fix the friendly name bug and add the additional EPS sensors first. I'll try to find time this weekend.

I'm in two minds about those additional sensors -- it's going to be easier to add them in later, than add them now and then change our minds and remove them (or hide them behind some setting).

Oh, and I want to move those solar_energy_total sensors into the H1_AC1 set and remove the integration sensors that are currently there before the next release. Moving from an integration sensor to the total value reported from the inverter is going to cause a step jump, which won't be ideal if AC1 users come to rely on it.
At least by making the change now, we'll learn soon enough it those registers aren't supported by the AC1!

I've been in touch with an AC1 user over the last couple of days and he confirmed that the sensors are present :+1:

Fab, thanks! That change will conflict with #124, so holding off for a little.

@canton7 sorry a bit late but just a quick display thing before it gets released.
The text for the charge windows has ",or just prevent discharge" on the Enable charge from grid - that should just be the text "Whether to charge the battery from the grid"
The Force Charge Window toggle should have the text "Whether to enable this force charge window, or just prevent discharge".

@FozzieUK The aim was to indicate what happened if the option was deselected. I'll clarify.

@canton7 Ok, thanks - it's one of the lesser understood things about the force charge switches; basically the Enable Force Charge switch on it's own doesn't enable force charge, it just prevents the battery from being discharged during the set charge period, whereas the Enable charge from grid, force charges from grid and it doesn't allow the batteries to discharge when they batteries hit maxsoc.

Yes, which is what the message was trying to indicate.


Add wslu

https://github.com/nicholasdille/packages/blob/master/packages/w/wslu/package.yaml

Install shell scripts from src/
Check prerequisites according to https://github.com/wslutilities/wslu/blob/dev/master/configure.sh
Official documentation:
XXX

Official documentation https://github.com/wslutilities/wslu/blob/dev/master/extras/scripts/wslu-install


Restructure

I reorganized a few things:

moved the notebooks outside the main package, they shouldn't get installed when someone installs the package
moved cytosim and readdy modules to the package root so they are easier to install optionally (i.e. to import from subcell_analysis.readdy instead of subcell_analysis.postprocessing.readdy), and we might add more specific functions for each of them that aren't postprocessing.
got rid of example in the bin
moved dependencies to main block in pyproject.toml rather than dev

Also fixed test and lint failures

Are we keeping notebooks/actin_compression.ipynb under version control? The overall reorg looks great to me! I have one small comment about potentially moving compression_analysis.py to its own folder but other than that we should be good to go.

Yes the notebook is still under version control but outside the python pkg


Bit level LZSS ?

Hi, i'm looking for an LZSS implementation in js working on bit level and not only on Bytes level.
is there a theorical issue about this or it's just not implemented ?
PS : base62 could be usefull, but be able to use LZSS on ArrayBuffer (or string if not on bit level) and to choose to convert it to baseN look more modular to me.

@1000i100 Hi, this lib's bit level is not implemented. I think BaseN is good way, but I want to keep simple APIs for fast conversion.
Thanks for your idea!

does this work with binary files or not? not base62-encoded


Change 'Last saved' time

under 'Edit draft registration' to local time, matched format with 'Started' and 'Last updated' under 'Registrations'
[OSF-5551]

See the first attached screenshot to see how the 'Started' and 'Last updated' times are currently displayed on 'Registrations':

See the second attached screenshot to see how the 'Last saved' time under 'Edit draft registration' is now displayed to match the above/existing format:

What if the draft has never been saved. It should show "never", according to the implementation of lastSaved.
Also, could we get rid of the lastSaved if we go with this change? Any objections, @samchrisinger ? Was there a reason to show "Last saved" in UTC time?

Can you explain what you mean by "get rid of the lastSaved"?
Either way this can definitely become a localized time.

@samchrisinger There is a lastSaved computed and a lastSavedTime computed. I am suggesting @kch8qx remove lastSaved if it will no longer be used anywhere.

Without taking time to throughly browse the KO templates for usages of lastSaved, this sounds good to me.

@sloria I changed the lastSaved to show 'never' if the draft hasn't been saved and removed lastSaved entirely since it isn't used anywhere else. Should I update the PR?