RBOOT SDK 3.1

Having finally gotten RBOOT and my ESP-GO code running on ESP SDK 3.1 - I'm occasionally getting E.M.5832 - which results in a safe OTA failure... next time it usually works.... is there anything I can do to narrow down why I'm sometimes seeing this memory error?

I think it is related to low amount free memory, so can't allocate 5832 bytes and error shows.

This is weird... it works many 50% of the time and Richard suggested fragmentation, then, just half an hour ago I discovered a 4K buffer in my main code page (not in a function) which is not in use, so deleted it and recompiled - taking my heap reading from 7k+ to 11k+ - surely this would minimise any issues - yet the error is occurring just the same - and sill only some of the time I OTA. Getting rid of that unused array has made no difference.... E:M 5732 and E:M 5864 - other times I try OTA (same code, same board) I get none of that and it works,

It wouldn't take a lot of heap fragmentation to prevent you getting an allocation of 4k from 11k. Two single badly placed bytes in the heap would be sufficient to prevent it. You need to find out where the offending malloc is and see if you can use less memory there. It may not be in rBoot anyway. If it is, my guess would that it's in rboot_write_flash - in that case try sending it smaller chunks of data to write.

I’ve never really gone into RBOOT in depth, in the rboot header there is a reference to sector size at 4K – not sure how to safely manipulate that.
Is It possible, before the defrag starts, to do some kind of general RAM defrag?
I use very little MALLOC, preferring (for no special reason) local variables as needed. In fact, in my main page, malloc does not occur at all.
Pete
From: Richard Antony Burton<EMAIL_ADDRESS>Sent: 01 April 2019 18:33
To: raburton/rboot<EMAIL_ADDRESS>Cc: Peter Scargill<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [raburton/rboot] RBOOT SDK 3.1 (#50)
It wouldn't take a lot of heap fragmentation to prevent you getting an allocation of 4k from 11k. Two single badly placed bytes in the heap would be sufficient to prevent it. You need to find out where the offending malloc is and see if you can use less memory there. It may not be in rBoot anyway. If it is, my guess would that it's in rboot_write_flash - in that case try sending it smaller chunks of data to write.
—
You are receiving this because you authored the thread.
Reply to this email directly,  https://github.com/raburton/rboot/issues/50#issuecomment-478672239 view it on GitHub, or  https://github.com/notifications/unsubscribe-auth/ABzUg5y2TEOmDZUzv_8JZpHDHDmweI88ks5vckLDgaJpZM4cURrC mute the thread.  https://github.com/notifications/beacon/ABzUg0CTVUB_zY4X0a8Whyz4C0qAAq0kks5vckLDgaJpZM4cURrC.gif

Closed as duplicate


Errors when run  train_psquare.py

 It indicates that token indice is longer than the specified maximum sequence length for GPT(512). Where should I fix this problem? my GPU is 2 rtx3090.  Probably large enough to run your model?

@xhc19930714 Sorry for the late response. The error means that your input sequence should be pruned into 512 tokens (the maximum length which GPT2 can acccept), or you may turn into other models to find a better one.
I suggest pruning your data to aovid too long sequence.

"UnboundLocalError: local variable 'language_opt' referenced before assignment"
Hi, I met this problem when running the train_psquare.py,  how to fix it? thanks

Closed since there is no more activity.


Store Installation data in respective Slack org's Infrastructure

Hello Team,
I'm currently in the process of developing a Slack app using the Python Bolt framework. I've successfully implemented the OAuth2 workflow and completed all necessary steps for installation within a single workspace. Now, our goal is to deploy the app across various organizations.
However, we're opting not to store installation data in a shared Installation Store. Instead, we aim to save all installation data within each client's infrastructure.I'm able to pass a query param to /slack/install URL by which i'm able to save installation in respective client's infrastructure. I've also implemented a custom middleware which can the get same query param value which is being passed to  slack workspace and then after appropriate interaction in workspace, a payload is sent to bolt app, where i'm adding it to context as well. I'm having trouble getting this value in find_installation method of Installation Store.Do you have any suggestions or possible workarounds for this?
Reproducible in:
The slack_bolt version
slack-bolt==1.18.1
slack_sdk==3.27.1
Python runtime version
Python 3.10.12
OS info
6.5.0-25-generic GNU/Linux
Steps to reproduce:
None
Expected result:
None
Actual result:
None
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Thanks for the prompt response @seratch!
I was hoping that customising the AsyncInstallationStoreAuthorize , AsyncOAuthSettings  and passing context value to its find_installation method would solve my issue, but was encountering
ERROR:slack_bolt.AsyncMultiTeamsAuthorization:Although the app should be installed into this workspace, the AuthorizeResult (returned value from authorize) for it was not found.
I checked where it was being called, and wanted to know if there can be workaround there as well

When your authorize (or its underlying installation store) does not return a relevant AuthorizeResult to a request, the error can arise and that is an expected behavior.
I mean, if your single Bolt app has access to any installation data across those client infrastructure databases in some way, you don't need any workaround (and also, there is no need to customize bolt-python as well). You can just have a custom installation store that encapsulates the access to various on-premise infra databases. Your find_installation should be able to identify which infra to access by enterprise_id and/or team_Id.
If your single Bolt app does not have such access to client databases, there is no way to serve as a single /slack/events endpoint. In this case, your app needs be deployed to each infra and needs to serve as different Request URLs (as I suggested above).

Thank you @seratch. Appreciate all your help!

Let me close this issue now, but please feel free to write in whenever you have follow-up questions!

Hey @seratch , I'm now trying the fetch installation data in find_installation using enterprise_id , team_id (my app doesn't take actions on behalf of users so no user_id needed)
my app is initialised like this:
installation_store = CustomInstallationStore()
custom_oauth_flow = CustomAsyncOAuthFlow(settings=async_oauth_settings)
app = AsyncApp(name="Bolt Slack App",
               oauth_flow=custom_oauth_flow,
               signing_secret=os.environ.get("SLACK_SIGNING_SECRET", "********************"),
               installation_store=installation_store)

CustomInstallationStore has save installation and find installation methods defined properly
I'm getting a warning when initialising :
WARNING:slack_bolt.AsyncApp:As you gave both installation_storeandoauth_settings/auth_flow, the top level one is unused.
and when an incoming request from slack is sent to bolt app,
DEBUG:slack_bolt.AsyncApp:Applying slack_bolt.middleware.authorization.async_multi_teams_authorization.AsyncMultiTeamsAuthorization
DEBUG:oauth.async_outh_settings:No installation data found for enterprise_id: ***** team_id: *******
ERROR:slack_bolt.AsyncMultiTeamsAuthorization:Although the app should be installed into this workspace, the AuthorizeResult (returned value from authorize) for it was not found.

I'm not sure if customer installation store is being used, i can see the data in it after it got installed via /slack/install but its not being used when incoming request from slack workspace posts a payload.
Is there something i'm doing wrong ?

As the warning message indicates, you need to pass the installation_store to oauth_flow instead.

Update:
Its resolved. I was initialising it incorrectly. Thanks for helping me out!


Update version in README

This PR updates the version in the README to match the latest release.

👍

@tkindy  thank you! :)

No problem! 😄


Live Tooltip

Hi,
Do you have any plan to add live capabilities to tooltips ?
Thanks.

They now use proper event delegation via the "selector" option

Magiccyril,
Were you able to get .live tooltips to work?

Yep succeeded, try :
$('body').tooltip({
    selector: '[rel=tooltip]'
});


Python - add tags to CfnEIP

https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_ec2/CfnEIP.html
Neither resource constuctor nor any of the modifier methods support setting tags.

Hello @lkoniecz,
This class is generated from the CloudFormation Resource Specification.
My understanding is that AWS::EC2::EIP does not presently have a Tags property, and it is hence impossible for us to support that.
Regards,
Romain.

@lkoniecz here is a workaround I found
# ....
new_eip = core.CfnResource(self, "eip_for_nat", type='AWS::EC2::EIP', properties={
    'Domain': 'vpc',
    'Tags': [
        {'Key': 'Name','Value': self.stack_name + "/for_nat"}
    ]
})

new_eip.apply_removal_policy(core.RemovalPolicy.RETAIN)
alloc_id =  new_eip.get_att('AllocationId').to_string()

# ... continue on
nat_gw = ec2.CfnNatGateway(self, "nat_gw_for_private_space",
subnet_id=subnet.subnet_id, allocation_id=alloc_id)
nat_gw.node.add_dependency(new_eip)
# ...

@lkoniecz here is a workaround I discovered
# ....
new_eip = core.CfnResource(self, "eip_for_nat", type='AWS::EC2::EIP', properties={
    'Domain': 'vpc',
    'Tags': [
        {'Key': 'Name','Value': self.stack_name + "/for_nat"}
    ]
})

new_eip.apply_removal_policy(core.RemovalPolicy.RETAIN)
alloc_id =  new_eip.get_att('AllocationId').to_string()

# ... continue on
nat_gw = ec2.CfnNatGateway(self, "nat_gw_for_private_space",
subnet_id=subnet.subnet_id, allocation_id=alloc_id)
nat_gw.node.add_dependency(new_eip)
# ...

@RomainMuller
Right, I was most likely looking thru GUI, which allows tagging Elastic IPs, so this is rather cloudformation incompatibility.
@rezen
Thanks for the hint. I might try it out.
to be closed.


fix(input): prevent clearable when input is readonly

📝 Description
This PR addresses the issue where the clear button (isClearable) should not be displayed when the input field is read-only (isReadOnly). The useInput hook has been modified to automatically set isClearable to false when isReadOnly is true.
⛳ Current behavior (updates)

Currently, the clear button can still be shown even if the input field is read-only. This is not the desired behavior because users should not be able to clear a read-only input field.
🚀 New behavior
With this PR, when the input field is set to read-only (isReadOnly), the clear button (isClearable) will automatically be hidden, ensuring that read-only fields cannot be cleared by the user.
💣 Is this a breaking change (Yes/No):
No
📝 Additional Information
The useInput hook has been updated to check the isReadOnly property and conditionally set the isClearable property. This change ensures consistency and improves the user experience by preventing unintended actions on read-only fields.

Summary by CodeRabbit

New Features

Improved usability of the input component by ensuring the clear button only appears when the input is editable.

Bug Fixes

Resolved an issue where the clear button was incorrectly displayed on read-only input fields.

Tests

Added new test cases to validate the behavior of the clear button in read-only and editable states.

please add changeset since you've modified file under packages
please include a test

Thank you for the feedback!
I've added a changeset and included a test

please add changeset since you've modified file under packages
please include a test

Thank you for the feedback!
I've added a changeset and included test.

Currently, the clear button can still be shown even if the input field is read-only. This is not the desired behavior because users should not be able to clear a read-only input field.

I agree users should not able to click it but i'm thinking if we should make it hidden or not. If you look at isDisabled + isClearable, the clear button is here but not able to click.

To maintain consistency with the behavior when isDisabled, I have disabled the click action for the clear button when isReadOnly is true.


How to inject gtid(from api gateway) as trace id in spring sleuth

Hi,
I am looking around  to override trace id in spring by getting global transaction which was set by API Gateway. I would like to use the gateway gtid as trace id, instead of spring to generate one for me. Have any one done that ?

You can do one of two things.
You can register your own bean of Random type that will generate a long of your choosing for you. Check https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java#L55-L59 and https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java#L225-L227 .
And second way. If you can use the latest snapshots you can profit from SpanAdjuster and basically fully change whichever part of your span sent to Zipkin - http://cloud.spring.io/spring-cloud-sleuth/spring-cloud-sleuth.html#_customization_of_reported_spans . But you'll have a mismatch between logs and Zipkin.
I'd go with the first option if I were you.

Ping @b-rajesh ?

Hi, I don't want to generate another id for trace. but i want to reuse the GTID from request which is already supplied in the request header.

So your option to do that is to use the new feature from Dalston.RELEASE - http://cloud.spring.io/spring-cloud-static/Dalston.RELEASE/#_customizations . You can register a HttpSpanInjector and HttpSpanExtractor like presented in this section of the docs and provide different headers from which you'd like to pick the IDs.

ok will give it a try. it looks promising.


Auto Documentation & README

Pull request for auto documentation using Sphinx tool and README file

@david-shearon Waiting on your commit for Docker instructions to primary README, this could be pending updating the to .devcontainer format as well though


feat(experimental/dialog): add the ability to control the animation duration

For keeping parity with the Material dialog (#13466), adds the ability for consumers to configure the animation duration of the dialog.

Marking as target minor since we should merge this at the same time as #13466

Just needs rebase


HydroDyn Unexpected behaviour of Axial Inertia Force Calculation

Bug description
Calculated axial inertia loads do not match expected behaviour when using strip theory members.
A dummy test case with regular linear waves applied to a single fixed and rigid member. Axial force coefficients AxCa and AxCp applied to both ends of the member. All other hydrodynamic force coefficients set to 0.

The axial force from Ca and Cp seem to refer to different reference masses
The length of the member seems to influence the loads

To Reproduce
Steps to reproduce the behavior:

Define a template file with regular waves (H=3m T=8s) and a single member aligned with x axis at z=-15m. water depth 100m (see geometry figure below).
Define test cases with various choices member length and AxCa and AxCp
Using pre-compiled HydroDyn (v2.05.00) exe, run with HD driver file with fixed body (0 MorisonInputsMod)
Compare amplitudes of  "HydroFxi"

Input files attached for easier replication of result:
OpenFastAxialHydrodynamicsBenchmarkStudy.zip

Expected behavior
I expect the axial hydrodynamic force is calculated as follows:
Fx=Cm_ax*reference_mass*water_particle_acceleration
where,
Cm_ax=Ca_ax+Cp_ax
reference_mass=rho*2/3*pi*R^3 (half sphere of water per end)
The discussion in https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=1740&p=8279&hilit=MemberAxCa1#p8279 seems to suggest the above definition is what is used in HydroDyn.

Unexpected Result summary
Question 1:
Why does the Ca and Cp not equally contribute to the axial force?

Question 2:
Why does the length of the member influence the axial force?

HydroDyn Version
Pre-compiled version of HydroDyn (v2.05.00) was downloaded from the following link:
https://drive.google.com/file/d/1dw-dkdxDizU_v3lZtnsR7m0mD1dBVVhG/view?usp=sharing
This summary file was generated by HydroDyn v2.05.00 on 05-Oct-2020 at 14:26:53.

System Information (please complete the following information):

OS: Windows 10
Compiler: n/a (pre-compiled executable used)
Compiler settings: n/a

I'm closing this issue because it appears to be a duplicate of #554.


Multiline functions

Hello,
I didn't find any contribution guides and I'm unfamiliar with a code base.
But with @cser we implement some new features from https://gist.github.com/cser/dabe6e064915701be3d3bb5f50db4d42 and fix some bugs.
Are there any changes left that must be done: docs, web version?

Thank you! Great Job!
However, before mreging, I will have to review it. I am also working on the code, we will have to coordinate. On the first glance, I think you have pretty good understanding of the code and what and where to change.
Currently, the project is not quite ready for contribution. Besides guidelines, we will have to develop unit tests, etc. But I am so happy that we are starting to have such a dedicated community.

Unfortunately, this is an isolated event. It is unlikely that I will support the project regularly. Just this feature is very necessary.
So, it's too early to worry about the problems of collective development :(. But, unit tests is very good for interpretator developing anyway :)

@Proektsoftbg:
Hello, Ned!
I rewrite https://gist.github.com/cser/dabe6e064915701be3d3bb5f50db4d42, now it explain this pull request functional.
nikifkon has committed all the functionality and bug fixes that I asked for. That's all. I started using the new version (the latest one, so it turned out, lies here https://github.com/nikifkon/Calcpad/releases/tag/v5 .8.4) and I wait for merging...

Hi, thank you!
I startet reviewing the changes. Since I have also started working on this (as I mentioned a few weeks ago) it will be difficult to automatically merge both versions. There are also some things that need to be coordinated. It was even better to do that in advance. What I can see at first is:

ExpressionParser.cs, line 242: keyword == Keywords.Hide && condition.IsSatisfied etc. All these preprocessor switches must come before any program flow like conditions and loops. They affect the html content in both input and output stages. Since, in input stage the code is not evaluated, it is not possible to depend on conditions. Also, this is not needed as long as you simply nest the corresponding couples of #hide-#show or #val-#equ inside the same condition block.
Dots in variable names are reserved for vectors and arrays when they come in turn, like in MathCAD, say a.1, a.n, a.(2*n+1), etc.
Both macros and includes have to be preprocessed as an additional step before we call ExpressionParser.Parse(...). This can be implemented by a simple rewiriting engine that does nothing but replacing the macro calls with the respective strings. After composing the final code, it can be passed to the expression parser. This approach is more clear and easy to implement without affecting the current logic.
Macros and includes will disturb some existing features like input fields and line numbers. A multiline macro or included file can contain input fields. We need to think about how to preserve their values.
Some of these features I have already implemented on my side.

So, it will be difficult to merge the changes automatically. For me, it will be easier to do that manually and take only what I need. I know that you are not using Html forms and some other existing featres, but they are essential for Calcpad and we cannot afford to break them.

1. #hide/#show

ExpressionParser.cs, line 242: keyword == Keywords.Hide && condition.IsSatisfied etc. All these preprocessor switches must come before any program flow like conditions and loops. They affect the html content in both input and output stages. Since, in input stage the code is not evaluated, it is not possible to depend on conditions

OK, I agree - input fields can't be broken

Also, this is not needed as long as you simply nest the corresponding couples of #hide-#show or #val-#equ inside the same condition block.

OK, I agree that we can't touch #hide/#val behaviour, but this quote isn't true for #hide, for example:
#def TRY$()
    out = a^2
    'There out: 'out
#end def
#hide
a = 10
TRY$()' - it is need to hide it
#if out > 20
  a = 2
#end if
#show
TRY$()' - it is need to show it

What to do? - nothing now, but later - it's need to introduce additional dynamic nested keyword/function for hide, that don't do anything with input fields (additional keyword for show isn't needed)
Variant 1 - one-line function $Hide:
#def TRY$()
    out = a^2
    'There out: 'out
#end def
#hide
a = 10
$Hide{TRY$()}
#if out > 20
	a = 2
#end if
#show
TRY$()

Variant 2 - '#dynhide' keyword:
#def TRY$()
    out = a^2
    'There out: 'out
#end def
#dynhide
	a = 10
	TRY$()
	#if out > 20
	  a = 2
	#end if
##end dynhide
TRY$()

2. Dots

Dots in variable names are reserved for vectors and arrays when they come in turn, like in MathCAD, say a.1, a.n, a.(2*n+1), etc.

OK, now it's clear why they isn't documented
3. Preprocessing

Both macros and includes have to be preprocessed as an additional step before we call ExpressionParser.Parse(...). This can be implemented by a simple rewiriting engine that does nothing but replacing the macro calls with the respective strings. After composing the final code, it can be passed to the expression parser. This approach is more clear and easy to implement without affecting the current logic.

Are you want to remove all dynamic from macros?
Goodbye conditional macro definition inside #if, hello #if in several places!
But, OK.
4. Input fields and line numbers

Macros and includes will disturb some existing features like input fields and line numbers. A multiline macro or included file can contain input fields. We need to think about how to preserve their values.

Offtopic:
In my deep opinion input fields should be dynamic, depend on #if/#repeat/#def and appear/disappear on the fly when entering values. Code of Unity3d editors and react.js works so.
The values must be stored by an explicit key (x=??x, x=??x{i} - for loop, x=??x{unique_argument} - for macro). Otherwise, problems will continue to appear.
Essentially:
If input fields ignore #if and #repeat - let's they ignore #def. What can we do else?
In pull request line with error shows inside macros. It's need to show call stack, but one line is normal now.
Where to scroll when clicking on a line inside a macro? - It's better to go nowhere than confuse users
5.

Some of these features I have already implemented on my side.

Clear, still waiting :)

In your example, the first TRY$()' - it is need to hide it will hide and TRY$()' - it is need to show it will show in the way you wrote it. There is nothing specal about that.
To hide a single line, you can write a helper, using Html comment, e.g.:
#def HIDE$(S$)
    '<!--'S$'-->
#end def

or
#def HIDE$(S$)
   #hide
   S$
   #show
#end def

I also thought about changing the way input values are stored. x = ?{2} is definitely a simple good way.
If a macro or #include contain input fields, w can add default values on the same line as a list:
#include filename #{2; 3; 4}' - inlude file with three input fileds and set defaults.
or
SELECT_SECTION$() #{2; 3; 4}' - call macro with three input fileds and set defaults.
About conditional macro definitions, you can easilly avoid that. You can define two macros with different names and conditionally call them.
About making input fields dependant on #if-#else-#end if, we can possibly do that in future. This will require dynamic recalculation each time when an input value is changed. This is compilcated and not possible in the current implementtion of the web version. For now, I prefer to use #pre- #post. This is static, but simpler. If we start doing too much changes at once, we will not finish until the end of the year. :)
Lets do it step by step. If you are ahead in your version, you can keep using these features until I manage to catch up. However, I want to keep Calcpad as simple as possible. This is the charm of it. :) You are always trying to make things more complicated than necessary. ;) I am sure that when I get the final implemenation, and you try it, you will see that you can do all the things you need, but in simpler way.
The preprocessing of includes and macros will bring us one great feature: you will be able to see the final "unwarped" source code after all includes and macros are rewriten with their contents. It will be very good for testing your worksheets and keep track of what you are doing.

To hide a single line, you can write a helper, using Html comment, e.g.:
Ha! Realy, it's possible with static macro :)

I also thought about changing the way input values are stored. x = ?{2} is definitely a simple good way.
If a macro or #include contain input fields, w can add default values on the same line as a list:
#include filename #{2; 3; 4}' - inlude file with three input fileds and set defaults.
or
SELECT_SECTION$() #{2; 3; 4}' - call macro with three input fileds and set defaults.

There are no ideas on the above O_o

About conditional macro definitions, you can easilly avoid that. You can define two macros with different names and conditionally call them.

It's like in C# - missing virtual methods makes condition count groving in other places.
Anyway, let's give this up for simplification and nice testing

About making input fields dependant on #if-#else-#end if, we can possibly do that in future. This will require dynamic recalculation each time when an input value is changed. This is compilcated and not possible in the current implementtion of the web version. For now, I prefer to use #pre- #post. This is static, but simpler. If we start doing too much changes at once, we will not finish until the end of the year. :)

Well, we'll have to work with what we have

Lets do it step by step. If you are ahead in your version, you can keep using these features until I manage to catch up. However, I want to keep Calcpad as simple as possible. This is the charm of it. :) You are always trying to make things more complicated than necessary. ;) I am sure that when I get the final implemenation, and you try it, you will see that you can do all the things you need, but in simpler way.

:)

The preprocessing of includes and macros will bring us one great feature: you will be able to see the final "unwarped" source code after all includes and macros are rewriten with their contents. It will be very good for testing your worksheets and keep track of what you are doing.

That's right


Add support new output format (fragmented-MP4 packaged with HLS)

This PR adds the option to generate fragmented-mp4s packaged with HLS.
TODOs:
* Add option to generate different mp4 types in vod request handler
* Fix location of output dir for fmp4 in object-store
* Fix mp4 output response to Studio
-- Fix probing issue post-transcode
-- Fix fmp4 output to generate separate a/v tracks --> will be a followup PR
-- Fix/add unit tests (separate PR will be used for integration tests)
-- Some more testing in staging including regression testing
/Fix VID-341

Conceptually looks good, I like the splitting out of the two different MP4 generation methods rather than trying to combine them. Tag me once the tests are passing and it's ready for a final review.

Updates (still WIP)

refactored code to allow both regular MP4 and fragmented MP4 generation
some debug prints need to be cleaned up still and tests need to be fixed/added.
if you are reviewing, then going commit by commit will be best as I tried to split them up logically for easier review.

@leszko @thomshutt @mjh1 ready for one more round of review.
Before merge:

run regression test suite

Post merge:

add integration tests for the transmux methods
staging tests to check for regressions

Added a few more comments, but in general it looks good. I played around with this and was able to generate the fmp4 files 🎉
One general question, I had the following path: /cakeout/hls/ set in my Storj bucket. Then, I've send the following request:
            "outputs": {
                "hls": "enabled",
                "mp4": "enabled",
                "fragmented_mp4": "enabled"
            }

Now, I was a little surprised by where the output files are located. Is that correct?

HLS files are in /cakeout/hls/index.m3u8, cakeout/hls/360p0/*, cakeout/hls/720p0/*, cakeout/hls/1080p0/*=> ALL GOOD
MP4 files are in /cakeout/hls/360p0.mp4, /cakeout/hls/720p0.mp4, /cakeout/hls/1080p0.mp4 => ALL GOOD
fMP4 files are in /cakeout/hls/360p0/fmp4/360p0.m3u8, /cakeout/hls/360p0/fmp4/360p0.m4s (and the corresponding dirs for 720p0 and 1080p0 => Is that correct? Don't we need some manifest files in the root dir like we have for HLS?

Yep, will fix this based on offline discussion with Rafal/Thom/Max

The current directory structure is like this:

So all the fmp4 files are embedded into the fmp4 directory. I think it's ok, but may be a little confusing for the Transcode API users. Imagine you send the following request:
{
    "input": {
        "url": "some-video-url"
    },
    "storage": {
        "type": "s3",
        "endpoint": "https://gateway.storjshare.io",
        "credentials": {
            "accessKeyId": "access-key",
            "secretAccessKey": "secret-key"
        },
        "bucket": "my-bucket"
    },
    "outputs": {
        "hls": {
            "path": "/hls/"
        },
        "mp4": {
            "path": "/mp4/"
        },
        "fragmented_mp4": {
           "path": "/fmp4"
        }
    }
}

Now, you could probably expect that your fmp4 files will end it in the /fmp4 location, but actually they'll end up in /fmp4/fmp4 location.
I leave it up to you, but thinking about it again, I'd probably flatten the fmp4 structure and then for our upload task, we would just add /fmp4 in the request between task-runner<>catalyst.

The current directory structure is like this:
So all the fmp4 files are embedded into the fmp4 directory. I think it's ok, but may be a little confusing for the Transcode API users. Imagine you send the following request:
{
    "input": {
        "url": "some-video-url"
    },
    "storage": {
        "type": "s3",
        "endpoint": "https://gateway.storjshare.io",
        "credentials": {
            "accessKeyId": "access-key",
            "secretAccessKey": "secret-key"
        },
        "bucket": "my-bucket"
    },
    "outputs": {
        "hls": {
            "path": "/hls/"
        },
        "mp4": {
            "path": "/mp4/"
        },
        "fragmented_mp4": {
           "path": "/fmp4"
        }
    }
}

Now, you could probably expect that your fmp4 files will end it in the /fmp4 location, but actually they'll end up in /fmp4/fmp4 location.
I leave it up to you, but thinking about it again, I'd probably flatten the fmp4 structure and then for our upload task, we would just add /fmp4 in the request between task-runner<>catalyst.

Well spotted 👍 annoyingly I think we'll have to add a check to add the prefix /fmp4 only if the prefixes for hls and fmp4 aren't the same, as I don't think we'd want the flat structure of regular hls and fmp4 flat in the same folder.

Now, you could probably expect that your fmp4 files will end it in the /fmp4 location, but actually they'll end up in /fmp4/fmp4 location.
I leave it up to you, but thinking about it again, I'd probably flatten the fmp4 structure and then for our upload task, we would just add /fmp4 in the request between task-runner<>catalyst.

@leszko Well spotted 👍 annoyingly I think we'll have to add a check to add the prefix /fmp4if the prefixes for hls and fmp4 are the same, as I don't think we'd want the flat structure of regular hls and fmp4 in the same folder as they share a similar structure and might be confusing if they're mixed together.

Maybe, but for Transcode API we can leave it "up to the user" and for Upload Task just add the /hls prefix in task-runner.

Maybe, but for Transcode API we can leave it "up to the user" and for Upload Task just add the /hls prefix in task-runner.

Ah i see what you're saying yeah that sounds good 👍

The current directory structure is like this:
So all the fmp4 files are embedded into the fmp4 directory. I think it's ok, but may be a little confusing for the Transcode API users. Imagine you send the following request:
{
    "input": {
        "url": "some-video-url"
    },
    "storage": {
        "type": "s3",
        "endpoint": "https://gateway.storjshare.io",
        "credentials": {
            "accessKeyId": "access-key",
            "secretAccessKey": "secret-key"
        },
        "bucket": "my-bucket"
    },
    "outputs": {
        "hls": {
            "path": "/hls/"
        },
        "mp4": {
            "path": "/mp4/"
        },
        "fragmented_mp4": {
           "path": "/fmp4"
        }
    }
}

Now, you could probably expect that your fmp4 files will end it in the /fmp4 location, but actually they'll end up in /fmp4/fmp4 location.
I leave it up to you, but thinking about it again, I'd probably flatten the fmp4 structure and then for our upload task, we would just add /fmp4 in the request between task-runner<>catalyst.

Got it, i'll open a ticket for us to make this change. For now only a single customer will likely be using fmp4 output.

LGTM 👍
Added one comment again about the directory structure.
Plus, do we support (want to support) fmp4 in the mediaconvert pipeline?

I think we probably want to in the future to keep both pipelines consistent. For now just livepeer pipeline should be sufficient. @thomshutt wdyt?


Retrun only coin withdraws it should return any currency withdraw history

https://github.com/rubykube/peatio/blob/6d8f57b24d4420928677e707c01a45b9c04614f6/app/api/v2/account/withdraws.rb#L17
Please change it to
values: { value: -> { Currency.enabled.codes(bothcase: true) }, message: 'account.currency.doesnt_exist'},

Hi @HafeezRai, you are right! We will change it.

@mnaichuk we don't allow of fiat withdrawals via user API.
For fiat we need to use management API.
I think what we need to do here is to update error message:

If currency doesn't exist return account.currency.doesnt_exist
If fiat currency return account.currency.non_crypto


[ BugFix ] Move zmq frontend to IPC instead of TCP

SUMMARY:

Using tcp required setting a port, which ran into some issues (https://github.com/vllm-project/vllm/issues/7196)
This resolves the problem by moving to ipc

PERFORMANCE:

In aggregate, performance looks ~same between ipc and tcp
TPOT for 10QPS L3-8B-Instruct on H100 w/ chunked prefill over 3 samples:

branch | run 1 | run 2 | run 3
------ | ----- | ----- | -----
pr     | 60.1  | 62.5  | 63.5
main   | 62.3  | 61.6  | 60.2

BEFORE SUBMITTING, PLEASE READ THE CHECKLIST BELOW AND FILL IN THE DESCRIPTION ABOVE

 PR Checklist (Click to Expand)
Thank you for your contribution to vLLM! Before submitting the pull request, please ensure the PR meets the following criteria. This helps vLLM maintain the code quality and improve the efficiency of the review process.
PR Title and Classification
Only specific types of PRs will be reviewed. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:

[Bugfix] for bug fixes.
[CI/Build] for build or continuous integration improvements.
[Doc] for documentation fixes and improvements.
[Model] for adding a new model or improving an existing model. Model name should appear in the title.
[Frontend] For changes on the vLLM frontend (e.g., OpenAI API server, LLM class, etc.)
[Kernel] for changes affecting CUDA kernels or other compute kernels.
[Core] for changes in the core vLLM logic (e.g., LLMEngine, AsyncLLMEngine, Scheduler, etc.)
[Hardware][Vendor] for hardware-specific changes. Vendor name should appear in the prefix (e.g., [Hardware][AMD]).
[Misc] for PRs that do not fit the above categories. Please use this sparingly.

Note: If the PR spans more than one category, please include all relevant prefixes.
Code Quality
The PR need to meet the following code quality standards:

We adhere to Google Python style guide and Google C++ style guide.
Pass all linter checks. Please use format.sh to format your code.
The code need to be well-documented to ensure future contributors can easily understand the code.
Include sufficient tests to ensure the project to stay correct and robust. This includes both unit tests and integration tests.
Please add documentation to docs/source/ if the PR modifies the user-facing behaviors of vLLM. It helps vLLM user understand and utilize the new features or changes.

Notes for Large Changes
Please keep the changes as concise as possible. For major architectural changes (>500 LOC excluding kernel/data/config/test), we would expect a GitHub issue (RFC) discussing the technical design and justification. Otherwise, we will tag it with rfc-required and might not go through the PR.
What to Expect for the Reviews
The goal of the vLLM team is to be a transparent reviewing machine. We would like to make the review process transparent and efficient and make sure no contributor feel confused or frustrated. However, the vLLM team is small, so we need to prioritize some PRs over others. Here is what you can expect from the review process:

 After the PR is submitted, the PR will be assigned to a reviewer. Every reviewer will pick up the PRs based on their expertise and availability.
 After the PR is assigned, the reviewer will provide status update every 2-3 days. If the PR is not reviewed within 7 days, please feel free to ping the reviewer or the vLLM team.
 After the review, the reviewer will put an  action-required label on the PR if there are changes required. The contributor should address the comments and ping the reviewer to re-review the PR.
 Please respond to all comments within a reasonable time frame. If a comment isn't clear or you disagree with a suggestion, feel free to ask for clarification or discuss the suggestion.

Thank You
 Finally, thank you for taking the time to read these guidelines and for your interest in contributing to vLLM. Your contributions make vLLM a great tool for everyone!

/ready


dotenv-path cannot find path starts with ~

like set dotenv-path "~/.mpm.config"

I think this would be reasonable to support. It should be easy to perform~ and possibly variable expansion $FOO in the argument to dotenv-path.


Getting warning "Undefined field" when retrieving value from vim.go options

If I assign a global option to either a local (buffer) option, or just a variable, I get warning "Undefined field":

NVIM v0.8.1
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by<EMAIL_ADDRESS>Features: +acl +iconv +tui
See ":help feature-compile"
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/opt/homebrew/Cellar/neovim/0.8.1/share/nvim"
Run :checkhealth for more info

Experiencing the same issue

Still happening for me.


Missing annotation for keyword 'in the range' and upper boundary with 2 asterisks

URL Hash
#/sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__/random_state
Expected Annotation Type
@boundary
Expected Annotation Inputs
[0, 2**32-1]
Minimal API Data (optional)

Minimal API Data for `sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__/random_state`
{
    "schemaVersion": 1,
    "distribution": "scikit-learn",
    "package": "sklearn",
    "version": "1.1.1",
    "modules": [
        {
            "id": "sklearn/sklearn.linear_model",
            "name": "sklearn.linear_model",
            "imports": [],
            "from_imports": [
                {
                    "module": "sklearn.linear_model._base",
                    "declaration": "LinearRegression",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._bayes",
                    "declaration": "ARDRegression",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._bayes",
                    "declaration": "BayesianRidge",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "ElasticNet",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "ElasticNetCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "enet_path",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "Lasso",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "lasso_path",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "LassoCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "MultiTaskElasticNet",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "MultiTaskElasticNetCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "MultiTaskLasso",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._coordinate_descent",
                    "declaration": "MultiTaskLassoCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._glm",
                    "declaration": "GammaRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._glm",
                    "declaration": "PoissonRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._glm",
                    "declaration": "TweedieRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._huber",
                    "declaration": "HuberRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._least_angle",
                    "declaration": "Lars",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._least_angle",
                    "declaration": "lars_path",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._least_angle",
                    "declaration": "lars_path_gram",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._least_angle",
                    "declaration": "LarsCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._least_angle",
                    "declaration": "LassoLars",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._least_angle",
                    "declaration": "LassoLarsCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._least_angle",
                    "declaration": "LassoLarsIC",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._logistic",
                    "declaration": "LogisticRegression",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._logistic",
                    "declaration": "LogisticRegressionCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._omp",
                    "declaration": "orthogonal_mp",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._omp",
                    "declaration": "orthogonal_mp_gram",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._omp",
                    "declaration": "OrthogonalMatchingPursuit",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._omp",
                    "declaration": "OrthogonalMatchingPursuitCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._passive_aggressive",
                    "declaration": "PassiveAggressiveClassifier",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._passive_aggressive",
                    "declaration": "PassiveAggressiveRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._perceptron",
                    "declaration": "Perceptron",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._quantile",
                    "declaration": "QuantileRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._ransac",
                    "declaration": "RANSACRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._ridge",
                    "declaration": "Ridge",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._ridge",
                    "declaration": "ridge_regression",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._ridge",
                    "declaration": "RidgeClassifier",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._ridge",
                    "declaration": "RidgeClassifierCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._ridge",
                    "declaration": "RidgeCV",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._sgd_fast",
                    "declaration": "Hinge",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._sgd_fast",
                    "declaration": "Huber",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._sgd_fast",
                    "declaration": "Log",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._sgd_fast",
                    "declaration": "ModifiedHuber",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._sgd_fast",
                    "declaration": "SquaredLoss",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._stochastic_gradient",
                    "declaration": "SGDClassifier",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._stochastic_gradient",
                    "declaration": "SGDOneClassSVM",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._stochastic_gradient",
                    "declaration": "SGDRegressor",
                    "alias": null
                },
                {
                    "module": "sklearn.linear_model._theil_sen",
                    "declaration": "TheilSenRegressor",
                    "alias": null
                }
            ],
            "classes": [
                "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier"
            ],
            "functions": []
        }
    ],
    "classes": [
        {
            "id": "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier",
            "name": "SGDClassifier",
            "qname": "sklearn.linear_model._stochastic_gradient.SGDClassifier",
            "decorators": [],
            "superclasses": [
                "BaseSGDClassifier"
            ],
            "methods": [
                "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__"
            ],
            "is_public": true,
            "reexported_by": [
                "sklearn/sklearn.linear_model"
            ],
            "description": "Linear classifiers (SVM, logistic regression, etc.) with SGD training.\n\nThis estimator implements regularized linear models with stochastic\ngradient descent (SGD) learning: the gradient of the loss is estimated\neach sample at a time and the model is updated along the way with a\ndecreasing strength schedule (aka learning rate). SGD allows minibatch\n(online/out-of-core) learning via the `partial_fit` method.\nFor best results using the default learning rate schedule, the data should\nhave zero mean and unit variance.\n\nThis implementation works with data represented as dense or sparse arrays\nof floating point values for the features. The model it fits can be\ncontrolled with the loss parameter; by default, it fits a linear support\nvector machine (SVM).\n\nThe regularizer is a penalty added to the loss function that shrinks model\nparameters towards the zero vector using either the squared euclidean norm\nL2 or the absolute norm L1 or a combination of both (Elastic Net). If the\nparameter update crosses the 0.0 value because of the regularizer, the\nupdate is truncated to 0.0 to allow for learning sparse models and achieve\nonline feature selection.\n\nRead more in the :ref:`User Guide <sgd>`.",
            "docstring": "Linear classifiers (SVM, logistic regression, etc.) with SGD training.\n\n    This estimator implements regularized linear models with stochastic\n    gradient descent (SGD) learning: the gradient of the loss is estimated\n    each sample at a time and the model is updated along the way with a\n    decreasing strength schedule (aka learning rate). SGD allows minibatch\n    (online/out-of-core) learning via the `partial_fit` method.\n    For best results using the default learning rate schedule, the data should\n    have zero mean and unit variance.\n\n    This implementation works with data represented as dense or sparse arrays\n    of floating point values for the features. The model it fits can be\n    controlled with the loss parameter; by default, it fits a linear support\n    vector machine (SVM).\n\n    The regularizer is a penalty added to the loss function that shrinks model\n    parameters towards the zero vector using either the squared euclidean norm\n    L2 or the absolute norm L1 or a combination of both (Elastic Net). If the\n    parameter update crosses the 0.0 value because of the regularizer, the\n    update is truncated to 0.0 to allow for learning sparse models and achieve\n    online feature selection.\n\n    Read more in the :ref:`User Guide <sgd>`.\n\n    Parameters\n    ----------\n    loss : {'hinge', 'log_loss', 'log', 'modified_huber', 'squared_hinge',        'perceptron', 'squared_error', 'huber', 'epsilon_insensitive',        'squared_epsilon_insensitive'}, default='hinge'\n        The loss function to be used.\n\n        - 'hinge' gives a linear SVM.\n        - 'log_loss' gives logistic regression, a probabilistic classifier.\n        - 'modified_huber' is another smooth loss that brings tolerance to\n           outliers as well as probability estimates.\n        - 'squared_hinge' is like hinge but is quadratically penalized.\n        - 'perceptron' is the linear loss used by the perceptron algorithm.\n        - The other losses, 'squared_error', 'huber', 'epsilon_insensitive' and\n          'squared_epsilon_insensitive' are designed for regression but can be useful\n          in classification as well; see\n          :class:`~sklearn.linear_model.SGDRegressor` for a description.\n\n        More details about the losses formulas can be found in the\n        :ref:`User Guide <sgd_mathematical_formulation>`.\n\n        .. deprecated:: 1.0\n            The loss 'squared_loss' was deprecated in v1.0 and will be removed\n            in version 1.2. Use `loss='squared_error'` which is equivalent.\n\n        .. deprecated:: 1.1\n            The loss 'log' was deprecated in v1.1 and will be removed\n            in version 1.3. Use `loss='log_loss'` which is equivalent.\n\n    penalty : {'l2', 'l1', 'elasticnet'}, default='l2'\n        The penalty (aka regularization term) to be used. Defaults to 'l2'\n        which is the standard regularizer for linear SVM models. 'l1' and\n        'elasticnet' might bring sparsity to the model (feature selection)\n        not achievable with 'l2'.\n\n    alpha : float, default=0.0001\n        Constant that multiplies the regularization term. The higher the\n        value, the stronger the regularization.\n        Also used to compute the learning rate when set to `learning_rate` is\n        set to 'optimal'.\n        Values must be in the range `[0.0, inf)`.\n\n    l1_ratio : float, default=0.15\n        The Elastic Net mixing parameter, with 0 <= l1_ratio <= 1.\n        l1_ratio=0 corresponds to L2 penalty, l1_ratio=1 to L1.\n        Only used if `penalty` is 'elasticnet'.\n        Values must be in the range `[0.0, 1.0]`.\n\n    fit_intercept : bool, default=True\n        Whether the intercept should be estimated or not. If False, the\n        data is assumed to be already centered.\n\n    max_iter : int, default=1000\n        The maximum number of passes over the training data (aka epochs).\n        It only impacts the behavior in the ``fit`` method, and not the\n        :meth:`partial_fit` method.\n        Values must be in the range `[1, inf)`.\n\n        .. versionadded:: 0.19\n\n    tol : float, default=1e-3\n        The stopping criterion. If it is not None, training will stop\n        when (loss > best_loss - tol) for ``n_iter_no_change`` consecutive\n        epochs.\n        Convergence is checked against the training loss or the\n        validation loss depending on the `early_stopping` parameter.\n        Values must be in the range `[0.0, inf)`.\n\n        .. versionadded:: 0.19\n\n    shuffle : bool, default=True\n        Whether or not the training data should be shuffled after each epoch.\n\n    verbose : int, default=0\n        The verbosity level.\n        Values must be in the range `[0, inf)`.\n\n    epsilon : float, default=0.1\n        Epsilon in the epsilon-insensitive loss functions; only if `loss` is\n        'huber', 'epsilon_insensitive', or 'squared_epsilon_insensitive'.\n        For 'huber', determines the threshold at which it becomes less\n        important to get the prediction exactly right.\n        For epsilon-insensitive, any differences between the current prediction\n        and the correct label are ignored if they are less than this threshold.\n        Values must be in the range `[0.0, inf)`.\n\n    n_jobs : int, default=None\n        The number of CPUs to use to do the OVA (One Versus All, for\n        multi-class problems) computation.\n        ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context.\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\n        for more details.\n\n    random_state : int, RandomState instance, default=None\n        Used for shuffling the data, when ``shuffle`` is set to ``True``.\n        Pass an int for reproducible output across multiple function calls.\n        See :term:`Glossary <random_state>`.\n        Integer values must be in the range `[0, 2**32 - 1]`.\n\n    learning_rate : str, default='optimal'\n        The learning rate schedule:\n\n        - 'constant': `eta = eta0`\n        - 'optimal': `eta = 1.0 / (alpha * (t + t0))`\n          where `t0` is chosen by a heuristic proposed by Leon Bottou.\n        - 'invscaling': `eta = eta0 / pow(t, power_t)`\n        - 'adaptive': `eta = eta0`, as long as the training keeps decreasing.\n          Each time n_iter_no_change consecutive epochs fail to decrease the\n          training loss by tol or fail to increase validation score by tol if\n          `early_stopping` is `True`, the current learning rate is divided by 5.\n\n            .. versionadded:: 0.20\n                Added 'adaptive' option\n\n    eta0 : float, default=0.0\n        The initial learning rate for the 'constant', 'invscaling' or\n        'adaptive' schedules. The default value is 0.0 as eta0 is not used by\n        the default schedule 'optimal'.\n        Values must be in the range `(0.0, inf)`.\n\n    power_t : float, default=0.5\n        The exponent for inverse scaling learning rate [default 0.5].\n        Values must be in the range `(-inf, inf)`.\n\n    early_stopping : bool, default=False\n        Whether to use early stopping to terminate training when validation\n        score is not improving. If set to `True`, it will automatically set aside\n        a stratified fraction of training data as validation and terminate\n        training when validation score returned by the `score` method is not\n        improving by at least tol for n_iter_no_change consecutive epochs.\n\n        .. versionadded:: 0.20\n            Added 'early_stopping' option\n\n    validation_fraction : float, default=0.1\n        The proportion of training data to set aside as validation set for\n        early stopping. Must be between 0 and 1.\n        Only used if `early_stopping` is True.\n        Values must be in the range `(0.0, 1.0)`.\n\n        .. versionadded:: 0.20\n            Added 'validation_fraction' option\n\n    n_iter_no_change : int, default=5\n        Number of iterations with no improvement to wait before stopping\n        fitting.\n        Convergence is checked against the training loss or the\n        validation loss depending on the `early_stopping` parameter.\n        Integer values must be in the range `[1, max_iter)`.\n\n        .. versionadded:: 0.20\n            Added 'n_iter_no_change' option\n\n    class_weight : dict, {class_label: weight} or \"balanced\", default=None\n        Preset for the class_weight fit parameter.\n\n        Weights associated with classes. If not given, all classes\n        are supposed to have weight one.\n\n        The \"balanced\" mode uses the values of y to automatically adjust\n        weights inversely proportional to class frequencies in the input data\n        as ``n_samples / (n_classes * np.bincount(y))``.\n\n    warm_start : bool, default=False\n        When set to True, reuse the solution of the previous call to fit as\n        initialization, otherwise, just erase the previous solution.\n        See :term:`the Glossary <warm_start>`.\n\n        Repeatedly calling fit or partial_fit when warm_start is True can\n        result in a different solution than when calling fit a single time\n        because of the way the data is shuffled.\n        If a dynamic learning rate is used, the learning rate is adapted\n        depending on the number of samples already seen. Calling ``fit`` resets\n        this counter, while ``partial_fit`` will result in increasing the\n        existing counter.\n\n    average : bool or int, default=False\n        When set to `True`, computes the averaged SGD weights across all\n        updates and stores the result in the ``coef_`` attribute. If set to\n        an int greater than 1, averaging will begin once the total number of\n        samples seen reaches `average`. So ``average=10`` will begin\n        averaging after seeing 10 samples.\n        Integer values must be in the range `[1, n_samples]`.\n\n    Attributes\n    ----------\n    coef_ : ndarray of shape (1, n_features) if n_classes == 2 else             (n_classes, n_features)\n        Weights assigned to the features.\n\n    intercept_ : ndarray of shape (1,) if n_classes == 2 else (n_classes,)\n        Constants in decision function.\n\n    n_iter_ : int\n        The actual number of iterations before reaching the stopping criterion.\n        For multiclass fits, it is the maximum over every binary fit.\n\n    loss_function_ : concrete ``LossFunction``\n\n    classes_ : array of shape (n_classes,)\n\n    t_ : int\n        Number of weight updates performed during training.\n        Same as ``(n_iter_ * n_samples)``.\n\n    n_features_in_ : int\n        Number of features seen during :term:`fit`.\n\n        .. versionadded:: 0.24\n\n    feature_names_in_ : ndarray of shape (`n_features_in_`,)\n        Names of features seen during :term:`fit`. Defined only when `X`\n        has feature names that are all strings.\n\n        .. versionadded:: 1.0\n\n    See Also\n    --------\n    sklearn.svm.LinearSVC : Linear support vector classification.\n    LogisticRegression : Logistic regression.\n    Perceptron : Inherits from SGDClassifier. ``Perceptron()`` is equivalent to\n        ``SGDClassifier(loss=\"perceptron\", eta0=1, learning_rate=\"constant\",\n        penalty=None)``.\n\n    Examples\n    --------\n    >>> import numpy as np\n    >>> from sklearn.linear_model import SGDClassifier\n    >>> from sklearn.preprocessing import StandardScaler\n    >>> from sklearn.pipeline import make_pipeline\n    >>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])\n    >>> Y = np.array([1, 1, 2, 2])\n    >>> # Always scale the input. The most convenient way is to use a pipeline.\n    >>> clf = make_pipeline(StandardScaler(),\n    ...                     SGDClassifier(max_iter=1000, tol=1e-3))\n    >>> clf.fit(X, Y)\n    Pipeline(steps=[('standardscaler', StandardScaler()),\n                    ('sgdclassifier', SGDClassifier())])\n    >>> print(clf.predict([[-0.8, -1]]))\n    [1]\n    "
        }
    ],
    "functions": [
        {
            "id": "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__",
            "name": "__init__",
            "qname": "sklearn.linear_model._stochastic_gradient.SGDClassifier.__init__",
            "decorators": [],
            "parameters": [
                {
                    "id": "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__/random_state",
                    "name": "random_state",
                    "qname": "sklearn.linear_model._stochastic_gradient.SGDClassifier.__init__.random_state",
                    "default_value": "None",
                    "assigned_by": "NAME_ONLY",
                    "is_public": true,
                    "docstring": {
                        "type": "int, RandomState instance, default=None",
                        "description": "Used for shuffling the data, when ``shuffle`` is set to ``True``.\nPass an int for reproducible output across multiple function calls.\nSee :term:`Glossary <random_state>`.\nInteger values must be in the range `[0, 2**32 - 1]`."
                    },
                    "type": {}
                }
            ],
            "results": [],
            "is_public": true,
            "reexported_by": [],
            "description": "",
            "docstring": ""
        }
    ]
}

Minimal Usage Store (optional)

Minimal Usage Store for `sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__/random_state`
{
    "schemaVersion": 1,
    "module_counts": {
        "sklearn/sklearn.linear_model": 22014
    },
    "class_counts": {
        "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier": 871
    },
    "function_counts": {
        "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__": 841
    },
    "parameter_counts": {
        "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__/random_state": 560
    },
    "value_counts": {
        "sklearn/sklearn.linear_model._stochastic_gradient/SGDClassifier/__init__/random_state": {
            "0": 49,
            "1": 7,
            "5": 1,
            "9": 1,
            "10": 1,
            "14": 1,
            "20": 1,
            "25": 19,
            "31": 1,
            "34": 1,
            "42": 446,
            "55": 1,
            "69": 1,
            "99": 1,
            "101": 1,
            "123": 4,
            "171": 3,
            "910": 2,
            "2018": 1,
            "None": 293,
            "seed": 2,
            "random_state": 1,
            "RND_ST": 1,
            "RS": 1,
            "RANDOM_STATE": 1
        }
    }
}

Suggested Solution (optional)
No response
Additional Context (optional)
Not sure if the boundary was not recognized because of the keyword or the upper bound.

Duplicate of #856.


[bug]: New Shadcn CLI for VITE React Projects - No Tailwind CSS configuration found

Describe the bug
When following the vite project setup guide you will get an error when you get to the step where you run the pnpm dlx shadcn@latest init command. This is due to the index.css missing the tailwind css headers. The documentation needs to be updated at step 2 to.
I've created a pull request with the fix here https://github.com/shadcn-ui/ui/pull/4676
Affected component/components
None
How to reproduce

Follow Documentation for setting up vite react project.
Get to step 6 and run the command to get the error.

Codesandbox/StackBlitz link
No response
Logs
PS C:\Users\Dwight\Documents\Develop\Typescript\React\pet-form-lhs> npx shadcn@latest init
✔ Preflight checks.
✔ Verifying framework. Found Vite.
✖ Validating Tailwind CSS.
✔ Validating import alias.

No Tailwind CSS configuration found at C:\Users\Dwight\Documents\Develop\Typescript\React\pet-form-lhs.
It is likely you do not have Tailwind CSS installed or have an invalid configuration.
Install Tailwind CSS then try again.
Visit https://tailwindcss.com/docs/guides/vite to get started.

System Info
Windows 11

Before submitting

[X] I've made research efforts and searched the documentation
[X] I've searched for existing issues

I am also facing the same issue

I am also facing the same issue

If someone stumbles upon this issue from Google, add the following tailwind headers to index.css of you project -
@tailwind base;
@tailwind components;
@tailwind utilities;

same issue

Same issue in Astro Project

Just add the following to your index.css:
@tailwind base;
@tailwind components;
@tailwind utilities;

If someone stumbles upon this issue from Google, add the following tailwind headers to index.css of you project -
@tailwind base;
@tailwind components;
@tailwind utilities;

In my case I added ithem in src/styles/globals.css

The new documentation is completely messed up haha, The answer above is great!

just add these lines in index.css  or in global.css
@tailwind base;
@tailwind components;
@tailwind utilities;
and than you need to add the following in tailwind.config.css
content: ["./src//*.{js,jsx,ts,tsx}"],**
otherwise tailwind will not properly load.

I have the same issue with React + Vite using SCSS and TypeScript.
TailwindCSS is already installed and working.
This is the error I am getting:
✔ Preflight checks.
✔ Verifying framework. Found Vite.
✖ Validating Tailwind CSS.
✔ Validating import alias.

No Tailwind CSS configuration found at /project-folder-path.
It is likely you do not have Tailwind CSS installed or have an invalid configuration.
Install Tailwind CSS then try again.

People who are using SCSS for styling in React + Vite + TypeScript, you can just create an index.scss in the src folder where main file is and just  add the mentioned code and imprort this file in your main.ts/index.ts
@tailwind base;
@tailwind components;
@tailwind utilities;

People who are using SCSS for styling in React + Vite + TypeScript, you can just create an index.css in the src folder where main file is and just add the mentioned code and imprort this file in your main.ts/index.ts
@tailwind base;
@tailwind components;
@tailwind utilities;

@Amankori2307 Thank you, this worked!

Update your /src/index.css file:
Add the following Tailwind directives:
@tailwind base;
@tailwind components;
@tailwind utilities;

Configure your tailwind.config.js file:
Ensure that the content property includes all relevant file extensions. It should look like this:
module.exports = {
  // other configurations
  content: ["./src/**/*.{js,jsx,ts,tsx}"],
  // other configurations
};

Can confirm the fixes outlined here work.

After install, you can change aliases, paths in component.json with your vite config.

It works after following https://tailwindcss.com/docs/guides/vite

Alright, if you are still struggling, here's a solution.

My missing part was: I had no globals.[css,scss,sass] at the root of your project. I created it.
I added the tailwindcss markers:

@tailwind base;
@tailwind components;
@tailwind utilities;

Ran again npx shadcn@latest init

If you are using js rather then ts then you may come through this problem
solution:Enter this in src/index.css
@tailwind base;
@tailwind components;
@tailwind utilities;

Had the same issue in nextjs.
Tailwind was setuped correctly with
@import 'tailwindcss/base'; @import 'tailwindcss/components'; @import 'tailwindcss/utilities';
in globals.scss, but the problem was still there.
The problem was that the global file need to be a .css file and not .scss

I had the same issue and I solved it moving my index.css file from ./public directory to the ./src/styles directory

Should this not be added to the docs though? In the situation that you create a Vite app and install shadcn afterwards, mentioning to add this to index.css + the tailwind.config.js config would be useful.

I also had the same issue and in the CLI gives a link for the tailwind docs
Visit https://tailwindcss.com/docs/guides/vite to get started.
At tailwind docs its gives full documentation about how to setup
Add the @tailwind directives for each of Tailwind’s layers to your ./src/index.css file.
@tailwind base;
@tailwind components;
@tailwind utilities;

Adding Directives in index.css works but this was automated months ago, wasnt it? I dont remember doing this step

Adding Directives in index.css works but this was automated months ago, wasnt it? I dont remember doing this step

i don't think so. Because i got the same issue recently.

This solution has 2 steps:
 1. Add these three commands in index.css or global.css
     @tailwind base;
     @tailwind components;
     @tailwind utilities;

  2. Change only content values like the below
  export default {
             content: ['./app/**/*.{js,ts,jsx,tsx}']
   ...}

I have all the steps done as discussed above, but the error still remain the same same. I was initially working with .csj files but even with a complete new setup of tailwindcss still didnt' take away the error.

Someone should make a PR to update the doc

The solution from above solve the problem but my UI felt weird, am I miss something?

I also get some error about the tailwindcss-animate

@tailwind base;
@tailwind components;
@tailwind utilities;

Why is this not in the guide!?

If someone stumbles upon this issue from Google, add the following tailwind headers to index.css of you project -
@tailwind base;
@tailwind components;
@tailwind utilities;

thanks!


Load google maps version '3' instead of '3.18'

Fetches latest stable 3.x version. 3.18 is obsolete and results in a warning.

bump

Accept it! Plis.

This was not accepted bec. of version 2 development which is a complete re-write.
Now this is resolved in v2 (released) and it's configurable.
Pls see the docs.
Thanks.


AllowEmptyStrings not generated in CSharp

Hi,
NJsonSchema has support for DataAnnotations Required[AllowEmptyStrings=true] but for some reason, when the DTO classes in generated from the NSwag generator, it does not work. Using the NJsonSchema generator directly works.
I saw that NJsonSchema has two unit test and one of them When_property_is_required_then_required_attribute_is_rendered does not produce AllowEmptyStrings. But I can't see the difference with When_property_is_required_then_required_attribute_is_rendered_in_Swagger_mode.
Is there a settings for that in NSwag ?

NJS has a setting SchemaType (JsonSchema, Swagger2, OpenApi3). The problem here is that json schema has the concept of null and required wheras swagger only knows required... this is why we cant handle this scenario correctly in swagger - maybe with x-nullable custom extension?

Not sure if the code generators actually generate AllowEmptyStrings

Just checked this AllowEmptyStrings = false will set MinLength to 1... and it's only doing this for JsonSchema (why? Probably because it would set it almost always as the default of AllowEmptyStrings is false)

So maybe we should set this for all schema types and in the code generator we render AllowEmptyStrings = true/false based on the MinLength and when the schema type is string?

Ref: https://github.com/RSuter/NJsonSchema/issues/617
Actually we only need to remove the schema type check

Just to be in phase, I generate the c# dto.
In NJsonSchema, the AllowEmptyStrings property on the PropertyModel seems good to me and it make no difference on the schema type.

Huh?
Current implementation is with a schema type check:

Not sure if this is a good idea because external specs (not generated by nswag) will now always render AllowEmptyStrings = true which is probably not intended... maybe we need a setting for this

In swagger empty string "" is a valid string unless minLength or pattern is specified.
So it basicly the same interpretation of empty string as JsonSchema.
nullable appears in swagger 3, but it should not affect the AllowEmptyString behavior.

Ok, then the current implementation is correct even if most people won't expect it like that? I bet most will not set MinLength to 1 even if they want to avoid empty strings :)

Though, it is a breaking changes for sure as MVC will now accept value people is not used to.

Yeah, but 90% of the time the generated code is used in the client and these attributes are not used anyway... the server will still behave as before.

Ok, we are all set then.
Thanks

I hate making these breaking changes but it's always a compromise between a breaking change and an additional setting (more complexity) which needs to be maintained forever :)

/cc @paulomorgado what do you think? Is this ok?

I'm not knowledgeable of this subject enough to have an educated opinion. I am, however, very sensible to breaking changes. What are we talking about here?

This will change how [Required] attributes are generated.
Previously:
Schema generator: [Required(AllowEmptyStrings=false) and [Required(AllowEmptyStrings=true) generated required but no minlength=1
Code generator:

required but no minlength=1 => [Required]
required AND minlength=1 => [Required][MinLenght(1)]

Now:
Schema generator:

[Required(AllowEmptyStrings=false) and `` and [Required(AllowEmptyStrings=true) generated required but no minlength=1

Code generator:

required but no minlength=1 => [Required(AllowEmptyStrings = true)]
required AND minlength=1 => [Required(AllowEmptyStrings = false)]

This might now be a problem for external schemas where minlength is not 1 => will generate [Required(AllowEmptyStrings = true)] which is correct but maybe not expected.
/cc @paulomorgado

I'm a bit confused as to what is being generated. For example:
public class Idea
    {
        [Required]
        [StringLength(10)]
        public string Name { get; set; }

        [Required]
        [MaxLength(5000)]
        public string Description { get; set; }
    }

Will generate the following:
[Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)]
[System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)]
[System.ComponentModel.DataAnnotations.StringLength(10)]
public string Name { get; set; }

[Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Always)]
[System.ComponentModel.DataAnnotations.Required]
[System.ComponentModel.DataAnnotations.StringLength(5000, MinimumLength = 1)]

Effectively, are they not the same thing? Why would one be required with an empty string, but the other is not?


Memory leak v0.26 RKObjectMappingOperationDataSource

I found a memory leak in my app while using instruments. Each time I perform a network operation a new  RKObjectMappingOperationDataSource is allocated and never released.
It seems like the problem is in RKResponseMapperOperation.m line 424:
self.mapperOperation.mappingOperationDataSource = dataSource;
If I change inside RKMapperOperation.h:
@property (nonatomic, strong) id<RKMappingOperationDataSource> mappingOperationDataSource; to be a weak property the leak is not there anymore. But in this way I get a warning in the initWithRepresentation:mappingsDictionary inside RKMapperOperation.m.

Let me know if you need more info about this.

Even I am having the same issue with the new RestKit

It seems like #2399 fixes this issue as well.


"Catane" , "Catanele Noi" are listed in the drop-down menu

Description:
When user writes "Catane" , "Catanele Noi"  the locations appear in the drop-down menu next to the comune and the county witch is a part according to the law.
Precondition:
The website is up an running.

Step 1
Write in the search bar "Catane"

Expected results
The location appears in the drop-down menu as "Sat Catane, DOLJ (Catane)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.


Shrink Binary Size

I finally got to looking at this. I'm not sure what is going wrong in the branch, but my local build of this fork is having metric problems:

I need to spend more time digging in, but I'm hesitant to merge this in the current state if it regress in this way.

I think it may be related to the fact that it isn't loading my configured font properly. I'm not sure what changed in the font discovery though...

@Kethku can you send me your font config because i think i know what's wrong

It's "Delugia\ Nerd\ Font". I can link to the actual config tomorrow

@Kethku yeah i see, it was this as i didn't handle if the font only had one variant like Delugia Nerd Font, only had Regular, so when bold/italic etc was getting added and aren't found nothing was added to the collection.
In the old implementation it automatically fell back to whatever found inside that font because of select_best_match
Hopefully my latest commit fixed that though

Trying shortly

:( It still can't load my delugia nerd font.

@Kethku but i installed delugia and it worked, can you link me the font + the config so i can see what's causing that?

https://github.com/Kethku/vim-config
https://github.com/Kethku/vim-config/blob/master/fnl/dotfiles/module/settings.fnl#L57
My config is written in fennel (lispy lua) so I'll try again this evening. The delugia nerd font is from here: https://github.com/adam7/delugia-code/releases

@Kethku to confirm a suspicion can you try manually setting the font like that?
set guifont=Delugia\ Nerd\ Font\ Book:h14

Oh woops typo haha

This shows two separate issues:

The default font on windows has metrics problems
The system isn't loading the configured guifont because the font is wrong and the ligatures don't match.

It does appear to be loading the font size correctly, just not the font name

I will dig deeper in tonight

i believe it's a fontkit issue then, because it works fine on mac so for some reason select_family_by_name maybe doesn't load the font?
Hint: this doesn't look like it even loaded the font at all, because this is how neovide looks if no font were loaded (i can tell from the cursor being ahead of the text)

So yeah. I seem to recall that select_family_by_name was less preferable than the select_best_match because of this very reason. select_best_match will do a best effort matching of the font by name if it can't find an exact match.
This part of the codebase used select_family_by_name original but had to switch over before your changes.
As for the default font having cursor issues, that means that the default font (however it is selected) is incorrect because it isn't monospace which is required by vim's system.

@Kethku Consolas is monospace. So i am sure it's a loading issue then, but we need select_family because it saves us multiple file system calls if a font contains multiple variants. so instead of calling select_best_match 3 times for each variant, we load the whole thing and it becomes cheap loading it's variants like this

weirdly I don't think consolas is being loaded here because setting the guifont to consolas before this PR doesn't have the same metrics issues.

@Kethku yeah it's not loaded for sure, select_family_by_name should be working though,  so maybe you can fiddle a little bit deeper to see what seems to be the culprit? i do believe that the current implementation should work correctly on linux as it's on macos on my end. For some reason windows isn't though

And as confirmation, setting guifont to consolas in your branch works properly and removes the cursor gap

@Kethku so select_family_by_name works but not with Delugia for some weird reason?

Looks that way

I vaguely remember this as well. select_family_by_name might not handle spaces properly on windows...

@Kethku i'd check if in system fonts Delugia is exactly named Delugia Nerd Font, maybe something to do with space escaping? Maybe on windows it requires the extension, all these little quirks

@Kethku Something funny came to my head, it might be the backward slash \ in the escaping as windows uses that as a path delimiter, so instead of loading Delugia Nerd Font it tries to look for \path\Delugia\Nerd\Font

maaaaybe... Guifont requires backslash and I'm pretty sure we escape the values in the guifont handling...

@Kethku  idk but i feel like that should be the culprit, because that explains why it runs on macos/linux normally as it uses forward / slash for path

Ok figured out some more bits.  My desktop has the font installed by default, but my work laptop did not. My bad.
However the font setting isn't getting picked up on startup. So there is a bug still around where the font system isn't loading on startup but will load afterward.
Further the above investigation highlights that font fallback isn't working. The font system isn't using the default font if the configured font isn't found. This is a bug that needs fixed I think
Thanks again for the awesome investigation and sorry for nit picking these small issues

@Kethku i think i know the issue of not falling back as my current implementation assumes configuration to be the source of truth, however i believe it should be easily fixable by adding system defaults to the fallbacks
And you absolutely shouldn't be sorry for nit picking, that's why neovide is neat and polish, we shouldn't merge the changes unless they work for the better.

@Kethku could you checkout latest commit, it should resolve the issue. albeit needs to be refactored (very late at night so kinda butchered it)

This branch is working for me now! Awesome work.

I added a couple of minor comments, but in general I'm hugely impressed. This is a fantastic improvement in organization and is way more principled than the spaghetti that was here before. After you respond to the couple of comments I will merge this as soon as possible

This is looking good to me. Anything else needed before I merge?

@Kethku i believe that's it


[Workflow] Only show active workflows in task usage

and cleans up a duplicate property

The Travis build passed, so merged in 77c8b71


Cannot find the shaders

Hi,
I finally got Rocky to compile on Ubuntu with Clion. But the rsimple application cannot find the shaders. Where they are?
Sincerely,
Michel Guenin

When you build the INSTALL target created by CMake, the shaders will copy into ${CMAKE_INSTALL_PREFIX}/share/shaders.
Set your environment variable ROCKY_FILE_PATH to that location.

@Conan42  Can you help me with compiling Rocky with Ubuntu, i am facing many errors while building

Happy to try to help.

@gwaldron I cloned the main branch and tried to build from source where i get multiple errors like include  in common.h file  , plenty of headers are mixed up between vsg/terrain  and vsg/terrain-dbpager and many other error's.
I faced this while trying to build in Ubuntu.

Please explain your build procedure, because there is no way you should be seeing a dormant folder like vsg/terrain-dbpager in your build. You are using CMake, aren't you?

Hello,
I managed to build it on Ubuntu. There were 11 errors.
Afterwards I gave up because I can't change the map sources. If you leave me an email, I'll send you the archive.
Sincerely,
Michel Guenin

@gwaldron @Conan42, Sorry that i couldn't get back to you any sooner , anyhow i was able to build it in Linux machine but facing the following errors while trying to run any of the rocky examples,
./rocky_simple
[rocky warning] Cannot load font "times.vsgb"
[rocky info] Running from: /home/raghul/local/bin/
[rocky info] Entity compiler thread starting up.
[vsg info] [Vulkan] Loading layer library libVkLayer_MESA_device_select.so
[vsg info] [Vulkan] Failed to find vkGetDeviceProcAddr in layer libVkLayer_MESA_device_select.so
Segmentation fault (core dumped)
i have double checked my vulkan installation and i don't see any issues in my vulkan installation

times.vsgb is in the installed share/data folder. You can point your VSG_FILE_PATH environment variable there to find it. This might be the cause of your core dump, but I cannot say without a gdb stack trace.
As for the Vulkan errors, these are coming from VSG so you might want to ask over on the VSG discussions group.
FWIW, I also see these errors running under Ubuntu 22 WSL. Not everything works properly, but it doesn't crash.


docs: Note to clarify the rotation is around the (x,y) , not (cx,cy)

Added a line in docs. Just a Sidenote

Hey @syedfquadri thank you for your docs fix!
really really appreciate it!  :)

@nicholasrq if you have a moment, can you confirm and merge?


Bug: Crash with FirstChanceException: Unable to read data from the transport connection

Describe the bug
The application crashes quite often with an exception in it's log.
To Reproduce
Steps to reproduce the behavior:

run the application
wait for a short period of time
it crashes
Check the log which shows the exception

Expected behavior
No Crash
Screenshots
No screenshot
Misc info (please complete the following information):

Windows build (ideally screenshot/info of winver.exe output):

Windows' UI language:  English

HASS.Agent version:  2022.14.0

Please check what's applicable (multiple answers possible):

[x] Installed via installer
[x] Installed manually
[x] Problem occurs in HASS.Agent
[ ] Problem occurs in Satellite Service

Additional context
NA
Logs
2023-08-03 00:33:16.364 -04:00 [INF] [MAIN] HASS.Agent version: 2022.14.0
2023-08-03 00:33:16.366 -04:00 [INF] [MAIN] Extended logging enabled
2023-08-03 00:33:16.369 -04:00 [INF] [SETTINGS] Config storage path: C:\Users\DuoDuo\AppData\Roaming\LAB02 Research\HASS.Agent\config
2023-08-03 00:33:16.462 -04:00 [INF] [SETTINGS] Configuration loaded
2023-08-03 00:33:16.465 -04:00 [INF] [LOCALIZATION] Selected UI culture: [en] English
2023-08-03 00:33:16.650 -04:00 [INF] [SETTINGS_QUICKACTIONS] Config not found, no entities loaded
2023-08-03 00:33:16.651 -04:00 [INF] [SETTINGS_COMMANDS] Config not found, no entities loaded
2023-08-03 00:33:21.601 -04:00 [INF] [SETTINGS_SENSORS] Loaded 4 entities
2023-08-03 00:33:21.605 -04:00 [INF] [LOCALAPI] Disabled
2023-08-03 00:33:21.607 -04:00 [INF] [MQTT] Identifying as device: DESKTOP-Windows
2023-08-03 00:33:21.608 -04:00 [INF] [SERVICE] Local install path: C:\Program Files (x86)\LAB02 Research\HASS.Agent Satellite Service
2023-08-03 00:33:21.611 -04:00 [INF] [HOTKEY] Completed bind for global quickaction hotkey
2023-08-03 00:33:21.612 -04:00 [INF] [MQTT] Connecting ..
2023-08-03 00:33:21.628 -04:00 [INF] [MEDIA] Disabled
2023-08-03 00:33:21.654 -04:00 [INF] [MQTT] Connected
2023-08-03 00:33:21.658 -04:00 [INF] [HASS_API] Home Assistant version: 2023.8.0
2023-08-03 00:33:21.683 -04:00 [INF] [NOTIFIER] Ready
2023-08-03 00:33:21.738 -04:00 [INF] [HASS_API] System connected with http://homeassistant.local:8123
2023-08-03 00:33:23.621 -04:00 [INF] [MQTT] Initial registration completed
2023-08-03 00:35:36.718 -04:00 [FTL] [PROGRAM] FirstChanceException: Unable to read data from the transport connection: The I/O operation has been aborted because of either a thread exit or an application request..
System.IO.IOException: Unable to read data from the transport connection: The I/O operation has been aborted because of either a thread exit or an application request..
---> System.Net.Sockets.SocketException (995): The I/O operation has been aborted because of either a thread exit or an application request.
--- End of inner exception stack trace ---
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(Int16 token)
at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory`1 buffer)

Hello,
Does the crash happen when there are no sensor/command configured?
Is it possible that the crash is happening when any notification action would occur?

Exit Hass.Agent if it hasn't crash yet...
Go to UserName/AppData/Roaming/LAB02 Research/HASS.Agent/config - and rename sensors.json to something else, ex: sensors_off.jason.
Then start Hass.Agent and see if there's any kind of crash.

Hello,
Does the crash happen when there are no sensor/command configured? Is it possible that the crash is happening when any notification action would occur?

There are some configured sensors, but no command. No, no notification was ever triggered.

Exit Hass.Agent if it hasn't crash yet...
Go to UserName/AppData/Roaming/LAB02 Research/HASS.Agent/config - and rename sensors.json to something else, ex: sensors_off.jason.
Then start Hass.Agent and see if there's any kind of crash.

Well.. yes, there is no crash any longer. But all configured sensors are gone.

Exit Hass.Agent if it hasn't crash yet...
Go to UserName/AppData/Roaming/LAB02 Research/HASS.Agent/config - and rename sensors.json to something else, ex: sensors_off.jason.
Then start Hass.Agent and see if there's any kind of crash.

Well.. yes, there is no crash any longer. But all configured sensors are gone.

But now you know where's the problem.
Did you change something recently? Hardware, for instance?
In json you can't comment as in yaml, with #"...".#
So the only alternative I can think of is to duplicate the file "sensors.json" and save it somewhere else.
Then:

Exit Hass.Agent.
Return to the config folder, rename once again the "sensors_off.json" (or whatever you name it) to "sensors.json".
Delete sensor, one by one, and save every time.
Restart Hass.Agent, until you find the one sensor that creates the crash.

Exit Hass.Agent if it hasn't crash yet...
Go to UserName/AppData/Roaming/LAB02 Research/HASS.Agent/config - and rename sensors.json to something else, ex: sensors_off.jason.
Then start Hass.Agent and see if there's any kind of crash.

Well.. yes, there is no crash any longer. But all configured sensors are gone.

But now you know where's the problem.
Did you change something recently? Hardware, for instance?
In json you can't comment as in yaml, with #"...".# So the only alternative I can think of is to duplicate the file "sensors.json" and save it somewhere else.
Then:

Exit Hass.Agent.
Return to the config folder, rename once again the "sensors_off.json" (or whatever you name it) to "sensors.json".
Delete sensor, one by one, and save every time.
Restart Hass.Agent, until you find the one sensor that creates the crash.

Thanks! I have done what you suggested. It turned out the GPU load sensor is the evil one. but why is that? I previously did not modify anything manually in the sensors.conf file. All sensors in this file were created from the GUI including the GPU one. Maybe it is something worth to investigate?
{
"Type": "GpuLoadSensor",
"Id": "8612cc9b-007a-4c46-ad6b-37e66e5716d8",
"UpdateInterval": 30,
"Query": "",
"Scope": null,
"WindowName": "",
"Category": "",
"Counter": "",
"Instance": "",
"Name": "DESKTOP-Windows_gpuload"
},

Thanks! I have done what you suggested. It turned out the GPU load sensor is the evil one. but why is that? I previously did not modify anything manually in the sensors.conf file. All sensors in this file were created from the GUI including the GPU one. Maybe it is something worth to investigate? { "Type": "GpuLoadSensor", "Id": "8612cc9b-007a-4c46-ad6b-37e66e5716d8", "UpdateInterval": 30, "Query": "", "Scope": null, "WindowName": "", "Category": "", "Counter": "", "Instance": "", "Name": "DESKTOP-Windows_gpuload" },

:shrug:
One alternative is to have, for exemple, Open Hardware Monitor.
Then in Hass.Agent create a WMI Query's sensor. See Documentation.
 WMI Explorer should help with that... Kind of like MQTT Explorer.
Oh, and don't forget that the value will be without a unit (%); so you will have to create a sensor/template:
Something like:
      - name: "PC - GPU Load"
        unique_id: pc_gpu_load
        state: >
         {{states('sensor.pc_wmiquery_gpu_load')}}
        unit_of_measurement: "%"

And use that entity for your data collection.

Thanks for the workaround. GPU load is not important to me. So I will just simply keep it away from my configutration for now.


[stable/kibana] Add customizable service selector

What this PR does / why we need it:
Adds possibility to configure service selector. This functionality is necessary when you have a parent chart which installs multiple kibana instances from this chart. In such case you should add custom Values.podLabels for kibana deployment and point a service to it via customizable selector implemented by this PR.
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md

/ok-to-test
/lgtm


1.8.1-win32 on windows xp

https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-win32-full-1.8.1.zip

This also happened on a Windows 10 Pro 64 bit.
I added the DLL to SimpleDNSCrypt https://github.com/bitbeans/SimpleDnsCrypt/blob/master/SimpleDnsCrypt/dnscrypt-proxy/libgcc_s_sjlj-1.dll

Good catch :/
Indeed, it looks like an additional linked flag is required to avoid having to ship this extra DLL.
I updated the .zip file to include that DLL. Thanks!


build: add typoci config file

closes #67

Pull Request Test Coverage Report for Build 475845699

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

Totals

Change from base Build 475819583:
0.0%

Covered Lines:
76

Relevant Lines:
80

💛  - Coveralls

Pull Request Test Coverage Report for Build 475845699

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

Totals

Change from base Build 475819583:
0.0%

Covered Lines:
76

Relevant Lines:
80

💛  - Coveralls

Pull Request Test Coverage Report for Build 475845699

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

Totals

Change from base Build 475819583:
0.0%

Covered Lines:
76

Relevant Lines:
80

💛  - Coveralls

Pull Request Test Coverage Report for Build 475845699

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

Totals

Change from base Build 475819583:
0.0%

Covered Lines:
76

Relevant Lines:
80

💛  - Coveralls