Refresh token implementation

Hey! First and foremost, I hope this issue doesn't come off as a complaint, as I quite like the direction this project is going, the quality of the code, test coverage, etc.
That said, I do think the way the refresh token is handled could be improved in a few areas.

The tokenAuth mutation can return a refresh token. However, it does not set the JWT-refresh-token cookie.
The refreshToken mutation can return the token, and sets the cookie correctly. However, it generates a new refresh token with every call.
This means that in order to get a JWT-refresh-token, you need to first send a tokenAuth mutation, then a refreshToken mutation, and you get two different tokens. Running another refreshToken generates a new token.
When using long running refresh tokens, this pollutes the database (IMO). For example, if you have 10,000 users refreshing a token every 5 minutes for 8 hours a day, during 250 work days (e.g. if they use your app all day for work), you would get 240,000,000 tokens per year. This does not scale well. It also means that you may have millions of valid tokens at any one time.
The refresh token is returned as part of the payload. Personally, I think it should be returned in a cookie only, as that would offer some protection against client-side attacks.
Relatedly, the refreshToken mutation expects a valid token as part of its parameters, which means that the token has to be exposed.

Also, the cookie currently feels kind of pointless to me (although I am admittedly far from a JWT expert, and this may be me misunderstanding the current implementation). Here is my understanding.

Saving the JWT inside a cookie makes it vulnerable to CSRF attacks (although Django has pretty good CSRF protection, decreasing the attack surface is always good).
The cookies are HttpOnly (as they should be), meaning they cannot be accessed from JS. This protects them from XSS, but also means that JS frameworks cannot read them to request a refresh.
The package does not read the cookies (as far as I can tell) or offer a way to read them (of course, this can be done in Django, but I think the JWT package should handle that). In that case, is there even a point in setting them?

A few things I see that could improve the current implementation:

Return a refresh cookie from the tokenAuth mutation if the refreshToken query is requested.
Add a "minimum age before refresh" setting. Then, if you have a long running refresh token with a validity of e.g. 60 days, and give it a minimum age of 1 day, your 10,000 users would only get a new token every ~59 days and not every 5 minutes - closer to 60,000 tokens per year.
Modify the current refreshToken mutation to make the refreshToken parameter optional, or add a mutation refreshTokenFromCookie, and have those read the request's cookies instead. Then refreshes could be handled silently.
Add a Setting to prevent returning the refresh token in the payload? Then people like me who do not like tokens being client-side accessible could disable it.

These are all ideas, and I am just spitballing. I am not asking you to implement all these features - I would be more than happy to contribute to this project and do it myself. As I am not really a fan of project fragmentation, I'd rather volunteer to help here and see my changes pulled upstream than manage my own fork.
Anyway, let me know what you think of these ideas, and if there's anything you'd like me to do. I'll try and get started on a few of those points locally in the meantime.
Best regards,
Pat

A few things I have done:

Replaced calls to ugettext with gettext. (See PR #160 ). Should be merged ASAP.
Added a docker-compose.tox.yml file to allow us to run tox in Docker. This makes testing easier, IMO, and makes managing dependencies a breeze, hopefully leading to easier onboarding of contributors. (See my fork's add-docker-tox branch). Can be merged whenever (after, or instead of PR 160).
In process of adding an example client/server app in docker. This can be used to make changes to the app while testing them easily, and as a simple reference implementation, if anyone would like to see practical examples. (See my example-project branch). This still needs some work to look good. It doesn't affect the main app, and can be safely merged, but it's not as necessary.

Now I am thinking I should change the ObtainJSONWebToken's refreshToken field so it returns an object, rather than a string. Something along the lines of...
refreshToken: {
  "updated": false, // whether we reuse an existing token (false), or generate a new one
  "expiry": "2020-02-20T00:00:00", // calculated dynamically from settings
  "refreshAfter": "2020-02-05T00:00:00", // calculate dynamically from settings
  "refreshToken": "abcdef1234567890", // IF ALLOWED, else null
  "revoked": null, // or date
  "cookieSet": true, // whether a set-cookie header was sent
}

Of course, that would be a breaking change, so I could use some advice on that. Should I proceed with it? Returning all this information would make the client smarter about doing certain things, such as requesting a token refresh once the time is right.
Also, is anything useless, or  missing in my current suggestion?

Saving the JWT inside a cookie makes it vulnerable to CSRF attacks (although Django has pretty good CSRF protection, decreasing the attack surface is always good).

I have created a new add-allow-cookie-settings branch, where I have added options to choose which cookies should be set. For instance, I have set "JWT_ALLOW_JWT_COOKIE": False to prevent storing the JWT inside a cookie in the example project.
@mongkok I would appreciate some feedback on these changes.
I would love to start working on a "silent refresh" query - a query that returns a new JWT using the refresh token inside the cookie, rather than having to store the refresh token in the client, but I already have a number of branches and would rather see them all merged than open yet another one.
I know it's the holidays, so no hurry, but you think I could get an ETA, at least?
Cheers!

@patryk-tech personally I find this hugely useful! Tbh if you were to have all these changes in your own fork, I'd be inclined to use that instead :)

@Celant I am not certain I should commit to implementing all those changes right now. The maintainer of this package does not appear very responsive, and I could definitely use some support while making changes.
Also, while looking at the source code of this package, and graphene as a whole, I have realized that this is a very messy implementation using multiple inheritance, and the code is not very easy to work with. I am currently looking into Ariadne, which I was recommended / told was easier to extend, and may go with that instead -- I need to investigate further before making a decision.

Hi @patryk-tech ,
I appreciate the time you have devoted to this project, I apologize for not being able to respond earlier.
As you point out, the implementation of cookies in this package is halfway done, I've created a PR 165 which solves some of the problems you describe.
I will deal with each issue in turn:

The tokenAuth mutation does not set the JWT-refresh-token cookie.
Done, thank you!

The refreshToken mutation generates a new refresh token with every call.
Yes, and I'd like to keep it that way by default.
There is an option to delete or revoke a token using signals:

from django.dispatch import receiver

from graphql_jwt.refresh_token.signals import refresh_token_rotated

@receiver(refresh_token_rotated)
def delete_refresh_token(sender, request, refresh_token, **kwargs):
    refresh_token.delete()

The PR 165 now includes a setting variable JWT_REUSE_REFRESH_TOKENS in order to reuse the RefreshToken instances.

The refresh token should be returned in a cookie only, as that would offer some protection against client-side attacks
Could you give more details of a possible attack?

The refreshToken mutation expects a valid token as part of its parameters.
Yeah, and the Verify and Revoke mutations, as well.
The new changes in the PR reads the cookies and input variables are now non-required.

A few things you have done:

Replaced calls to ugettext with gettext.
Thanks for the PR!

Added a docker-compose.tox.yml
I'm a Docker fan, but not for tox sorry.

An example client/server app in docker.
Looks great but I prefer to keep the examples out of the package..
e.g. https://github.com/ice-creams/graphql-social-auth-template
If you can create a new repository with the example project we can include a link in the README file.

Set "JWT_ALLOW_JWT_COOKIE": False to prevent storing the JWT inside a cookie in the example project.
I don't understand this setting variable, if you don't want to use cookies don't include the jwt_cookie decorator. I don't want to overload the GRAPHQL_JWT settings.

Finally I have included a new field refreshExpiresIn that indicates the expiration time for the refresh in seconds and it's valid for Single token and Long running refresh tokens.
I am far from being an expert in authentication and JWT but in my opinion, if you use the refreshExpiresIn next to the JWT token expiration (payload.exp) fields, you shouldn't only trust these expiration times. Consider the possibility that a protected resource may be invalidated, e.g. the expiration time has been modified or the refresh token has been revoked.
If you have any questions please let me know.

I close the issue, if you have any questions please let me know.

@mongkok hi! I had a quick question regarding the refresh token implementation.

The refreshToken mutation generates a new refresh token with every call.

Yes, and I'd like to keep it that way by default.

What's the reasoning behind generating a new refresh token with every call? Is this due to the fact that we'd want to maintain the auth session of the user?
In my case, if I specify the refresh token expiration to be 10 days from now, I would imagine that to be the hard limits for a session. Once the 10th day comes around, then a user would need to re-authenticate to get a new JWT and refresh token. I'm a complete novice when it comes to JWT, so I ask because I want to learn more about this pattern. Thank you!


Attribute selector doesn't work on attributes that have numbers in them

In ShallowTraversal.js the selector for the attribute doesn't work on attributes that have numbers in them.
const propKey = selector.split(/\[([a-zA-Z-]*?)(=|])/)[1];
Instead, it should be:
const propKey = selector.split(/\[([a-zA-Z-0-9-]*?)(=|])/)[1];

@raduanastases it'd be great if you could file a PR with a test case!

(also, please note that attributes that start with numbers are invalid)

sure, I'll get to it as soon as possible.

I made this change and added a test https://github.com/airbnb/enzyme/pull/700

Closed in #1086


[CTIS] Add a few missing indicators and wave-specific handling for multi-selects

Description
Add a few missing indicators that FB docs are expecting. Fix a couple spelling/naming issues. Add wave-specific handling, e.g., for some multi-select responses that didn't exist the entire time the question was fielded. This only impacts contingency signals.
Changelog

contingency_indicators.R
contingency_variables.R

@krivard This is ready to merge.


Remove jsx attribute from <style> after processing

So that we make the markup smaller and avoid the warning

Nevermind this shouldn't be happening


cannot build due to relying on non released nebula-python

as titled

relying on https://github.com/vesoft-inc/nebula-python/pull/219
need to manually install with:
pip install git+https://github.com/vesoft-inc/nebula-python.git@8c328c534413b04ccecfd42e64ce6491e09c6ca8


Any reason for Amount being a data-structure?

Would s/o please explain to me why Amount is a struct and not just a type alias which I expected to be more simple and sufficient?
// Amount is a datastructure that stores the amount being used for calculations.
type Amount struct {
	val int64
}

It seems more odd when I saw when the Amount is fetched we are getting the value.
func (m *Money) Amount() int64 {
	return m.amount.val
}

good point, you're right it would be more sufficient to use type alias instead


Missing Data

I am going through the AlphaVantage documentation and using their default code for the 'Intraday (Extended History).' I ran across the issue of missing minute-wise data for all time slices and am wondering if this is intentional.
Running this default code:
  import csv
  import requests

  replace the "demo" apikey below with your own key from https://www.alphavantage.co/support/#api-key
  CSV_URL = 'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY_EXTENDED&symbol=IBM&interval=15min&slice=year1month1&apikey=demo'

  with requests.Session() as s:
      download = s.get(CSV_URL)
      decoded_content = download.content.decode('utf-8')
      cr = csv.reader(decoded_content.splitlines(), delimiter=',')
      my_list = list(cr)
      for row in my_list:
          print(row)

I get the following abridged output:
['time', 'open', 'high', 'low', 'close', 'volume']
['2021-06-11 19:30:00', '151.21', '151.21', '151.13', '151.13', '661']
['2021-06-11 19:00:00', '151.1101', '151.1101', '151.1101', '151.1101', '400']
['2021-06-11 18:30:00', '151.44', '151.49', '151.44', '151.49', '300']
['2021-06-11 18:00:00', '151.28', '151.4', '151.28', '151.4', '1221']
['2021-06-11 17:00:00', '151.17', '151.17', '151.17', '151.17', '292']
['2021-06-11 16:30:00', '151.35', '151.35', '151.35', '151.35', '200']
['2021-06-11 16:15:00', '151.28', '151.28', '151.28', '151.28', '119363']
['2021-06-11 16:00:00', '151.215', '151.35', '151.03', '151.3', '280735']
                 ...         ...        ...       ...      ...      ...

Using the 15 minute slice data, it is seen that 7 time stamps are missing. By testing with different time intervals, it is seen that data provided by one may not be included in the other.
Do you have any suggestions for obtaining a more complete form of historical data, recommendations, or an explanation as to why this feature exists?

@alexblee808, the data is not missing. The skipped timestamps mean there were no trading volume during the specific time periods.


Layers in vedo for geology model

Hi, I'm trying to follow through your sample notebook, trying to compare the usability with another package - Gempy. How can I get to have separation in color for different layers in geology notebook.
Example from Gempy: https://www.gempy.org/tutorials
As shown in figure below, Gempy is able to identify and separate colors of different surfaces. Can it be done in Vedo? Love the package btw. Thanks!

hi, thanks!
I'm not sure what data you wish to visualize but that package seem to already have lots of tools for visualization

Hi, sorry for not making myself clear, so in Gempy the geographical layers can be shown in distinct layers but labeling each layer. I am wondering how to do the same in Vedo, i.e.:  having X,Y,Z surface points in pandas, with additional column labeling each layer. How to differentiate across these different layers as per shown above.

Hi, if you already have a surface of points in space (I guess this is the main goal of the gempy example?) then it's very easy:
You can follow the example here:
https://github.com/marcomusy/vedo/blob/master/vedo/examples/advanced/geological_model.py

by reconstructing the surface you extract with panda the point of each separate layer then make a mesh:
# ...
landSurface_panda   = pd.read_csv(url+"land_surface_vertices.csv")
landSurface = delaunay2D(landSurface_panda.values).color('slategray')
show(landSurface)
# ...

wait - say i have 5 surfaces, i did the same for each surfaces?
Like this?
landSurface_panda_1  = pd.read_csv(url+"land_surface_vertices_1.csv")
landSurface = delaunay2D(landSurface_panda_1  .values).color('slategray')

landSurface_panda_2  = pd.read_csv(url+"land_surface_vertices_2.csv")
landSurface = delaunay2D(landSurface_panda_2 .values).color('slategray')
...
landSurface_panda_5  = pd.read_csv(url+"land_surface_vertices_5.csv")
landSurface = delaunay2D(landSurface_panda_5 .values).color('slategray')

Then I need to combine again or how? Apologise if this is a basic question - just starting with this tool. Thanks.

yes - basically you can extract the xyz points from panda by subsetting,  e.g.
xyz = pandadata[pandadata.layer == 3]
then reconstruct the surface and apply any color you wish as above.

Let me try it out. Thanks.


Stronger checks on ScanOp and ReduceOp

Addresses the discussion at https://github.com/openai/triton/pull/3111#discussion_r1488366197

Addressed the comments and rebased. Will add tests tomorrow. cc @ThomasRaoux @joker-eph in case you have more comments

Lit test to check this? (We already have a file for this, I think it's called invalid.mlir.)

+1 this should go here: triton/test/Triton/invalid.mlir

Added a few tests.

Can you fix the failing lit tests?

Fixed. There was a bit of a mix-up with RankedTensorTypes and ElementTypes. Now it should be fine.


Serialization to java 21

I think we should have a module which is shared by both kotlin implementations to avoid duplicating tests.

We need to process the main source with a different annotation processor (so I believe that would need to be duplicated?)
Do you think it's worth duplicating the main code, but having a Test suite for the tests?


Getting started for a newbie questions

Description
Amazing work! And I really want to grasp it fully, and make this thread a go-to thread for any new user, possibly a newbie like myself.
Here are a bunch of questions I would like some clarification on:

The Symbol is BTCUSDT, does the buying action buy the USDT or BTC?
Is it possible to start the bot with a selling point instead of buying? If so how to do it?
Does the Grid system for buying goes step by step? # 1 then # 2 etc..? Does it loop on # 2 after it executes it? Does # 1 gets executed only once per symbol?
How does the LOW get defined, is it the Lowest per day? Or per hour? Is it configurable?
Imagine I have 100K USDT, and at a buying signal I want to buy all of it in BTC, how to configure that? Same if I have 3 BTC and I want to fully buy USDT?
Let's say I want to buy when the coin drops 0.3%, is it possible to stop the buying if I see that the drop slop is greater than 0.3%? Let's say it's 0.5% and I know that the next second it will drop by 0.2% so get the bot to buy at actual -0.7% instead of 0.3%.
The config mentions candles, I believe you mean those sticks in the graph:

If I set 20 candles, or 1h time span does High and Low calculate based on that?

Thank you so much and looking forward to hearing back from you.

I am really sorry for the late reply @Sshuichi

The Symbol is BTCUSDT, does the buying action buy the USDT or BTC?
If the symbol pair is BTC/USDT, then buying will be trade with USDT

Is it possible to start the bot with a selling point instead of buying? If so how to do it?
If you already have enough coin, you can set the last buy price, which will monitor the coin based on that price.

Does the Grid system for buying goes step by step? # 1 then # 2 etc..? Does it loop on # 2 after it executes it? Does # 1 gets executed only once per symbol?
If the last buy price is manually set, then it will start from #2. If the bot executed grid trade #1, then it won't re-execute #1. You will see yellow checkbox on the grid.

How does the LOW get defined, is it the Lowest per day? Or per hour? Is it configurable?
The lowest price can be configured based on the interval and number of candles. For example, if you configure it as 1m/30, then the bot will determine the lowest price from 30 candles for 1 min candle. It will be real-time. What it means is if there is a new candle, then it will calculate from the latest candle.

Imagine I have 100K USDT, and at a buying signal I want to buy all of it in BTC, how to configure that? Same if I have 3 BTC and I want to fully buy USDT?
You can set the max purchase amount on the grid setting.

Let's say I want to buy when the coin drops 0.3%, is it possible to stop the buying if I see that the drop slop is greater than 0.3%? Let's say it's 0.5% and I know that the next second it will drop by 0.2% so get the bot to buy at actual -0.7% instead of 0.3%.
If the bot is triggering the buy action, then it will follow the drop.

The config mentions candles, I believe you mean those sticks in the graph: If I set 20 candles, or 1h time span does High and Low calculate based on that?
Yes, if you set 20/1h, then the lowest price would be calculated within 20 candles of 1-hour candle, so within 20 hours.


Feature flags

What it does:

Adds feature flags on heavier methods in the library
The features are enabled by default

Why it does it:

Pluralize, singularize, etc can be heavy and require in two dependencies. This resolves that by making more items optional

Related issues:
https://github.com/serde-rs/serde/pull/788

Note that feature flags need to be additive-only (ie: turning them on only expands the API, doesn't shrink it) for them to work correctly in cargo. It appears that lightweight shirnks the API, and as a result will break cases where 1 package asks for lightweight and another doesn't but uses APIs exposed by lightweight.

👍  I didn't realize that. Do you have a suggestion on reworking the feature flag to be more compatible?

The general pattern is to contain the API you want to disable in a positive feature (ex: #[cfg(heavywieght)] fn foo()) and add this feature to the default-features. Crates that want to indicate they don't require heavywieght would set default-features = false in their [dependency.inflector] section (and optionally list features they need), rather than adding a lightwieght feature.


[build system] Produce 64 bit-packed VMEM file for SW builds

We need a new build artifact for all software which should end up in flash: a VMEM file which packs two 32 bit words next to each other in a 64 bit word.
The relevant code is at https://github.com/lowRISC/opentitan/blob/master/util/embedded_target.py#L44
Note we still need the 32 bit VMEM file, so it would probably be best to unconditionally produce both files next to each other.
If the file name of the file changes docs need to be adjusted as well.
See https://github.com/lowRISC/opentitan/issues/1941 for more context.

@mcy
@gkelly

I was going to pick this up, hope to get it done today.

thanks greg!
On Mon, Apr 20, 2020 at 12:49 AM Greg Chadwick<EMAIL_ADDRESS>wrote:

I was going to pick this up, hope to get it done today.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/lowRISC/opentitan/issues/1986#issuecomment-616373439,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAH2RSRHSCXXQXVH3TVMWPTRNP5ATANCNFSM4MKRSK4Q
.


WS-Security with injected client

Hello,
I'm trying to use WS-Security with a client that has been injected with @CXFClient
My use case is the following: I have two services MyDataService and MyBackendService. Both are exposed in SOAP and protected with WS-Security. When I individually call each service (with SOAP UI), everything is fine and the WS-Security header is required and validated.
Now I would like to call MyBackendService from MyDataService.
@WebService(
        endpointInterface = "com.acme.soap.generated.cxf.mydataservice.MyDataService",
        serviceName = "MyDataService",
        targetNamespace = "http://acme.com/service/generic",
        wsdlLocation = "wsdl/MyDataService.wsdl"
)
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING)
@SchemaValidation(type = SchemaValidation.SchemaValidationType.IN)
public class MyDataService implements com.acme.soap.generated.cxf.mydataservice.MyDataService {

    @Inject
    @CXFClient
    MyBackendService clientService;

    @Override
    public com.acme.soap.generated.cxf.mydataservice.Data getData(String dataId) {
        com.acme.soap.generated.cxf.mybackendservice.Data p = this.clientService.getData(dataId);
        return MappingHelper.toDataService(p);
    }

    @Produces
    public WSS4JInInterceptor getWSS4JInInterceptor() {
        Map<String,Object> inProps = new HashMap<String,Object>();
        inProps.put(ConfigurationConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
        inProps.put(ConfigurationConstants.PASSWORD_TYPE, WSConstants.PASSWORD_TEXT);
        inProps.put(ConfigurationConstants.PW_CALLBACK_CLASS, UPServerCallback.class.getName());

        WSS4JInInterceptor interceptor = new WSS4JInInterceptor(inProps);

        return interceptor;
    }

    @Produces
    public WSS4JOutInterceptor getWSS4JOutInterceptor() {
        Map<String,Object> outProps = new HashMap<String,Object>();
        outProps.put(ConfigurationConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
        outProps.put(ConfigurationConstants.PASSWORD_TYPE, WSConstants.PASSWORD_DIGEST);
        outProps.put(ConfigurationConstants.PW_CALLBACK_CLASS, UPClientCallback.class.getName());
        outProps.put(ConfigurationConstants.USER, "myuser");
        return new WSS4JOutInterceptor(outProps);
    }
}

The call fails because the WS-Security header is not provided (If I disable the WS-Security setting on MyBackendService, the call from MyDataService is in success).
I'm not sure I'm using the getWSS4JOutInterceptor correctly, in the right place.
The backend service is exposed on /soap/MyBackendService and the data service is exposed on /soap/MyDataService.
Here is the application.properties of MyDataService.
quarkus.cxf.path=/soap

quarkus.cxf.endpoint."/MyDataService".implementor=com.acme.MyDataService
quarkus.cxf.endpoint."/MyDataService".in-interceptors=org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor

quarkus.cxf.endpoint."/MyBackendService".out-interceptors=org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor

quarkus.cxf.client."mybackendservice-client".service-interface=com.acme.soap.generated.cxf.mybackendservice.MyBackendService
quarkus.cxf.client."mybackendservice-client".client-endpoint-url=http://localhost:8081/soap/MyBackendService

Would you have any suggestion?
Thanks a lot.

Hi @corrantho Your application.properties doesn't look quite right.  You should be using quarkus.cxf.client.* to set the outbound interceptor, not quarkus.cxf.endpoint as you currently have.  Something like this may work:
quarkus.cxf.client."mybackendservice-client".out-interceptors=org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor

Also, you may have some luck identifying such issues if you enable the LoggingFeature and bump up the log levels, as shown below:
# To log message payloads, headers, etc; set on client or endpoint.
quarkus.cxf.client."foo".features=org.apache.cxf.feature.LoggingFeature

# To enable additional logging for CXF and quarkus-cxf
quarkus.log.category."org.apache.cxf".level=TRACE
quarkus.log.category."io.quarkiverse.cxf".level=TRACE

Just noticed that the WS-Security docs predate the introduction of quarkus.cxf.client.* properties, please feel free to submit a PR if you like.
https://quarkiverse.github.io/quarkiverse-docs/quarkus-cxf/dev/ws-security.html#ws-security-client

@corrantho I believe there's some CDI issues in your code (unrelated to this extension), though I did not dig in too deep.  I was able to get to a working state by making some minor updates:

Remove getWSS4JInInterceptor() and all references in your data service - I think this should be optional though
Move getWSS4JOutInterceptor() from MyClient to MyDataService
Add @ApplicationScoped to MyClient

Thanks a lot of your time.
After making the changes you suggested I came back to the initial state of the code I had when I posted this issue.
And he still did not work.
However, after digging into the error logs I found an interesting error message:
Caused by: org.apache.wss4j.common.ext.WSSecurityException: Unknown password type encoding: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText

In getWSS4JOutInterceptor() I had to change this configuration:
outProps.put(ConfigurationConstants.PASSWORD_TYPE, WSConstants.PASSWORD_TEXT);
into
outProps.put(ConfigurationConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
Same behaviour with WSConstants.PASSWORD_DIGEST into WSConstants.PW_DIGEST.
If you agree with this correct, I will submit a PR to update the documentation:

To quarkus.cxf.client.XXX.out-interceptors instead of quarkus.cxf.endpoint
To replace WSConstants.PASSWORD_DIGEST with WSConstants.PW_DIGEST in getWSS4JOutInterceptor() example

Yes, please, a PR would be most welcome!  Thanks!

I'm just still wondering why we have to put the getWSS4JOutInterceptor() in the WebService class whereas it is mentioned to put it in the client class in the documentation (which would make sense since it concerns the client).

Add the following to your client class to instantiate the WSS4JOutInterceptor.

Is there anything wrong with my client?
I attached the working code as suggested.
poc-ws-security.zip
Thank you.

Hey @corrantho the documentation was intended to provide a sample code to implement WS-Security, not to cover any intricacies of CDI.  You don't have to put getWSS4JOutInterceptor() in the client class.  You could, for example, do something like this, and it should work just as well.
public class Producers {

    @Produces
    @Unremovable
    public WSS4JOutInterceptor getWSS4JOutInterceptor() {
        Map<String,Object> outProps = new HashMap<String,Object>();
        outProps.put(ConfigurationConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
        outProps.put(ConfigurationConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
        outProps.put(ConfigurationConstants.PW_CALLBACK_CLASS, UPClientCallback.class.getName());
        outProps.put(ConfigurationConstants.USER, "totouser");
        return new WSS4JOutInterceptor(outProps);
    }

}

The issue with having getWSS4JOutInterceptor() in your MyClient class is that the class becomes both the producer and the injection target (via MyBackendService) for the WSS4JOutInterceptor instance.  This results in a stack overflow, as would be expected.

OK I see.
Thanks again :).


MixpanelApi.Database SqliteDatabaseException

Running a large test suite of integration tests (85) mixpanel throughs a unable to open database file: Select (*) from people.
This makes it impossible to use mixpanel and run my integration tests in a CI environment.

Are you running your own tests or our sdk test suite? (https://github.com/mixpanel/mixpanel-android/tree/master/src/androidTest/java/com/mixpanel/android)

Hello. I am running my own integration tests. I have 85 of them on number 55 everytime I get a crash from mixpanel. Now  my application has mixpanel track events all through so repeated integration tests will all hit these track events. But it seems that for every integration test in year down their is No way to release the mixpanel instance and stop or querying etc so each integration test mixpanel has the DB open. I also search through and it doesn't seem to be any seperation between being in debug for testing to avoid this issue with integration tests all running on their own testing threads

*In tear down there is


ORC-193. Refactor TreeWriter API in WriterImpl.

For this patch, I decided to just fix the API to TreeWriter. I'll make a follow up patch that just pulls the TreeWriter classes out of WriterImpl.

lgtm, +1


Error coming while executing main.py

-Wifi-Login-Automation-main/main.py
Your chrome driver was not found
Traceback (most recent call last):
File "/home/keval/Downloads/Hostel-Wifi-Login-Automation-main/login.py", line 18, in
driver.get("http://<IP_ADDRESS>:8090/")
^^^^^^
NameError: name 'driver' is not defined. Did you mean: 'webdriver'?
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/keval/Downloads/Hostel-Wifi-Login-Automation-main/main.py", line 7, in
import login
File "/home/keval/Downloads/Hostel-Wifi-Login-Automation-main/login.py", line 26, in
driver.quit()
^^^^^^
NameError: name 'driver' is not defined. Did you mean: 'webdriver'?
this is the error

I am using Linux


Make styled-components types an optional peer peer dependency

Closes https://github.com/primer/react/issues/2894
Merge checklist

[x] Added/updated tests
[ ] Added/updated documentation
[x] Changes are SSR compatible
[x] Tested in Chrome
[ ] Tested in Firefox
[ ] Tested in Safari
[ ] Tested in Edge

Take a look at the What we look for in reviews section of the contributing guidelines for more information on how we review PRs.

This looks like it would be a breaking change if a consumer doesn't have styled-components installed. @joshblack - should we batch this into v36 updates? Or did I just do this incorrectly?

@mperrotti good point, I think we'll need to re-target the PR to next-major because of that unless there is a way we can get around it 🤔

Thanks @joshblack ! I updated the base branch.

@joshblack - these don't seem easy to address, but maybe we could have a quick pairing session?


not affiliated ≠ Official

I'd love to recommend this extension to staff and students at work, but I hesitate before describing it as Official. https://addons.mozilla.org/addon/media-bias-fact-check-icon/ offers the contradiction:

… Not affiliated with MBFC …

Please, might you change the name?
From:

Official Media Bias Fact Check Icon

to:

Media Bias Fact Check icon

TIA

Note, this is not to doubt the goodness of the extension. Just attention to detail with naming (I should expect some academic colleagues to similarly question the 'official' wording).

Dave Van Zandt, the owner of MBFC, asked me to call the exension “official”. You can email him if you’d like verification.

@JeffreyATW thanks, the clarification is enough, I'll trust you. Thanks for the openness :+1:


Create rest_slider.lua

This was designed specifically to help align rests midway between staves with cross-staff notes.

Don't process this one just yet. There's a sneaky bug needs squashing.


add cloudbees-security-developers as security contact - gitlab-api

I would like to propose our help with regards to security maintenance.
Our team at CloudBees will be able to react on security issue reports, by definition time-sensitive. This way we can be notified on the event of a security report to help on the resolution, collaboration with the security team, synchronization, etc.
We have done this already for a number of plugins:
https://github.com/search?q=repo%3Ajenkins-infra%2Frepository-permissions-updater+cloudbees_security_members&type=code
If anybody sees a problem with this, please let me know.
Thank you.
Repo implied: https://github.com/jenkinsci/gitlab-api-plugin
CC @baymac, @surenpi, @jetersen, @jeffpearce, @justinharringa for approval from an existing maintainer.
CC @daniel-beck as the security officer since this PR is changing security contacts.
Link to GitHub repository

When modifying release permission
If you are modifying the release permission of your plugin or component, fill out the following checklist:

### Release permission checklist (for submitters)
- [ ] The usernames of the users added to the "developers" section in the .yml file are the same the users use to log in to [accounts.jenkins.io](https://accounts.jenkins.io/).
- [ ] All users added have logged in to [Artifactory](https://repo.jenkins-ci.org/) and [Jira](https://issues.jenkins.io/) once.
- [ ] I have mentioned an [existing team member](https://github.com/orgs/jenkinsci/teams) of the plugin or component team to approve this request.

When enabling automated releases (cd: true)
Follow the documentation to ensure, your pull request is set up properly. Don't merge it yet.
In case of changes requested by the hosting team, an open PR facilitates future reviews, without derailing work across multiple PRs.
Link to the PR enabling CD in your plugin

### CD checklist (for submitters)
- [ ] I have provided a link to the pull request in my plugin, which enables CD according to the documentation.

### Reviewer checklist
- [ ] Check that the `$pluginId Developers` team has `Admin` permissions while granting the access.
- [ ] In the case of plugin adoption, ensure that the Jenkins Jira default assignee is either removed or changed to the new maintainer.
- [ ] If security contacts are changed (this includes add/remove), ping the security officer (currently `@Wadeck`) in this pull request. If an email contact is changed, wait for approval from the security officer.

There are IRC Bot commands for it.

I don't think this is needed? All this plugin is doing is a wrapper around gitlab4j-api.

You are right, I am closing this PR


Serial Port Support

Hi, this is a first draft of serial support integration, closes #701
It adds serialport as a dependency, hope that's all right.
I don't really plan to work on it anymore, unless I find a showstopping bug during my use,
so do with it as you like, it's essentially yours anyway since I heavily borrowed from terminus-ssh.
There are a few things that would be nice to have, like a list of serial ports in the quick connect dialog, or enforcing some predefined values via a dropdown in settings for databits, stopbits, parity etc

That's amazing! I'm gonna give it a go tomorrow morning

Works great :+1:
@allcontributors add @nstefanou for code and plugins


test

test

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

Project coverage is 84.77%. Comparing base (9239dcf) to head (3aa5336).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #192   +/-   ##
=======================================
  Coverage   84.77%   84.77%
=======================================
  Files          33       33
  Lines        1051     1051
=======================================
  Hits          891      891
  Misses        160      160

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


Make wrap_iter return a borrowing iterator

Before, we had three methods that would take a string and return an iterator with wrapped lines:

wrap_iter(&self, &str): cloned self
wrap_iter_borrow(&self, &str): borrowed self
into_wrap_iter(self, &str): consumed self

Here, the wrap_iter_borrow method is preferable to wrap_iter if the Wrapper outlives the iterator.
I think that will be the usual case, and that we can do without the method that cloned self -- if needed, the caller can get the functionality back by combining clone and into_wrap_iter:
wrapper.clone().into_wrap_iter(s)

We can then rename wrap_iter_borrow to just wrap_iter and thus make the method with the short name do "the right thing" by default.
The new method names are thus:

wrap_iter(&self, &str): borrows self
into_wrap_iter(self, &str): consumes self

This makes the names a little more aligned with the standard library where Vec::iter(&self) also borrows self while you iterate over the collection.

@hcpl Please let me know how this PR looks to you -- will is mess up a use-case for you? Thanks!

wrapper.clone().into_wrap_iter(s) is a good way to reduce API bloat, really cool idea.
The only non-obvious thing I can find about this API implementation is that wrap_iter function returns IntoWrapIter, not WrapIter, which can be somewhat confusing for users. I think "Notice: this function returns IntoWrapIter, not WrapIter, as someone can expect due to its name mirroring Wrapper::wrap_iter method." can help.
Otherwise, everything looks good to me. Thanks for your involvement!

Awesome, great that you like it :-) I'll add a comment to the wrap_iter function, thanks for the suggestion.


Sporadic failure of get_jwt_token_full_run

Describe the bug
The get_jwt_token_full_run integration test in sm_c8y_mapper is failing sporadically on PR builds. Here is one such instance: https://github.com/thin-edge/thin-edge.io/runs/5104156856?check_suite_focus=true
To Reproduce
It's an intermittent failure. So, no clear reproducible steps.

I also encountered this. It blocks merging for obvious unrelated PRs. Annoying :/


unknown $schema for schema loader

I have the following schema defined:
{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://xxxx/input.json",
	"title": "abc",
	"type": "object",
	"properties": {
 ... snip ...
}

I load it using a custom loader:
// EmbedFSLoader is responsible for loading schema data from an embedded filesystem.
type EmbedFSLoader struct{}

// Load retrieves the schema data and returns it as an io.ReadCloser. An error is returned if the schema cannot be obtained.
func (receiver EmbedFSLoader) Load(url string) (io.ReadCloser, error) {
	log.Print(url)
	d, err := GetSchema()
	if err != nil {
		return nil, err
	}
	return io.NopCloser(strings.NewReader(string(d))), nil
}

Now I wrote a test:
func TestSchemaLoader(t *testing.T) {
	loader.Register("regfeed", &EmbedFSLoader{})
	importSchema, err := jsonschema.Compile("regfeed://schema.json")
	if err != nil {
		t.Error(err)
	}
	if importSchema == nil {
		t.Error("schema is nil")
	}
}

Instead of succeeding I get the error unknown $schema "https://json-schema.org/draft/2020-12/schema" but you say you support this draft.
Any ideas what I make wrong?

Instead of succeeding I get the error unknown $schema "https://json-schema.org/draft/2020-12/schema" but you say you support this draft.

I don't see any such error message in the source code.
it should say "unsupported draft" as shown in code
which version are you using. may be the error is coming from your code (not from the library)

I am using 1.2.4

Thanks for your support, found the error, my fault, I just forgot to use v6 :/
Sometimes, only sometimes...


Dart does not throw error if class argument parameter extends void

Dart SDK Version: 2.0.0-dev.55.0
OS: Windows 10
Sample code below declares a class with parameter which extends [void]. It causes a lot of compiler errors with dartanalyzer and passes without errors with dart.
class A<X extends void> {}
main() {}

This is similar to the issues #33699, #33701, #33703.
I believe both tools should behave in the same way.
Dartanalyzer sample output is:
Analyzing test.dart...
  error - A class definition must have a body, even if it is empty at test.dart:1:19 - missing_class_body
  error - Expected to find '>' at test.dart:1:19 - expected_token
  error - Expected a type name at test.dart:1:19 - expected_type_name
  error - Expected a method, getter, setter or operator declaration at test.dart:1:23 - expected_executable
  error - Unexpected text '>' at test.dart:1:23 - unexpected_token
5 errors found.

Dart stdout and stderr are empty, no exceptions or warnings there.

The syntax does not allow for void in a number of locations where a type is expected (in the upcoming grammar Dart.g it is typeNotVoid for an upper bound, and in the language specification it is type, and that non-terminal does not derive void).
However, it is allowed for an implementation to use a more forgiving parser and then report certain violations of the grammar as a regular compile-time error, which may be a better service to developers. (In particular, it may be a much more intuitive error message that "this type cannot be void" than getting those 5 error messages mentioned above from dartanalyzer).
So the VM should report a compile-time error, and dartanalyzer could report something more user-friendly than what it currently does.


Refactored some NativeWindow stuff in the default gfx backend

Just cleaning up some default backend code

Any update on this? Would close this otherwise to clean up stale PRs.

Closing this.


Broaden WINTER Cal Requirements

This PR adds in a bunch more darks as required WINTER cals (60s, 5s/4s/3s). It adds a new specific CalHunter error when cals are not found, to help with debugging.
It also reworks the blocks a bit, to put calhunter in the right place and reduce duplication.
It also expands the veto radius for stars to 7".

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

2 of 3 (66.67%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.003%) to 84.686%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

mirar/pipelines/winter/generator/candidates.py
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.003%

Covered Lines:
11126

Relevant Lines:
13138

💛  - Coveralls


How do I tween this data format？

Please excuse my English is not my native language
I want to tween use this data here:
{position:{x:300,y:200},rotation:30}
Here's what I expected to do:
var tween = createjs.Tween.get(myTarget)
			.to({position:{x:300,y:200},rotation:30},400)
			.set({label:"hello!"})
			.wait(500).to({alpha:0,visible:false},1000)
			.call(onComplete);

But now I have to:
var tween1 = createjs.Tween.get(myTarget).position
			.to({x:300},400)
			.set({label:"hello!"})
			.wait(500).to({alpha:0,visible:false},1000)
			.call(onComplete);

			var tween2 = createjs.Tween.get(myTarget)
			.to({rotation:30},400)
			.set({label:"hello!"})
			.wait(500).to({alpha:0,visible:false},1000)
			.call(onComplete);

How do you use only one tween to process data in this format?

Since you want to tween the values of the position object, you can you the DotPlugin, which is available in GItHub.
https://github.com/CreateJS/TweenJS/blob/master/src/tweenjs/plugins/DotPlugin.js
createjs.Tween.get(myTarget)
    .to({"position.x":300, "position.y":400, rotation: 30}, 1000);

Prior to this you could either use two tweens, or tween properties on the main object, and apply them back to the position object on a change event:
createjs.Tween.get(myTarget)
    .to({x:300, y:400, rotation:30}, 1000)
    .on("change", function(event) {
        var tween = event.target,
            position = tween.target.position;
        position.x = myTarget.x;
        position.y = myTarget.y;
    });

DotPlugin will be available in the next version TweenJS, but you can include the class now.. Here is some more details on the new plugins, with demos here: http://blog.createjs.com/new-plugins-in-tweenjs/
Cheers,

Thank you. This will help me just fine.


[Feature Request] Bring back the mask option in SDPA for GGML compatiablity

Is your feature request related to a problem? Please describe.
I noticed in #10313 (https://github.com/tenstorrent/tt-metal/pull/10313/files#diff-a97ed6437b65106019f0555fd396e7919b7c2c50b04f9b03213c9cdd8bb932a1) the mask parameter is replaced curr_pos. GGML uses the FlashAttention-v1 format for it's GGML_OP_FLASH_ATTN_EXT operator.  This change breaks my ability to hook FlashAttention into GGML (I haven't hooked it up due to other issues, but this change completely breaks it).
struct ggml_tensor * ggml_flash_attn_ext(
        struct ggml_context * ctx,
        struct ggml_tensor  * q,
        struct ggml_tensor  * k,
        struct ggml_tensor  * v,
        struct ggml_tensor  * mask,
        float                 scale,
        float                 max_bias) {
    GGML_ASSERT(ggml_can_mul_mat(k, q));
    // TODO: check if vT can be multiplied by (k*qT)

    if (mask) {
        GGML_ASSERT(ggml_is_contiguous(mask));
        GGML_ASSERT(mask->ne[2] == 1);
        GGML_ASSERT(mask->ne[3] == 1);
        GGML_ASSERT(mask->ne[1] >= GGML_PAD(q->ne[1], GGML_KQ_MASK_PAD) &&
                "the Flash-Attention kernel requires the mask to be padded to GGML_KQ_MASK_PAD and at least n_queries big");
        //GGML_ASSERT(ggml_can_repeat_rows(mask, qk));
    }

   // ...... non-important code

    result->op   = GGML_OP_FLASH_ATTN_EXT;
    result->src[0] = q;
    result->src[1] = k;
    result->src[2] = v;
    result->src[3] = mask; // GGML expects mask as a tensor

    return result;
}

Describe the solution you'd like
Bring back the mask parameter for SDPA
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

@marty1885 thanks for the feedback. We should be able to change the op to support mask or cur_pos and choose functionality based on which is provided.
Just to confirm, this is for GGML's FlashAttention in decode mode? where
Q: [1, b, nh, dh]
K,V: [b, nh, kv_len, dh]
mask: [1, b, nh, dh]

While we're on the topic, do you mind describing the other issues which make our FlashAttention and FlashDecode operations incompatible with GGML?

GGML expects something slightly different (note: if you read the comment in code, it's reversed. GGML stores shapes in reverse order.

GGML_KQ_MASK_PAD = 32 by default. It matches nicely with TT hardware

Currently I'm handling it by calling transpose and repeat manually to convet. But it hangs often and I'm debugging what's going on (the issue I mentioned above), unsure if it's bug in my code.
I need to check the differences, but the top things on my head:

K, V does not support batches
The mask is broadcasted (and optional)
Query transposed
Supports ALiBi (max_bias == 0 disables it)
Does not need the valid_seq_len parameter

It would be great if TT can add ALiBi support also to it's softmax operation. I was waiting to report performance related missing features after I can bring up an LLM.

Hey @marty1885, thanks for bringing this up.
I can add the support for attention mask. As an initial quick fix to unblock your work, I can bring the legacy support back for v1. However, v1 would require padded_sequence_length and the attention mask is assumed to be [1, b, nh, padded_sequence_length]. It appears to me that the mask you your ggml code ([1, 1,         n_batch_pad, n_kv]) is a different kind of mask that mask out batch and kv head.
On the other hand, the purpose of the mask in flash decode v1 is due to an inefficient implementation, which we do attention on the longest sequence length of the batch, and use mask to mask out the redundant computation on shorter sequence length. It is completely unnecessary to do that, so that's why we got rid of attention mask and use start pos instead.
Is the v1 mask functionality really what you intend to use?

@caixunshiren Good question. Will reply soon. I need some time to completely confirm exactly.

@marty1885, should I close this now?

@ayerofieiev-tt I still need this. I haven't got my backend back into a healthy enough stage where I can explore this further. Largely limited by the following issues

https://github.com/tenstorrent/tt-metal/issues/11650
https://github.com/tenstorrent/tt-metal/issues/11082

Please let me know your thoughts.


Carthage is failing to bootstrap and update 0.7.2

Version 0.7.1 works perfectly, Carthage/Carthage/issues/1763 might be related.
*** Checking out Version at "0.7.2"
Parse error: expected submodule commit SHA in output of task (ls-tree -z 0.7.2 xcconfigs) but encountered:

Releated
https://github.com/Carthage/Carthage/issues/135

remove .gitmodule, commit and push. After carthage update will work fine.

Thanks for looking into this! That comment was meant for the dependency repo, i.e., Version, judging on this and this. Looking at 0.7.1 and 0.7.2 I'm guessing you migrated to SPM from Xcode project, hence deleted the xcconfigs submodule but kept it listed in .gitmodules.
So, deleting .gitmodules is the first thing to do as there are no modules that are currently in use. That, however, probably won't help with the Carthage situation as it doesn't support plan SPM projects and probably won't any time soon.
It would certainly be useful to have this available via Carthage, preferably as a static framework, but we can equally move on to SPM now that Xcode supports it out of the box. :)


CM-40771 - Code refactoring of CLI communication

Now CLI communication aligns with our other plugins with proper typing 🎉

Concerning the SAST violations, we can mark the "Observable Timing Discrepancy" as false positives here. And if there is no external or user input involved, then the "Unsanitized dynamic input in OS command" can also be safely ignored.


Question: nikic / PHP-Parser AST compatibility

Does the AST data structure generated by this project share similarity with its counterpart on the PHP language ( nikic/PHP-Parser ) ?
I'm trying to parse as a significant amount of files and z7zmey/php-parser would be a deal-breaker for its speed, the problem is that I have several features depending on nikic/PHP-Parser mainly because of its AST Builder.
If I could share the same AST interoperability would be perfect.

Same needs, looking forward to follow-up support

hi @tylerchr and @sohaha. At 0.8 I have changed the AST structure back to be as same as possible as nikic/php-parser
Do you have any idea how AST could be transferred from Golang to PHP?
I think about dumping to PHP deserializable string.

Hey, @z7zmey I'll take a look at it this week.
Regarding your question, nikic/PHP-Parser contains some utilities to convert an AST into JSON and back, I'd dig into that.


doesnt build locally

I am very new to jekyll and ruby, cloned and installed requirements but, when I try to build it locally, I got this error:

I found that for ruby v3, webrick needs to be installed.
I installed it and now the error is gone, but an empty html file is here :/


API: Support hyperlinks to code locations in MarkedString

VSCode Version: Code - Insiders 1.3.0-insider (616201eff8f8d8de02edd2b9b18eae3b1096fb53, 2016-06-27T17:49:22.393Z)
OS Version: Darwin x64 15.5.0

Steps to Reproduce:

Hover over a reference to a class/method in code (e.g., TextEditor)
Observe hover with link to some other part of the code opens (e.g, TextDocument)
Click link -> nothing happens (expected: target opens, e.g. TextDocument)

@chrmarti can you give more details where in code this happens? would like to reproduce

The example I'm using is in an extension's source file. I can reproduce with:
import * as vscode from 'vscode';
let editor: vscode.TextEditor;

Hovering over TextEditor shows its doc comment with a blue 'document' link in it. That link doesn't work when clicked on.

Cannot reproduce:

I can reproduce using @chrmarti small example. Need to find out whether this is TS or the UI.

Is this a feature that should only work for TypeScript?
I'm new to VSCode and basically want to get jump to definition working for es6 modules.
I expect that I could click on path names in imports:
import Foo from 'bar/baz/Foo.react.js'; <- I would like to click on bar/baz/Foo.react.js and be able to open that file.
Additionally I'd love to be able to click Foo and jump to it.
I have a jsconfig.json file at the root (above bar in this example) but I only see a "Loading ..." tooltip and then shows import Foo in the tooltip with no other enhanced functionality. This works in Atom fwiw. I'm new to Visual Studio and sorry for jumping on this bug but it looks like the description is quite close to what I'd otherwise file an issue for so wanted to avoid overspread. Again, I'm not using typescript though.
It would also be cool to have a list of features that one could expect to work to understand if things are set up correctly (or not). I have this is my jsconfig.json but it doesn't help (though I thought it might).
    "compilerOptions": {
        "target": "ES6",
        "module": "es6"
    },

Thanks!

Also in:

VSCode Version: Code - Insiders 1.6.0-insider (f62883f07422cae4b53c2a185b105091460a0a85, 2016-09-27T12:46:15.113Z)
OS Version: Darwin x64 15.6.0

OK. The problem is that the JS Doc for the Text Editor looks like this:
	/**
	 * Represents an editor that is attached to a [document](#TextDocument).
	 */

And the hover is interpreted as markdown which produces the link. I think there is not much the TS extension can do about this.
@joaomoreno since you own the hover rendering is there anything you think TS can do.

Oh wow. We can just render links at standard text and take away their click behavior, in the hover.

@joaomoreno makes sense to me. Is this something you do in the hover code.

On second thought... there might be an actual URL in there that we definitely don't want to block.

@joaomoreno does this make sense to hand off to you?

We don't support this anywhere. We'd have to open up API such that MarkedStrings could contain hyperlinks to specific code locations. cc @jrieken

We have support for that - a link like file:///my/files/Code/src/vs/code/electron-main/main.ts#L430 will bring you there.

If at all, this is a problem with the extension that add links for vscode.d.ts symbols

@waderyan Check @jrieken's comment.

@joaomoreno fyi - it is my extension that adds links in vscode.d.ts

Sorry man, too many apples to juggle.

Actually, not me 😆 The problem is that we are using relative markdown-links in the jsdoc-comments. So, there is two issues here: For once the opener service should fail more graceful when an invalid link is selected (this can be any kind of link) and then we could try to convince the TypeScript team to expand relative markdown links to symbols defined inside a file (stretch... if you ask me).
I'll tackle the first and leave the rest up to @mjbvz

I'd love to see support for this added

It's an important feature. Many of my JSDoc's are lacking usefulness without this.

Closing this I don't think there needs to be any api work done. Extensions/languages just need to provide a full file uri or a command uri as the markdown link
#77199 tracks supporting relative links in jsdocs specifically.


HTML data table not updating after new row added via post

On chrome. Not sure yet if its just not implemented or is chrome issue.
I am guessing its just not implemented yet.

Hey @soypat
I am also working on a htmx that is NOT JS based..

Yeah I am aware of this one, gotta refresh. Unsure how to trigger an htmx event from hyperscript to do this...

Have a look at this one:
https://github.com/joerdav/go-htmx-examples
it has what your looking for ! It helped me a ton :)
it’s from :
https://github.com/a-h/templ/network/dependents
Templ is a golang templated compiker . A lot of devs are using it with htmx.

https://github.com/acaloiaro/hugo-htmx-go-template Looks pretty damn cool too

Woah, those are nice- thanks @gedw99 !


[FEATURE REQUEST] Discovey Center data

Area of the resources that should be enhanced?
Metadata of services
Description
It'd be great to have the metadata aligned with the information available in SAP Discovery Center.
I've used the OData Service behind SAP Discovery Center, and properties such as Tags and LicenseModelType are helpful.
Link to resource
https://discovery-center.cloud.sap/servicecatalog/ServiceDetailss

Hi Mauricio, we are already using the data that is used by Discovery Center. That's the reason, why you get as well links to the Discovery Center pages for a service as metadata.
As described in the README we want to deliver the data in a way that is focusing on a specific persona. What I could think of is to define a new persona that is focusing on commercially focused data.
Would that make sense to you, too?

No feedback received for 1 year - closing the issue


[Bug Fix]Fix the core in Data_Stream_Recvr

Remove the map in DataStreamRecvr and replace by vector<pair<Closure*, MonotonicStopWatch>>.

You can describe some the solution in the commit message.


Trouble with API Keys on Poloniex in trader

I have configured the config.js for trading on Poloniex, I have used both valid API keys, but I get an error message:
Gekko
encountered an error and can't continue
Error:
Poloniex requires "//here it writes my secret key, that i have provided" to be set in the config
Meta debug info:
Gekko version: v0.4.10
Nodejs version: v6.10.3
here is my config setting
//

 Everything is explained here:
// @link https://github.com/askmike/gekko/blob/stable/docs/advanced_usage/plugins.md

var config = {};

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                          GENERAL SETTINGS
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

config.debug = false; // for additional logging / debugging

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                         WATCHING A MARKET
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

config.watch = {

  // see https://github.com/askmike/gekko#supported-exchanges
  exchange: 'poloniex',
  currency: 'BTC',
  asset: 'BCN',

  // You can set your own tickrate (refresh rate).
  // If you don't set it, the defaults are 2 sec for
  // okcoin and 20 sec for all other exchanges.
  // tickrate: 20
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                       CONFIGURING TRADING ADVICE
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

config.tradingAdvisor = {
  enabled: true,
  method: 'CCI',
  candleSize: 1,
  historySize: 10,
  adapter: 'sqlite',
  talib: {
    enabled: false,
    version: '1.0.2'
  }
}

// Exponential Moving Averages settings:
config.DEMA = {
  // EMA weight (α)
  // the higher the weight, the more smooth (and delayed) the line
  short: 10,
  long: 21,
  // amount of candles to remember and base initial EMAs on
  // the difference between the EMAs (to act as triggers)
  thresholds: {
    down: -0.025,
    up: 0.025
  }
};

// MACD settings:
config.MACD = {
  // EMA weight (α)
  // the higher the weight, the more smooth (and delayed) the line
  short: 10,
  long: 21,
  signal: 9,
  // the difference between the EMAs (to act as triggers)
  thresholds: {
    down: -0.025,
    up: 0.025,
    // How many candle intervals should a trend persist
    // before we consider it real?
    persistence: 1
  }
};

// PPO settings:
config.PPO = {
  // EMA weight (α)
  // the higher the weight, the more smooth (and delayed) the line
  short: 12,
  long: 26,
  signal: 9,
  // the difference between the EMAs (to act as triggers)
  thresholds: {
    down: -0.025,
    up: 0.025,
    // How many candle intervals should a trend persist
    // before we consider it real?
    persistence: 2
  }
};

// Uses one of the momentum indicators but adjusts the thresholds when PPO is bullish or bearish
// Uses settings from the ppo and momentum indicator config block
config.varPPO = {
  momentum: 'TSI', // RSI, TSI or UO
  thresholds: {
    // new threshold is default threshold + PPOhist * PPOweight
    weightLow: 120,
    weightHigh: -120,
    // How many candle intervals should a trend persist
    // before we consider it real?
    persistence: 0
  }
};

// RSI settings:
config.RSI = {
  interval: 14,
  thresholds: {
    low: 30,
    high: 70,
    // How many candle intervals should a trend persist
    // before we consider it real?
    persistence: 1
  }
};

// TSI settings:
config.TSI = {
  short: 13,
  long: 25,
  thresholds: {
    low: -25,
    high: 25,
    // How many candle intervals should a trend persist
    // before we consider it real?
    persistence: 1
  }
};

// Ultimate Oscillator Settings
config.UO = {
  first: {weight: 4, period: 7},
  second: {weight: 2, period: 14},
  third: {weight: 1, period: 28},
  thresholds: {
    low: 30,
    high: 70,
    // How many candle intervals should a trend persist
    // before we consider it real?
    persistence: 1
  }
};

// CCI Settings
config.CCI = {
    constant: 0.015, // constant multiplier. 0.015 gets to around 70% fit
    history: 90, // history size, make same or smaller than history
    thresholds: {
        up: 100, // fixed values for overbuy upward trajectory
        down: -100, // fixed value for downward trajectory
        persistence: 0 // filter spikes by adding extra filters candles
    }
};

// StochRSI settings
config.StochRSI = {
  interval: 3,
  thresholds: {
    low: 20,
    high: 80,
    // How many candle intervals should a trend persist
    // before we consider it real?
    persistence: 3
  }
};

// custom settings:
config.custom = {
  my_custom_setting: 10,
}

config['talib-macd'] = {
  parameters: {
    optInFastPeriod: 10,
    optInSlowPeriod: 21,
    optInSignalPeriod: 9
  },
  thresholds: {
    down: -0.025,
    up: 0.025,
  }
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                       CONFIGURING PLUGINS
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// do you want Gekko to simulate the profit of the strategy's own advice?
config.paperTrader = {
  enabled: false,
  // report the profit in the currency or the asset?
  reportInCurrency: true,
  // start balance, on what the current balance is compared with
  simulationBalance: {
    // these are in the unit types configured in the watcher.
    asset: 1,
    currency: 100,
  },
  // how much fee in % does each trade cost?
  fee: 0.25,
  // how much slippage/spread should Gekko assume per trade?
  slippage: 0.05,
  // what is the risk free return in % (to calculate sharpe ratio)
  riskFreeReturn: 5
}

// Want Gekko to perform real trades on buy or sell advice?
// Enabling this will activate trades for the market being
// watched by `config.watch`.
config.trader = {
  enabled: true,
  key: XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXX',
  secret: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  username: '' // your username, only required for specific exchanges.
}

config.adviceLogger = {
  enabled: false,
  muteSoft: true // disable advice printout if it's soft
}

config.pushover = {
  enabled: false,
  sendPushoverOnStart: false,
  muteSoft: true, // disable advice printout if it's soft
  tag: '[GEKKO]',
  key: '',
  user: ''
}

// want Gekko to send a mail on buy or sell advice?
config.mailer = {
  enabled: false,       // Send Emails if true, false to turn off
  sendMailOnStart: true,    // Send 'Gekko starting' message if true, not if false

  email: '',    // Your Gmail address
  muteSoft: true, // disable advice printout if it's soft

  // You don't have to set your password here, if you leave it blank we will ask it
  // when Gekko's starts.
  //
  // NOTE: Gekko is an open source project < https://github.com/askmike/gekko >,
  // make sure you looked at the code or trust the maintainer of this bot when you
  // fill in your email and password.
  //
  // WARNING: If you have NOT downloaded Gekko from the github page above we CANNOT
  // guarantuee that your email address & password are safe!

  password: '',       // Your Gmail Password - if not supplied Gekko will prompt on startup.

  tag: '[GEKKO] ',      // Prefix all email subject lines with this

            //       ADVANCED MAIL SETTINGS
            // you can leave those as is if you
            // just want to use Gmail

  server: 'smtp.gmail.com',   // The name of YOUR outbound (SMTP) mail server.
  smtpauth: true,     // Does SMTP server require authentication (true for Gmail)
          // The following 3 values default to the Email (above) if left blank
  user: '',       // Your Email server user name - usually your full Email address<EMAIL_ADDRESS>  from: '',       //<EMAIL_ADDRESS>  to: '',       //<EMAIL_ADDRESS><EMAIL_ADDRESS>  ssl: true,        // Use SSL (true for Gmail)
  port: '',       // Set if you don't want to use the default port
}

config.pushbullet = {
    // sends pushbullets if true
  enabled: false,
    // Send 'Gekko starting' message if true
  sendMessageOnStart: true,
    // disable advice printout if it's soft
  muteSoft: true,
    // your pushbullet API key
  key: 'xxx',
    // your email, change it unless you are Azor Ahai
  email<EMAIL_ADDRESS>    // will make Gekko messages start mit [GEKKO]
  tag: '[GEKKO]'
};

config.ircbot = {
  enabled: false,
  emitUpdates: false,
  muteSoft: true,
  channel: '#your-channel',
  server: 'irc.freenode.net',
  botName: 'gekkobot'
}

config.telegrambot = {
  enabled: false,
  emitUpdates: false,
  token: 'YOUR_TELEGRAM_BOT_TOKEN',
  botName: 'gekkobot'
}

config.xmppbot = {
  enabled: false,
  emitUpdates: false,
  client_id: 'jabber_id',
  client_pwd: 'jabber_pw',
  client_host: 'jabber_server',
  client_port: 5222,
  status_msg: 'I\'m online',
  receiver: 'jabber_id_for_updates'
}

config.campfire = {
  enabled: false,
  emitUpdates: false,
  nickname: 'Gordon',
  roomId: null,
  apiKey: '',
  account: ''
}

config.redisBeacon = {
  enabled: false,
  port: 6379, // redis default
  host: '<IP_ADDRESS>', // localhost
    // On default Gekko broadcasts
    // events in the channel with
    // the name of the event, set
    // an optional prefix to the
    // channel name.
  channelPrefix: '',
  broadcast: [
    'candle'
  ]
}

config.candleWriter = {
  enabled: true
}

config.adviceWriter = {
  enabled: true,
  muteSoft: true,
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                       CONFIGURING ADAPTER
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

config.adapter = 'sqlite';

config.sqlite = {
  path: 'plugins/sqlite',

  dataDirectory: 'history',
  version: 0.1,

  dependencies: [{
    module: 'sqlite3',
    version: '3.1.4'
  }]
}

  // Postgres adapter example config (please note: requires postgres >= 9.5):
config.postgresql = {
  path: 'plugins/postgresql',
  version: 0.1,
  connectionString: 'postgres://user:pass@localhost:5432', // if default port
  database: null, // if set, we'll put all tables into a single database.
  schema: 'public',
  dependencies: [{
    module: 'pg',
    version: '6.1.0'
  }]
}

// Mongodb adapter, requires mongodb >= 3.3 (no version earlier tested)
config.mongodb = {
  path: 'plugins/mongodb',
  version: 0.1,
  connectionString: 'mongodb://mongodb/gekko', // connection to mongodb server
  dependencies: [{
    module: 'mongojs',
    version: '2.4.0'
  }]
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                       CONFIGURING BACKTESTING
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Note that these settings are only used in backtesting mode, see here:
// @link: https://github.com/askmike/gekko/blob/stable/docs/Backtesting.md

config.backtest = {
  daterange: 'scan',
  batchSize: 50
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//                       CONFIGURING IMPORTING
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

config.importer = {
  daterange: {
    // NOTE: these dates are in UTC
    from: "2016-01-01 00:00:00"
  }
}

// set this to true if you understand that Gekko will
// invest according to how you configured the indicators.
// None of the advice in the output is Gekko telling you
// to take a certain position. Instead it is the result
// of running the indicators you configured automatically.
//
// In other words: Gekko automates your trading strategies,
// it doesn't advice on itself, only set to true if you truly
// understand this.
//
// Not sure? Read this first: https://github.com/askmike/gekko/issues/201
config['I understand that Gekko only automates MY OWN trading strategies'] = true;

module.exports = config;

It seems you are missing a ' here:

key: XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXX',

Just as a side note: Poloniex is nice exchange, but recently experiencing network issues because of huge amount of new users.

I have inserted my real key, not the "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXX" :) So the key is not missing, it is there, but it prints me out the my secret key with error message mentioned above.

I understand, but if you copied the config and replaced your key/secret with XX you have a missing '.
If the error you get with Gekko is:
Poloniex requires "//here it writes my secret key, that i have provided" to be set in the config

If your key would be MY-SECRET-KEY and the error is:
Gekko encountered an error and can't continue

Error:

Poloniex requires "MY-SECRET-KEY" to be set in the config
Meta debug info:
Gekko version: v0.4.10
Nodejs version: v6.10.3

Than it is most likely a parsing error with the config. Can you double check all the ' symbols? There should be exactly one before your key and and after your key (same with secret).

Here is my config line and what it prints me out, I have only changed the characters in keys to make them unrecognisable here :))
MY CONFIG PART
config.trader = {
enabled: true,
key: 'IUKOIUJD-NU70IODP-HJU75IOP-IOOLD67N',
secret: 'shuc98se7ghe8f7g8suhc89es7h98se7f8se7gf8se7gfo8se7fg8ose7fg8ose7fgse8o7fgos8e7fg8ose7gfe8os7fgse8o7fgo8se7fgo8se7gfo8se7fgs8oe7fg',
username: '' // your username, only required for specific exchanges.
 Checking availablity..
2017-05-23 16:04:05 (INFO):
2017-05-23 16:04:05 (INFO):             No usable local data available, trying to get as much as possible from the exchange..
2017-05-23 16:04:05 (DEBUG):            Fetching exchange data since 10 minutes ago
2017-05-23 16:04:06 (DEBUG):            Available exchange data:
2017-05-23 16:04:06 (DEBUG):                    from: 8 minutes ago
2017-05-23 16:04:06 (DEBUG):                    to: 0 minutes ago
2017-05-23 16:04:06 (DEBUG):            Unable to stitch datasets.
2017-05-23 16:04:06 (INFO):             Not seeding locally available data to the trading method.
2017-05-23 16:04:06 (INFO):     Setting up:
2017-05-23 16:04:06 (INFO):              Trader
2017-05-23 16:04:06 (INFO):              Follows the advice and create real orders.
Gekko encountered an error and can't continue
Error:
Poloniex requires "shuc98se7ghe8f7g8suhc89es7h98se7f8se7gf8se7gfo8se7fg8ose7fg8ose7fgse8o7fgos8e7fg8ose7gfe8os7fgse8o7fgo8se7fgo8se7gfo8se7fgs8oe7fg" to be set in the config
Meta debug info:
Gekko version: v0.4.10
Nodejs version: v6.10.3

SOLVED! There was something wrong with an installation, i think i have messed up with other config files. Installed to other dir, works fine!

I have the same problem.
How did you solve it?


getSchema- Empty comments are not parsed correctly

Empty comments are not closed correctly and take the next node as text. Schema is parsed with function getSchema.
Empty comments are added to the schema:

Instead of an empty string the next field is taken as comment text and the field is not added as property:

@trubea08 thanks for reporting this bug! I have published v0.8.1 with the fix


Implement username change

:bug: The bug
Currently, PATCH /session/account request with {"username": "newusername"} results in an update of /_users/org.couchdb.user:oldusername. The username property gets set to newusername.
The account update within the PATCH /session/account route handler is implemented here. The implementation of the account update simply loads the user account document from CouchDB and merges in the changes here.
:dart:  How it should be

copy the /_users/org.couchdb.user:oldusername to /_users/org.couchdb.user:newusername. In the new document, set name to the new username. Do not set the username property. Leave all the other properties like salt and derived_key untouched.
delete /_users/org.couchdb.user:oldusername

:clipboard: Step by step on how to fix :)

[ ] claim this issue (assign yourself or comment below)
[ ] Setup repository locally and make sure that all tests pass
[ ] create a new test for the PATCH /session/account route below this one: tests/integration/routes/account-test.js#L212-L278. Name it PATCH /session/account username change. The existing account doc should be removed and the new created with the same POST /_bulk_docs request. The delete of the existing document should besides the "_deleted": true also add a property "renamedTo": "newusername". The new doc must not have a "username" property. Make sure that tests fail when your run npm  test
[ ] commit with test: username change. Feel free to push your work in progress if you have any questions. It’s easiest to discuss directly in a PR
[ ] start a Pull Request (never started one before? Here’s a nice tutorial)
[ ] Implement the fix
[ ] commit with fix: username change
[ ] Yay :tada: comment below and let us know that your PR is ready for review :)

Ping us in the Hoodie Chat or on Twitter if you have any questions :)

Added "first-timers-only" as in: your first contribution to Hoodie :)

Can I pick this one?

sure, good luck Ali :+1:

@alisabzevari are you still loking into this one?

@gr2m Sorry. I had busy days. I will make a progress in the next few days.

ping @alisabzevari, how is it looking?

PR #155 ready!

done via https://github.com/hoodiehq/hoodie-account-server/pull/155


Modernize initialization of local SmartPointer variables

Two style commits:

Replaced T::Pointer var; var = x with T::Pointer var = x, following pull request #4952
Replaced T::Pointer with auto when initializing variables by T::New(), following pull request #2826

/azp ITK.macOS.Python


feat(es/minifier): Optimize react

Description:

We now drop more useless returns.
We now treat call expression as 'cheap enough to inline'.

Related issue (if exists):

https://github.com/swc-project/swc/issues/2934#issuecomment-1111192298

cc @Austaras
I implemented simple ones based on your analysis, thank you!

Oh, we need some sort of cost calculation.
I'll split this PR


[Feature]: Support handleHotUpdate hook similar to Vite

What problem does this feature solve?
Similar to Vite, Rsbuild could have easy HMR handling through some specific option. Maybe this is better implemented at lower level like Rspack and it’s exposed as option in Rsbuild.
This could also solve HMR implementation details in Unplugin scenarios such as Vue plugin HMR.
What does the proposed API look like?
Take a look at handleHotUpdate API for Vite. There are a few simple concepts that I think can be implemented in Rsbuild.

Thanks, we will investigate this feature after releasing 1.0

Rsbuild and Vite have different hot update processes, so it is difficult to support this feature within rsbuild (rspack).
The current research result is that HotModuleReplacementPlugin may need to provide some hooks to support modifying the hot-update module, thus affecting the final generation of hot-update chunk and json. However, this process has not been initially validated due to manpower issues.


unable to set multilevel sensor values

Hi
Thanks for your work on this project. I'm trying a few tests to add/remove and control sensors and wrote this basic code:
const { Driver } = require('zwave-js');
const driver = new Driver("/dev/ttyUSB1", {
	networkKey: Buffer.from([
		1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
	])
})
	.on("error", console.error)
	.once("driver ready", async () => {

                // await driver.controller.beginInclusion(); // demo inclusion code is on a separate file
                const wallPlug = driver.controller.nodes.get(17);
		await wallPlug.commandClasses.Basic.set(255);
}); driver.start();

I tried the ."..Basic.set()" with several values from boolean to 0-100 or 0-255 and there was no result. I don't know what I"m doing wrong although I can see that the sensors get included/excluded in the network successfully.
I know the sensor was added correctly because I got this message when I ran the inclusion code:

This library hides the Basic CC values in favor of more appropriate CCs like Multilevel Switch. It might be that this behavior interferes with the API you're using. Since Multilevel Switch is in the list of supported CCs, you should probably use this:
await wallPlug.commandClasses["Multilevel Switch"].set(99);

FYI, the multilevel value range in Z-Wave is 0-99 (not 100) and the single value 255 which just means "on".
And one more thing:
Before trying to control a node, you should wait for the Node's ready event.

Thank you.
I tried your suggestion and modified my code to the following:
const wallPlug = driver.controller.nodes.get(18);
wallPlug.on("ready", async()=>{
	await wallPlug.commandClasses["Multilevel Switch"].set(99);
});

The result was that nothing happened. If I turned on the plug from the button it would automatically turn off after a few seconds. Here are some of the messages printed on the console:
I'm assuming node 1 is the controller

and node 18 below is my wall plug

It would be easier if you posted the screenshot as text.
A Z-Wave network has to be interviewed before it can be used in a meaningful way. This takes a lot of bandwidth and time (several minutes up to hours if you have a lot of battery-powered nodes). Only after this is done, you should attempt communication with nodes. The next time you start the driver, most of the information is cached, so the communication may be started earlier.
Both situations are indicated through the "ready" event, which has not yet fired in your case.

Thanks I'll give it a try. I have a couple of wall plugs and some sensors that were previously added and now removed, leaving me with node 18 only, which is a mains powered wall plug.
I'm wondering why the controller was trying to interview nodes 2, 5, 6, 11, 12, 13, 14 and 15 as I don't have them in my network. I started thinking of this when you mentioned the controller might take a while to interview the nodes, so this could be that this information is cached and needs to be cleared so the controller needs to only interview the ones that are current (node 18 in my case), should I try running network healing? or deleting those other nodes?
I'll run some tests and share results.
Thanks again

I guess you didn't remove them from the network. The node IDs are stored in the controller hardware, so even clearing the cache files won't help. You should probably remove them from the controller with removeFailedNode(nodeId):
https://github.com/AlCalzone/node-zwave-js/blob/f1f7b4291054a02a57a598bcc650ddf85668f2f2/packages/zwave-js/src/lib/controller/Controller.ts#L1706


"CANNOT ADD DUPLICATE PIPE NBT" in logs

Hi! I'm a Minecraft player from China. The following words might have grammar mistakes, and hope you understand. Thanks.
Description
I built a machine (made by 肥啾 on Bilibili) to get string, using some features from tripwire hook. More details are from here (Chinese page, you may have to use a translator). Anyway, when I built it in my world with some hoppers and pipes, a message of "CANNOT ADD DUPLICATE PIPE NBT" immediately fill the log. It uses CPU resources and make the value of MSPT very large. I tested in only 2 mods (Fabric API and Simple Copper Pipes mod) and confirmed. Here are the screenshot and the log file.

2023-01-03-6.log
With XeKr redstone display resource pack
However, the pipes still work well though the keep sending errors. So maybe you just delete a line of code to fix that.
More details
Client:

OS: macOS 13.1
Java: OpenJDK 17.0.2, 64-Bit Server VM Zulu17.32+13-CA (build 17.0.2+8-LTS, mixed mode, sharing) aarch64
CPU & GPU: Apple M1

Server:

OS: Windows 10 22H2 19045.2364
Java: 18.0.2 Java HotSpot 64-Bit Server VM (build 18.0.2+9-61, mixed mode, sharing) x86_64
CPU: Intel Core i3-3240 @ 3.40GHz
GPU: NVIDIA GeForce GT 710
RAM: 12.0GB DDR3

Actually, the bug was first found on the Server PC, and confirmed on the Client Mac, so there shouldn't be OS' problems.

I will look into it.
Thank you for reporting this issue!

I have the same issue when I upgrade my server from 1.18.2 to 1.19.2

Fixed in 1.12!


Decode TLV PubkeyScript causes DataIntegrityError

The open_channel message (bolt2) has a field called shutdown_scriptpubkey; this field is optional. The lightning decode returns DataIntegrityError when this field is empty.
I'm not sure how to solve this issue, but the TLV fields need a way to check if vector bytes are empty. If true, "skip" the parsing process.

Sorry, why you created a new duplicate of the issue https://github.com/LNP-WG/lightning_encoding/issues/2? I just solved it yesterday with https://github.com/LNP-WG/lightning_encoding/pull/4?

Ok, I see your explanations in https://github.com/LNP-WG/lnp-core/pull/30#pullrequestreview-1335911092. Can you pls delete this duplicate issue and re-open #2?

Hi @dr-orlovsky, for some reason, I cannot open #2

I have re-opened it


Optional fsync on save (#371)

Add additional syncOnSave parameter to JsonDB. The default is false, so this should not change any existing behavior/applications.

This looks great :)
I'll merge it right away and release a new version.

@all-contributors please add @drproktor for code


portfolio builder

Signed-off-by: Amichay Oren<EMAIL_ADDRESS>

Codecov Report

Merging #146 (14c3d7d) into master (8df727a) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #146   +/-   ##
=======================================
  Coverage   57.14%   57.14%
=======================================
  Files          17       17
  Lines         476      476
=======================================
  Hits          272      272
  Misses        204      204

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8df727a...14c3d7d. Read the comment docs.


Fix quoting of argv for Vim on Windows

Fixes https://github.com/neomake/neomake/issues/959

This PR Not works for me 😢
But with the following patch on master branch 8f6aba3531c81a3d3d291721f7515f8efa2e59f8, it works now
diff --git a/autoload/neomake.vim b/autoload/neomake.vim
index 75436d7..2fa6035 100644
--- a/autoload/neomake.vim
+++ b/autoload/neomake.vim
@@ -291,9 +291,7 @@ function! s:maker_base.get_argv(...) abort dict
             let argv = exe . (len(args) ? ' ' . args : '')
         endif
         if !has('nvim')
-            if neomake#utils#IsRunningWindows()
-                let argv = &shell.' '.&shellcmdflag.' '.shellescape(args_is_list ? join(argv) : argv)
-            elseif !args_is_list
+            if !args_is_list
                 let argv = [&shell, &shellcmdflag, argv]
             endif
         endif

@jwmng
Does this also work for you?

@jsfaint
Would be good to remove this special case after all, thanks for looking into it!
I think this PR or in general I've tried to take the following into account (from :h job_start):

{command} can be a String.  This works best on MS-Windows.  On Unix it is split up in white-separated parts to be passed to execvp().  Arguments in double quotes can contain white space.

But if the shell workaround works in general, it might be good.
Any chance that you or @jwmng could run the test suite?
See https://github.com/neomake/neomake/issues/724 - it would be nice to have CI for it after all.

Updated this PR/branch according to @jsfaint's patch.

Running the test suite using Vader in gvim, will put results at #724

@jwmng
And does the updated PR fix it for you already (when using, not with the tests)?

Forgot to mention that yes it works fine

Thanks!


Warn when migrations directory is not found

Closes #1239

Thank you. I have added some comments!

:heart: :green_heart: :blue_heart: :yellow_heart: :purple_heart:


Improve detailed document design about DAO classes

This issue is to address @JoshuaSBrown's comment: https://github.com/ORNL/zambeze/pull/64#discussion_r1020313245

@renan-souza I feel like this is no longer relevant given Flowcept will be listening to messages. Please close if that's the case!


Minted tokens

The number of minted wrapped tokens on the network.

Done in https://github.com/LimeChain/hashport-validator/pull/369


DMA Support

DMA is described in section 2.5 of the RP2040 datasheet.
At minimum, we need DMA to talk to PIO, as both CircuitPython uses DMA+PIO to talk to NeoPixels.

We got DMA! released as 0.14.0


Add support for a Quickstart Docker image

This change adds support for generating a valid Docker image containing the Parsec service and client tool which can be used for introductory quickstart operations. It also refactors the construction of the quickstart tarball to take advantage of a Docker-based build environment.
I'm opening this as a draft PR because there are still a few updates I know I'd like to make.

The README included in the tarball would benefit from some additional content
The README included in the Docker image could benefit from some links to the Parsec book

Additionally, the tarball and root directory name format has changed slightly and I want to check if that's problematic. I can change it back if it is.

was quickstart-1.1.0-linux-x86.tar.gz
now quickstart-1.1.0-linux-x86_64.tar.gz

Related:
Currently, on each release, the tarball is uploaded.
What do the community think about we build the quickstart docker and pushing it to ghcr.io/parallaxsecond/
regarding the version, Do you agree to match the parsec release?


Fixed update_write_surfcmd_surface_bits to use CMDTYPE_SET_SURFACE_BITS

Although <IP_ADDRESS>.1 Set Surface Bits Command (TS_SURFCMD_SET_SURF_BITS) and <IP_ADDRESS>.2 Stream Surface Bits Command (TS_SURFCMD_STREAM_SURF_BITS) are almost the same and handled by the same codepath (https://github.com/FreeRDP/FreeRDP/blob/72ca88f49c1b7f6678a66c09fa5fe5506623ed35/libfreerdp/core/surface.c#L150) when mstsc connect to FreeRDP server (shadow) it doesn't update the screen using CMDTYPE_STREAM_SURFACE_BITS but it does using CMDTYPE_SET_SURFACE_BITS

LGTM

@freerdp-bot can you test that ?

@hardening it seems green ✅

@viniciusjarina opened #5982 that should address the issue you´re trying to fix. That one lets the server implementation decide which command should be send.

Note: it depends !!
MSRDPRFX <IP_ADDRESS>.1 Encode Message Sequencing

The sequence of encode messages is encapsulated inside an Extended Bitmap Data structure ([MS-RDPBCGR] section <IP_ADDRESS>.1.1), which is encapsulated in a Stream Surface Bits Surface Command

MS-RDPNSC 1.3 Protocol Overview

NSCodec-compressed bitmaps that cannot be cached are sent encapsulated in Set Surface Bits Surface Commands

@viniciusjarina you may want to confirm that the final fix https://github.com/FreeRDP/FreeRDP/pull/6021 (already merged into master) works for you

Thank you @nfedera I appreciate.
I've just updated to tip of master I will do some tests I'll let you know.


fix: Respect existing app usage of Cast SDK

Issue #4521

Oh, also, I reclassified this as a "fix" and renamed it.  I think it could reasonably be considered a bug to disregard the applications usage of the Cast SDK.


Error building stratum code

Seeing this now. Note that I've applied the fix for #13, and also my PR to add shellcheck support.
 . -I ./stratum -I ./stratum/stratum/public/proto -I ./external -I ./p4proto -I ./p4proto/p4rt -I ./p4proto/p4rt/proto -I ./p4proto/bfIntf -I /usr/local/lib -I ./p4proto/p4rt/proto/p4 -g -O2 -MT stratum/stratum/glue/status/p4proto_p4rt_libp4rt_la-posix_error_space.lo -MD -MP -MF stratum/stratum/glue/status/.deps/p4proto_p4rt_libp4rt_la-posix_error_space.Tpo -c stratum/stratum/glue/status/posix_error_space.cc -o stratum/stratum/glue/status/p4proto_p4rt_libp4rt_la-posix_error_space.o
stratum/stratum/glue/logging.cc:32:8: error: ‘void stratum::{anonymous}::SyslogSink::send(google::LogSeverity, const char*, const char*, int, const tm*, const char*, size_t)’ marked ‘override’, but does not override
32 |   void send(LogSeverity severity, const char* full_filename,
   |        ^~~~
stratum/stratum/glue/logging.cc: In function ‘void stratum::InitStratumLogging()’:                                       stratum/stratum/glue/logging.cc:54:31: error: invalid new-expression of abstract class type ‘stratum::{anonymous}::SyslogSink’
54 |     log_sink = new SyslogSink();
   |                              ^
stratum/stratum/glue/logging.cc:30:7: note:   because the following virtual functions are pure within ‘stratum::{anonymous}::SyslogSink’:
30 | class SyslogSink : public LogSink {
   |       ^~~~~~~~~~
In file included from ./stratum/stratum/glue/logging.h:18,
                         from stratum/stratum/glue/logging.cc:5:
/usr/local/include/glog/logging.h:1737:16: note:     ‘virtual void google::LogSink::send(google::LogSeverity, const char*, const char*, int, const LogMessageTime&, const char*, size_t)’
1737 |   virtual void send(LogSeverity severity, const char* full_filename,
    |                 ^~~~
make[2]: *** [Makefile:7448: stratum/stratum/glue/p4proto_p4rt_libp4rt_la-logging.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
mv -f stratum/stratum/glue/status/.deps/p4proto_p4rt_libp4rt_la-posix_error_space.Tpo stratum/stratum/glue/status/.deps/p4proto_p4rt_libp4rt_la-posix_error_space.Plo
make[2]: Leaving directory '/root/P4-OVS'

Hi @mestery ,
Thanks for trying out on latest IPDK code.
We have fixed issues #13 & #17, please pull in latest code and give it shot.

I'll give it a try again. Note that I've pushed #16, and I'm working off that branch for my work at the moment.

The latest seems to work now, thanks for the fixes! I imagine those fixes were in the outside repositories which are being cloned as a part of the IPDK build, correct?

The latest seems to work now, thanks for the fixes! I imagine those fixes were in the outside repositories which are being cloned as a part of the IPDK build, correct?

Absolutely, the fixes are in dependent modules we install as part of prerequisite.


build fails when selecting serde feature but not std feature

Build fails with this dependency setting:
[dependencies.half]
version = "2"
default-features = false
features = ["serde"]

Adding the "std" feature makes the build work.
[dependencies.half]
version = "2"
default-features = false
features = ["serde", "std"]

There are two possible solutions I can think of:

Make the serde feature depend on the std feature. With rust 1.60 this would be simple; just add a new feature  in Cargo.toml:
[features]
serde = ["dep:serde", "std"]

But with earlier rust I didn't manage to get it to work. I tried to import serde with a different name e.g.
[dependencies]
serde_crate = { package = "serde", version = "1.0" ... }

and then use serde_crate instead of serde in the code, or add
#[cfg(feature = "serde")]
extern crate serde_crate as serde;

but that broke derive(Serialize). Maybe a manual implementation could replace the derive, or there's another fix, but I am completely unfamiliar with serde's derives.

Otherwise features that are now gated with #[cfg(feature = "serde")] could be gated with #[cfg(all(feature = "serde", feature = "std"))] instead.

(Some serde stuff just depends on alloc not on std.)

Just hit this issue. Would appreciate a dot release on the 2.x channel to fix it.


Do a sweep of the repo for missing docstrings

As part of the INS JWST Community Software Tier 2 standards, we need to ensure our software contains docstrings for all modules, classes, and functions.

Hi folks,
Let's use this same issue to write a checklist for this. Once everything is checked, we can call this done! Mark below if you have checked/updated the modules on the code below such that all the classes/functions have docstrings:

[ ] Groups & Integrations (to be checked by @catherine-martlin and/or @bourque).
[ ] Contamination overlap (to be checked by @hover2pi and/or @jaymedina).
[ ] Forward modelling (to be checked by @nespinoza).
[ ] Limb-darkening calculator (to be checked by @hover2pi).
[ ] Phase-constraint calculator (to be checked by @nespinoza).
[ ] Higher level modules (i.e., utils, web app, etc. --- to be checked by @nespinoza, @hover2pi and/or @bourque)

I just wanted to note here that I have a draft PR in the works for this (#473).  Folks are welcome to push updates to that PR directly.

All right @bourque --- commited some extra docstrings directly to your repo (and thus PR).

The Groups & Integration docstrings will be taken care of in #453.

Moved to in-review for v.1.2 on the PR that @bourque opened: https://github.com/ExoCTK/exoctk/pull/473. After that's reviewed, I'll close this issue.


CFE gives incorrect type error for constant argument to extension type constructor.

Example:
extension type const N(Null _) {}
void main() {
  var n = N(null); // Works.
  const cn = N(null); // compile-time error.
}

This gives the errors:
badnone.dart:4:14: Error: Constant evaluation error:
  const cn = N(null); // compile-time error.
             ^
badnone.dart:1:23: Context: Expected constant 'null' to be of type 'N', but was of type 'Null'.
extension type const N(Null _) {}
                      ^
badnone.dart:4:9: Context: While analyzing:
  const cn = N(null); // compile-time error.
        ^

Analyzer has no error
Not sure which constant has which type, but the code is correct as written.
It seems to be a bug only in the constant evaluation, which does some type check using the wrong type.

I keep hitting this issue with my attempts to write extension type examples.
If the constant evaluator effectively erases extension types, because it looks at the actual "runtime type" of the value for "runtime" type checks performed during constant evaluation, then it needs to do so consistently, also erasing in the type being checked against.