free decay  tests

Hi everyone，
I would like to know if openfast can do a free decay test，If you can, in which modules should the parameters be modified, thank you！

Dear @sffgd,
Yes, OpenFAST can simulate a free-decay test.  Presumably you are referring to a free-decay test involving the motion of a floating substructure, in which case the free-decay test is set up with an OpenFAST model of a floating wind turbine and the initial floater displacement(s) set via ElastoDyn inputs PtfmSurge, PtfmSway, PtfmHeave, PtfmRoll, PtfmPitch, and/or PtfmYaw.  You can also set initial tower and/or blade deflections in ElastoDyn if that is of interest.
Best regards,

Dear @jjonkman，
Thanks for the guidance!
Best regards,


Take all Javadoc options into account as task inputs

Previously the type of Javadoc’s options property was MinimalJavadocOptions, which declared a few nested properties. However, the real value was a StandardJavadocDocletOptions, which contains several other properties that are not declared as inputs. Now these are taken into account as well.
This commit also stops the Javadoc task from modifying its inputs during execution.
Any of the checked boxes below indicate that I took action:

[ ] Reviewed the Contribution Guidelines.
[ ] Signed the Gradle CLA.
[ ] Ensured that basic checks pass: ./gradlew quickCheck

For all non-trivial changes that modify the behavior or public API:

[ ] Before submitting a pull request, I started a discussion on the Gradle developer list,
the forum or can reference a JIRA issue.
[ ] I considered writing a design document. A design document can be
brief but explains the use case or problem you are trying to solve,
touches on the planned implementation approach as well as the test cases
that verify the behavior. Optimally, design documents should be submitted
as a separate pull request. Samples
can be found in the Gradle GitHub repository. Please let us know if you need help with
creating the design document. We are happy to help!
[ ] The pull request contains an appropriate level of unit and integration
test coverage to verify the behavior. Before submitting the pull request
I ran a build on your local machine via the command
./gradlew quickCheck <impacted-subproject>:check.
[ ] The pull request updates the Gradle documentation like user guide,
DSL reference and Javadocs where applicable.

I've added a test for changing windowTitle makes the task out-of-date now.

@big-guy please take another look

This is already released in 3.4-rc-1, shouldn't the milestone be adjusted?

Thanks @Vampire for noticing this.


reject invalid STREAMS_BLOCKED frames

Also slightly refactor existing check to avoid repeating the same
constant over and over.
Fixes #565.

@LPardue ah, yes, good point. I this these checks could also just be moved to the frame decoding code itself since they don't need any additional information about the connection.

Updated to use FRAME_ENCODING_ERROR. Moving the checks is slightly messier than I thought, so might look into that separately.

While at it, I also changed the error for the related transport params.


Simplify the thunk names we generate for test functions.

Parameterized test functions with the same name but different argument types currently get the same generated names from swift-syntax, so we do some additional decorating to ensure uniqueness. This results in very long symbol names that swift-demangle has trouble with.
This PR changes the decorating formula. Previously, we would include a copy of the test function's signature (stripped of whitespace, Unicode, and non-identifier-friendly ASCII) and, if the identifier contained non-ASCII characters, the CRC32 of the identifier for further uniqueness. This change drops the copy of the identifier name and always includes the CRC32. Collisions are only possible for fully-qualified test function names that are identical, and I naïvely judge the risk of those collisions to be sufficiently low that we can make this change.
For `ZipTests.allElementsEqual😀(i:j:)`` we currently generate a thunk named:
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_43funcallElementsEqual__i_Int_j_Int__5bcb7b35fMu_

This change would change it to:
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_9Z5bcb7b35fMu_

The benefit of the change is that the generated names are shorter and easier to read when expanding a macro. There may also be some benefit on Windows where the linker has a 65KB symbol name cap, although we're not exporting these symbols so probably not.
Checklist:

[x] Code and documentation should follow the style of the Style Guide.
[x] If public symbols are renamed or modified, DocC references should be updated.

@swift-ci test

@swift-ci test

@swift-ci test Windows

@stmontgomery previously gave me a thumbs-up on the concept of the change, though not the diff itself.

This results in very long symbol names that swift-demangle has trouble with.

Is there some bug there that needs to be reported?


Fix for a full screen fixed loader!

Hey, use this if you want a full width container and fixed center loader:
.vld-overlay .vld-icon, .vld-parent {
    position: fixed !important;
    top: 45vh !important;
}

.vld-overlay .vld-background {
    position: fixed !important;
}

If this message was for me, i will try.
But
I dont want to use inportant

If this message was for me, i will try.
But
I dont want to use inportant

Hey, It's just a tip, because the loader only appears at the top of the page, if you scroll down you lost it. This tip is if you want to see the loader in the middle of the screen always


chore: Bump into 1.0.6-alpha after release

Closing the Pull request as we are doing 1.0.6 release


Db\Sql\Select.php processJoins quote identifier error

The processJoins method is calling quoteIdentifierInFragment with an array of safeWords.
In the list of safeWords the AND, OR and BETWEEN should be surrounded by spaces (or whitespaces).
Otherwise the return string may be compromised. Here is an example from SpekCommerce :
input - catalog_category_website.category_id = catalog_category.category_id
output - `catalog_categ`or`y_website`.`categ`or`y_id` = `catalog_categ`or`y`.`categ`or`y_id`
the line:
: $platform->quoteIdentifierInFragment($join['on'], array('=', 'AND', 'OR', '(', ')', 'BETWEEN', '<', '>'));
should be replaced by:
: $platform->quoteIdentifierInFragment($join['on'], array('=', ' AND ', ' OR ', '(', ')', ' BETWEEN ', '<', '>'));

I can confirm this bug.

Fixed with #7275


Question: Is mapping configuration same for <dest, src> and <List, List> ?

Hi. Let's say I have TypeAdapterConfig set for POCO and DTO.
TypeAdapterConfig<POCO, DTO>
.NewConfig()
.IgnoreNullValues(true)
.Map(dest => dest.Property, src => src.Property>())
.Map( etc....)
Now, in some cases I need to map exactly same types but instead working with single instances, I need to map from collection to collection.
TypeAdapterConfig<List< POCO >, List< DTO >>
.NewConfig()
.IgnoreNullValues(true)
.Map( etc....)
Will TypeAdapterConfig reuse mapping config already set for single values and apply it for each item or I need to have both mapping configurations defined ?

You need only mapping between Poco & Dto

Cool. Thank you for prompt response


Integrate -callback attribute support

Existing specifications that conflict with the callback function specifications
declared in the -behaviour modules used has been removed because they have been
made redundant. Existing behaviour_info/1 callback has also been removed because
it conflicts with the new callback specifications.
Callback specifications has been added to the cowboy_http_protocol and
cowboy_http_websocket behaviours. The specifications has been based on the
current implementation of both behaviours.
A note on the use of -behaviour(cowboy_http_protocol) in REST and Websockets
modules has been added to the module documentation in cowboy_http_protocol

That change isn't compatible with R14B04. I get this:
src/cowboy_http_protocol.erl:51: syntax error before: '::'
src/cowboy_http_protocol.erl:62: syntax error before: '::'
src/cowboy_http_protocol.erl:65: syntax error before: '::'
src/cowboy_http_protocol.erl:43: behaviour cowboy_protocol undefined
make: *** [app] Error 1

As you suggested off-github it's better to add it in a future release while also deprecating R14* support. I will close this for now.


Fix Travis CI issue

Is this the correct fix @slowbot @rdeshpande? I saw that Travis-CI was failing the build

@slowbot what version of SASS are you using to compile? It seems our outputs differ significantly

Thanks Ari!


Markers with custom images - images are not rendered

Hello. There are many reported cases with rendering issues for markers with custom images.
Some of them are older than a year:
1*
2
3
4
I have a similar issue.
I've tried creating image components before rendering MapView.
Tried rendering images conditionally.
Tried setting image source dynamically onComponentDidMount.
Tried rendering Math.Random() inside the image tags.
None of the above works.
There is one more similar issue. When setting style that depends on state inside markers , the style is not being updated. You have to update some property that is being displayed (like text) so the new style is applied.
I am wondering if this is going to be fixed or shall I continue to try different workarounds?

On Android I had performance issue using custom marker. My solution was to create mdpi, ldpi, hdpi, etc. drawables, and update the components/MapMarker.js, to be able to receive the drawable name as image prop. The constraint doing this is that you must have the correct size for the drawables.
On iOS, custom images works perfectly

Thanks for the reply.
The issue was that I was using png icon with size like 350x350.
I changed the icon dimensions and size and now it is rendered properly from the first time the app loads.

@foyarash I have now read through all the marker performance issues here and you're the only one to suggest that. :) Do you experience any dropped frames with say 20+ custom markers? Mind sharing some code if it's that performant?

@hoboman313 Hello,
I haven't experienced any fps drop with 20+ custom markers on MapKit with iOS, but I had using Google Maps on iOS (Android working perfectly tho, no fps drop even with 200 markers and more).
My code looks like this:
<MapView.Marker
        key={idx}
        coordinate={myCoordinateObject}
        {
          ...Platform.select({
            android: {
              image: yourDrawableName,
            },
          })
        } >
        {Platform.OS === 'ios' && (
          // Your custom marker, equivalent to your drawable
        )}
      </MapView.Marker>

Hope that helps :)

Here's some code:
<MapView              customMapStyle={mapStyle_lightDream}             style={styles.map}             initialRegion={this.props.mapInitialRegion}           >               {                 this.props.markers.items.map((mrk, i) => {                   const isActive = this.props.markers.activeMarkerIndex === i;                   return (                     <Marker                        key={i}                       customKey={i}                       // change text to force rerender marker due to bug. see:                       // https://github.com/airbnb/react-native-maps/issues/924,                        // https://github.com/airbnb/react-native-maps/issues/1552                       // https://github.com/airbnb/react-native-maps/issues/1518                       marker={{...mrk, text: mrk.text + Math.random()}}                       isActive={isActive}                       onPress={() => this.props.selectActivePOI(i)}                     />                   )                 })               }            </MapView>
Where marker is custom component:
<View style={styles.container}>
            <MapView.Marker
                      key = { this.props.customKey }
                      ref={(ref) => { this.markerRef = ref; }}
                      onPress = {this.props.onPress}
                      coordinate={this.props.marker.establishment.location}
                      title={this.props.marker.establishment.name}>
              {/* <View style = { markerStylez }>
                <Text style={styles.markerText}>{this.props.marker.text}</Text>
              </View> */}
              <View style={styles.imageContainer}>
                <Image
                       onLoad={() => this.forceUpdate()}
                       onLayout={() => this.forceUpdate()}
                       source={markerImage}
                       style={this.props.isActive ? styles.markerSelectedImage : styles.markerImage}
                       ref={(ref) => { this.markerImageRef = ref; }}
                       >
                </Image>
                 <Text style={styles.markerText}>{this.props.marker.text}</Text>
              </View>
            </MapView.Marker>
          </View>

@foyarash, is there anything that looks suspicious here?
Can you reproduce the issue with this code?

I guess this will correctly work with MapKit iOS, not perf issue
Not sure about google maps, depends of the number of markers I guess.
The only link about drawable I can provide you is https://developer.android.com/guide/topics/resources/drawable-resource.html .

Merging to #1870


Potential error in computing TV loss?

Hi, thanks for the great work! I'm reading the code and find something weird. In these lines, you're computing the TV loss. At line203, loss_tv is first computed on density components, and then added to total_loss at line 204. However, at line207, you add the appearance component TV loss to the previous density TV loss:
loss_tv = loss_tv + tensorf.TV_loss_app(tvreg)*TV_weight_app

and add them together to the total_loss at line208:
total_loss = total_loss + loss_tv

If I understand correctly, you will punish density TV loss twice by doing so. While I understand we can adjust its loss weight to mitigate this issue, maybe you want to fix this.
Another problem is, you are doing decay of TV loss weight by TV_weight_density *= lr_factor. Did you find this better compared to e.g. using a consistent TV loss weight?

Besides the above issue, I found another problem in TVLoss computation, which I believe is a searious one @apchenstu
In the TVLoss class you're dividing loss with the number of tensors, e.g. count_w here. However, as we can see from class TensorVMSplit, line_coef has last_dim = 1. Therefore, the count_w will equal to 0, thus leading to a NaN in the loss after division. I actually encountered such NaN in my training... And I believe this can be easily fixed by taking a min(count_w, 1).

Oh, they should be bugs, I will fix them and push a new version again, many thanks for pointing out than!

Thanks for the reply and thank you again for the great work!


why is compress_uri returning an option

compress returns a String but compress_uri returns an Option, even though the code always resolves to a Some and there are no obvious None cases that might appear in the future
any reason behind using an Option?

Not really. I made this in one afternoon for one project and I wasn't really focused on code quality.
I just created a devel branch where i reworked the interfaces so that compress_uri returns a Vec<u32> instead of a Option<String>. I'll merge it when I feel like I've added enough testing and made the interface usable.
Do you think returning a Vec<u32> is preferable to returning a byte array? The js version relies on js strings acting like a byte array of u16s, so I feel like making valid strings from the compressed output is unsafe. I also didn't want to return a byte buffer because of endianess issues.

When using together with wasm-bindgen, outputting value UTF8 strings is
your only option even though JS works with utf16
The reason for that is that all strings will be converted via
TextEncoder/TextDecoder, which only supports utf8
Other options, such as invoking from_char_code, suffer from performance
issues and “argument list too long” with large strings
Of course, it will be useful to get a Vec if you’re trying to output
ArrayBuffer/Typed array to the JS side ; or if you’re using this crate in
some other non-Wasm-bindgen context
In short, I’m not sure, but being able to take a utf8 String without unsafe
casting is very valuable, so it must be there
On Sun, 28 Jul 2019 at 05:10, Nathaniel<EMAIL_ADDRESS>wrote:

Not really. I made this in one afternoon for one project and I wasn't
really focused on code quality.
I just created a devel branch where i reworked the interfaces so that
compress_uri returns a Vec instead of a Option. I'll merge
it when I feel like I've added enough testing and made the interface usable.
Do you think returning a Vec is preferable to returning a byte
array? The js version relies on js strings acting like a byte array of u16s,
so I feel like making valid strings from the compressed output is unsafe. I
also didn't want to return a byte buffer because of endianess issues.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/adumbidiot/lz-string-rs/issues/1?email_source=notifications&email_token=AAJQTDLBXGH4HPT7JBTVO53QBT5XTA5CNFSM4IGD5IR2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD26V35I#issuecomment-515726837,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAJQTDM346EGQFV5BOVM5Q3QBT5XTANCNFSM4IGD5IRQ
.

--
[image: photo]
Ivo Georgiev
Founder & CEO, Stremio
https://www.stremio.com http://www.stremio.com
GPG: AC692BE9EB6E024B5C58A8EAC1E94996BC56BACE
http://www.stremio.com
http://www.facebook.com/stremio/
http://twitter.com/stremio
http://www.instagram.com/stremioofficial/
http://www.reddit.com/r/Stremio/
http://blog.stremio.com/
https://play.google.com/store/apps/details?id=com.stremio.beta
https://itunes.apple.com/us/app/stremio/id987232010?mt=8

After doing some more work with a js interface, I think it’s impossible to pass string back to js using the normal compression method. While it’s possible to encode the Vec<u32> as a String, it requires an unsafe block as it generates a string with invalid utf8, just like the js version. The TextDecoder replaces the invalid sequences and destroys the output. The same can be said with decoding. Methods that use valid utf8 are ok, like base64 and uri encodings. Returning a byte buffer to js looks like the only solution to send a compressed data back.

That's pretty much what I meant
seems like a reasonable use case would be to use this together wtih
IndexedDB, since it supports arrayBuffer, unlike localStorage
On Wed, 31 Jul 2019 at 02:25, Nathaniel<EMAIL_ADDRESS>wrote:

After doing some more work with a js interface, I think it’s impossible to
pass string back to js using the normal compression method. While it’s
possible to encode the Vec as a String, it requires an unsafe block
as it generates a string with invalid utf8, just like the js version. The
TextDecoder replaces the invalid sequences and destroys the output. The
same can be said with decoding. Methods that use valid utf8 are ok, like
base64 and uri encodings. Returning a byte buffer to js looks like the only
solution to send a compressed data back.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/adumbidiot/lz-string-rs/issues/1?email_source=notifications&email_token=AAJQTDKGASXINMN6QO73FSLQCDEV5A5CNFSM4IGD5IR2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3FTDLY#issuecomment-516633007,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAJQTDKJHF2PZ5RBWN6VUHTQCDEV5ANCNFSM4IGD5IRQ
.

--
[image: photo]
Ivo Georgiev
Founder & CEO, Stremio
https://www.stremio.com http://www.stremio.com
GPG: AC692BE9EB6E024B5C58A8EAC1E94996BC56BACE
http://www.stremio.com
http://www.facebook.com/stremio/
http://twitter.com/stremio
http://www.instagram.com/stremioofficial/
http://www.reddit.com/r/Stremio/
http://blog.stremio.com/
https://play.google.com/store/apps/details?id=com.stremio.beta
https://itunes.apple.com/us/app/stremio/id987232010?mt=8

Coming back to this, there is a way to pass Strings fairly quickly to/from JS. By batching calls to String.fromCharCode, its possible to transfer exceedingly large strings with less of a performance hit than a naiive loop over each character. Here's an example of this working in Firefox:

With this change, the WASM impl is competitive with the JS version:

Furthermore, it outperforms the JS version while compressing, as the Rust decompression impl hasn't been optimized as much :

I can occasionally replicate this in Chrome, but Chrome is far pickier about choosing to optimize the WebAssembly. Anytime I open the performance measuring tool, the code has the same performance as the Firefox benchmarks. Otherwise, the JavaScript version performs better.
This performance is in spite of various inefficiencies in the interface, such as needing to copy from a Vec<u16> to a typed array buffer, and calling String.charCodeAt for every character of input. Further improvements may make it possible for the Rust version to always outperform the original, even when compiled to WebAssembly.
I can publish the bench I used to generate these images if requested, but these images merely illustrate that it is possible to get a performant, competitive LZString implementation in WebAssembly, in spite of the overhead of sending invalid Strings across FFI boundaries.
Also, compress_uri has been renamed, and no longer returns an Option.

Closing, as compress_uri no longer returns an Option, and performance upgrades to the WebAssembly binding have been merged. I don't think anyone even uses it or cares much about the performance. If they do, they should open a new issue.


Fully update config var documentation

@StephenFluin I always squash when merging, via github button. I'll edit the commit description as well then


Stored beet account doesn't form valid beet request

If you use a stored beet account to edit an NFT, the request doesn't seem to include a valid ID, this results in no beet prompt rendering.
For now, it still works if you create a fresh beet link (remove then connect/link), or if you use QR codes instead to proceed.
Currently debugging this 👍

Issue resolved, fix will be released soon along with additional features!


Promisify requests

I've added Promise support for this library(for get, post and request functions.
Here it what I've used to test it:
var cloudscraper = require('cloudscraper');
var url =  <some URL to test here>

try {
  cloudscraper.get(url, null, function(error, response, body) {
    if (error) {
      console.log(`Error in GET function with callback result: ${e}`)
    } else {
      console.log(`GET function with result okay, body length: ${body.length}`)
    }
  });
} catch (e) {
  console.log(`Error in GET function with callback: ${e}`)
}

try {
  cloudscraper.get(url, null)
    .then(result => {
      console.log(`GET function without result okay, body length: ${result.body.length}`)
    })
    .catch(err => console.log(`Error: ${err}`))
} catch (e) {
  console.log(`Error in GET function without callback: ${e}`)
}

Now it can be called both ways (either providing callback or not). If callback is provided, the function is called. If not, the Promise is returned.
Unfortunately I had to switch the arguments (for callback to be the last one, so user can omit it without omitting the other arguments). See the first comment for this.
And also, since function can't return more than 1 value, the value returned with the Promise callback is an object, where response is the response and body is a body.
I'm not sure if it's the best way it can be done, so check this out and please tell me if everything is okay or there's some things that can be improved.

@serge1peshcoff hey! Thanks so much for this PR and sorry for my tardy response, i will review it within next couple days. Could you please add some specs for your changes and especially for promisified part? :)

request-promise should be used for this. See https://github.com/codemanki/cloudscraper/issues/68

Implemented in https://github.com/codemanki/cloudscraper/pull/106


How can I create a table with custom prefix like wp_bms_products

I am trying to figure how to do this in order to keep my tables together and prefixed via the plugin. Right now, I can only do wp_products and I would like to do wp_bms_products. The views throws an error that field name doesn't exists and I am sure it's because of the naming of the table. Thank you.

I looked into the core and found you can override the table name by setting $table = '{prefix}bms_products' in my modle.

@cyberscribe Thank you, I went into the core and saw that you can do that. Either way thank you so much!


Questions to enhance usage

Hi 👋
Thank you for this strategy 👍
Do you think it's possible to enhance the usage of checkSession, so, we don't need to pass again and again : sessionStorage, sessionKey and sessionErrorKey ?
I think of something like that:
export const supabaseStrategy = new SupabaseStrategy(
  {
    supabaseUrl,
    supabaseOptions,
    supabaseKey: supabaseAnonKey,
    sessionStorage,
    authenticateOptions
  },
  // simple verify example for email/password auth
  ({ form }) => {
   ...
    })
  },
)
...
 async checkSession(req: Request,  options: AuthenticateOptions) {
    const cookie = await this.extractSession(req) // internally use this.sessionStorage

    if (!cookie?.[this.authenticateOptions.sessionKey]?.refresh_token || !cookie?.[this.authenticateOptions.sessionKey]?.access_token)
      return this.handleResult(req,  { ...this.authenticateOptions, ...options }, 'No session data found', true) // internally use this.sessionStorage

    const session = await this.getUser(cookie?.[this.authenticateOptions.sessionKey]?.access_token)

    if (!session || session?.error) {
      const [res, error] = await handlePromise(this.handleRefreshToken(cookie?.[this.authenticateOptions.sessionKey]?.refresh_token))

      if (!res?.data || res?.error || error)
        return this.handleResult(req, { ...this.authenticateOptions, ...options }, 'Could not refresh session', true)

      // flash new data
      return this.success(res.data, req, this.sessionStorage { ...this.authenticateOptions, successRedirect: options?.successRedirect ?? '/' }) // or create a this.handleSuccess ?
    }

    if (!session)
      return this.handleResult(req, { ...this.authenticateOptions, ...options }, 'No session data found', true)

    return this.handleResult(req, { ...this.authenticateOptions, ...options }, { ...cookie?.[this.authenticateOptions?.sessionKey], ...session?.user }, false)
  }

That's just an idea. With this snippet we can override AuthenticateOptions on needs.
But, maybe I should just make a curry function if this enhancement only feat my needs 😅
export const checkSession = ( req: Request, options: Partial<AuthenticateOptions> = {}) =>
  supabaseStrategy.checkSession(request, sessionStorage, {
    sessionKey: "sb:session",
    sessionErrorKey: "sb:error",
    ...options
  });

Hi thanks for raising this issue.
I've been working the last couple of days on giving more freedom to the user (to allow for various strategies). But I know that there are some things on my list already for improving the current implementation of checkSession.
I think your suggestion would indeed make a lot of sense!
I'll probably have some time to implement it tomorrow but also open to a PR if that's something you would be interested in doing 🙁

Hi thanks for your feedback.
I think I could try to make a pull request if you are busy, even if I don't know anything about vite  :D
I try to pull the project but, maybe It's me, my prettier plugin (vscode) rewrites all the files 🤯.
Do you advise to disabled it (I see format on save off on the repo .vscode folder) ?
PS : I don't want to undermine your plans ;)

Hi thanks for your feedback.
I think I could try to make a pull request if you are busy, even if I don't know anything about vite :D I try to pull the project but, maybe It's me, my prettier plugin (vscode) rewrites all the files 🤯. Do you advise to disabled it (I see format on save off on the repo .vscode folder) ?
PS : I don't want to undermine your plans ;)

PR's are welcome :) I'm currently busy with a lot of things and the refactoring of checkSession isn't high on that list.
Easiest would be if you'd fork the repo, branch off main and create a PR from your fork to my repo.
Linting on the repo is still experimental (as I'm playing around with https://github.com/antfu/eslint-config). I've just pushed a refactor to main to include the formatOnSave in vscode settings (and yeah prettier is disabled a.t.m so that's probably what is messing it up 😁)

Now closed, thank you @mitchelvanbever  for helping me :)


[Bug Report] Docker --password-stdin command doesn't work

Link: https://docs.microsoft.com/en-us/azure/javascript/tutorial-vscode-docker-node-02
In the step 7 asked to use the command:
> docker login .azurecr.io -u --password-stdin

But using the other script (that is not too much secure – works fine):
> docker login .azurecr.io -u -p

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

ID: 861f9ddd-e95f-8025-b312-7a3c6a97dfe3
Version Independent ID: cec6249d-6aec-c15c-9cc6-76b0518203dc
Content: Use a container registry from Visual Studio Code
Content Source: javascript/tutorial-vscode-docker-node-02.md
Product: azure-nodejs
GitHub Login: @btholt
Microsoft Alias: brholt

#in-progress

@glaucia86 I don't see step 7 or the exact mention of docker login. Are you sure this is the page you mean to reference or was VSCode having an issue that you determined was the under the covers docker login?

Found doc. Testing now.

@glaucia86  When using --stdin, you do not also pass in the password directly after, as part of the single docker login command. The secure behavior is to not pass in a password. You can have the same goal when you only pass in user name, because you will be prompted for the password.
As you have discovered, you can also send in the password with the command.
Closing this issue for now. #please-close


Upgrade from our standard lints v4 -> v6

And switches to enable them in root .cargo/config.toml so they are enabled for all crates in the repository. Also resolves some warnings as errors when running clippy on some of the crates that we had.
The code fixups for this was mostly from the clippy::single_match_else lint. In our other code bases we've been seeing some good improvements from the style that that enforces as avoids deeper indentation, though in this codebase the both cases look quite similar but probably doesn't hurt to just use our default.

Fixed your nit @eddyb :)
CI fails, but currently all CI fails on Mac due to #865, so just going to merge this one


build piraeus-csi for amd64 and arm64

See piraeusdatastore/piraeus#74 for the discussion about this feature

I have now finally activated pre-commit.

There needs to be a way to add 🎉 to that "All checks have passed"-message...
I will sign off now for today, you can stop monitoring github :-D


Misc

Hi,
I noticed that the vignette refers to uwot as github, but the package is officially on CRAN as you know.
https://github.com/markrobinsonuzh/cytofWorkflow/blob/9762d03875b2d2d067e1f0c36d5ad42511c9645a/vignettes/cytofWorkflow.Rmd#L131
BTW, Burkhard Becher does not got any affiliation.
I didn't find why uwot is listed in the Depends of DESCRIPTION whereas it is not in the NAMESPACE.
Keep safe,
SAmuel

Great, thanks.
Just checked in a change to both release (3.11) and devel to fix the affiliation and the CRAN package link.
I think we put uwot in Depends, because it is needed by scater.


Switch Event controller to controller-runtime

How to categorize this PR?

/area dev-productivity scalability
/kind enhancement
What this PR does / why we need it:
Refactor the Event controller to controller-runtime.
Which issue(s) this PR fixes:
Part of https://github.com/gardener/gardener/issues/4251
Special notes for your reviewer:
Release note:

NONE

/assign


Update window-messages.md

Modified below,
while (GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GetMessage could return "-1" in the case of failure.

@akhilchalla : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


Downloading is broken

Downloading of pre-build mxnet is often broken.  Is it possible to download from other source, such as baidu cloud ?

Yes, It is very difficult to download these files. Any other cloud alternative?

this because gfw....
and baidu cloud not way auto upload.

Yes, but a vip can upload auto.


getting full errors stacks using Q.allSettled?

I'm using this piece of code:
return Q.allSettled([
                somePromise,
                someOtherPromise
            ])
            .then(function (results) {
                results.forEach(function (result) {
                    if (result.state !== 'fulfilled') {
                        console.log(result.reason);
                    }
                });
            });

which is fine to handle silently errors from my array of promises.
Though, result.reason only gives the error message, which is not convenient.
Is there a way to get the full error stack bubbled by one of the rejected promises?
thx,

result.reason should be an Error instance. as with throw, the language permits you to throw other things, but in practice, they should always be Error instances. This problem must be solved in the provider of somePromise or someOtherPromise.


ci: refactor CI yaml settings

Sorting out steps and run redis-cli IT cases also on macos.
Signed-off-by: tison<EMAIL_ADDRESS>

Push 62c2952b8a8792bedfb308ba278303085b81c629 to ensure that cache logic works.

Greate changes.
When I was changing this before, I wondered whether apt install redis / brew install redis could work well as building from source as current way, but i didn't try.

@git-hulk @ShooterIT @PragmaTwice Perhaps we can move build and test tasks from daily CI to per PR CI. They take less than half hour to finish. While building docker image takes more than 2 hours to finish and I'm curious why.

@git-hulk @ShooterIT @PragmaTwice Perhaps we can move build and test tasks from daily CI to per PR CI. They take less than half hour to finish. While building docker image takes more than 2 hours to finish and I'm curious why.

Maybe it is due to that we use QEMU to simulate an arm64 environment.

@PragmaTwice thanks for your input. Another approach is still run more Build and Test tasks every day but separate docker job into another workflow.

Another thing is that since we build the nightly version of the docker image we can automatically publish it to some registries like the docker hub.

Another thing is that since we build the nightly version of the docker image we can automatically publish it to some registries like the docker hub, e.g. some tags like nightly, nightly-20220629.
And I also think building docker image in CI triggered by PRs is unnecessary (maybe an arm evironment is useful, but a docker environment is not necessary for build and test).

Good point that we can push the nightly docker image, latest image need to wait for the new release is too slow for most users.

Let's move the discussion of reviewing build docker image job to #691.
I'll merge this patch now.


Updating log_enabled param

The parameter log_enabled is renamed to logs_enabled to respect new specs

@l0k0ms What about the failed check?

adding: https://github.com/DataDog/integrations-core/pull/1135 and https://github.com/DataDog/integrations-core/pull/1136 to this branch


Propagate request headers and standard headers to upstream services

Composer should act like a proxy so that the appropriate subset of request headers is propagated to upstream
** see https://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-14#section-7.1.3 for a definition of hop-by-hop headers that must be removed by a proxy
** see https://www.mnot.net/blog/2011/07/11/what_proxies_must_do on how a proxy should behave
additional composer related headers should be propagated to upstream
** add x-forwarded-* / forwarded headers, see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded
** add originally requested path

Closed by PR #35 - for the forwarded headers, #36 was opened


Enhanced running of annotations actions

Motivation and context

How has this been tested?

Checklist

[x] I submit my changes into the develop branch
[x] I have created a changelog fragment
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[ ] I have linked related issues (see GitHub docs)
[x] I have increased versions of npm packages if it is necessary
(cvat-canvas,
cvat-core,
cvat-data and
cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.

Summary by CodeRabbit
Release Notes

New Features

Introduced undo/redo functionality for annotation actions, enhancing user interaction.
Enhanced annotation actions to support various object types, increasing flexibility.
Added capability to execute annotation actions on specific objects.
New commit method for managing annotation changes in the Collection class.
Added runAnnotationAction method across various components for improved action handling.

Bug Fixes

Removed outdated tests related to job saving and automatic saving recommendations.

Documentation

Updated interfaces and method signatures to reflect new action handling capabilities.

Style

Adjusted styles for improved layout in the annotation actions modal.

Codecov Report
Attention: Patch coverage is 69.20904% with 109 lines in your changes missing coverage. Please review.

Project coverage is 74.08%. Comparing base (1e7ff33) to head (d14f822).
Report is 12 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #8727      +/-   ##
===========================================
- Coverage    74.20%   74.08%   -0.12%
===========================================
  Files          401      406       +5
  Lines        43504    43713     +209
  Branches      3950     3984      +34
===========================================
+ Hits         32280    32386     +106
- Misses       11224    11327     +103

Components
Coverage Δ

cvat-ui
78.24% <69.20%> (-0.27%)
:arrow_down:

cvat-server
70.49% <ø> (-0.02%)
:arrow_down:

----
🚨 Try these New Features:

Flaky Tests Detection - Detect and resolve failed and flaky tests
JS Bundle Analysis - Avoid shipping oversized bundles


Delete user submission - 650825d7788f0000012f8e31 - and update prefilled metadata - PMID 34493870

The metadata in this prefilled template needs updating.
Please delete this submission '650825d7788f0000012f8e31' so I can update the metadata in Curation App.
I will then comment on this ticket with the new metadata which I believe a developer needs to add to depocuration.
I should then be able to create a new submission and download a corrected template.

The user is waiting for me to do this.

@earlEBI the submission has been deleted

I don't know which way @sajo-ebi wants to do it, but if I pass the GCSTs that were created in the Curation app... they are GCST013196 and GCST013197... which might be strange as sumstats brackets start from GCST000001-GCST001000/


qa_crowbarsetup: add Cloud5 repos for GMC2 etc

without this, mkcloud is failing from the repo-check
which is only skipped on cloudsource=develcloud

:+1: anyhow some duplication


Consider removing array sizes from their types.

We currently store the size of an array in the type a couple of ways -- with a range: Option<ExprKey> and with size: Option<i64>.  Both are obviously optional and we may easily have an array type with unknown size.
Soon we'll add support explicitly for 'variable' or essentially unknown sized arrays for which the size is known only at runtime.  The size will be fixed and not actually variable, but only known at runtime.
Currently two arrays of different size have the same type, i.e., int[2] is the same as int[222].
Having the size in the type is useful for bounds checking and confirming correct behaviours when using a valueless union (aka an enum) as the indexing range.  But it adds a lot of complexity to the type system -- it's the only reason Type has a dependency on ExprKey -- and it makes managing expressions much more complex.  Not only do we need to worry about exprs in const declarations, predicate parameters, let expressions and constraints, but also in any of their types, just in case they are arrays.  (But even then only optionally.)
I think that given we'll have explicitly unknown sized arrays coming soon and the above complexity, it makes sense to remove the array size from the type and for it to be stored only with the expression, if known.  This would help the type checker -- consts wouldn't need to be evaluated especially before type checking -- and would simplify the backend or other places where the array size is required.
The only question I have is perhaps whether to remove the size from the language.  Do we only allow an array type to be written as int[] or bool[][][] rather than having the explicit sizes?  We will need to allow int[] style declarations for unknown sized arrays when they arrive, so perhaps we have all arrays declared as such?
When using these types, they can be optionally attached to const and let decls, but they always have a RHS initialiser, which will dictate the array size.  let ary: int[] = [1, 2, 3] is explicitly a 3 element array, though its type doesn't know that.
Predicate parameters will need to allow unknown sized arrays anyway, so there is no initialiser and the length of the array is a runtime value.  A len(ary) intrinsic will be used.

One thing we lose though is predicate parameters that are arrays of fixed size as in:
predicate foo(a: int[3]) {

}

where we would have to add constraint that guarantees that the size of a in the solution is 3.
That being said, I think we could probably get around this by immediately converting this information as a constraint where the above would be transformed (by the compiler) to:
predicate foo(a: int[]) {
    constraint len(a) == 3;
}

So, the user would still encode size information between [..] but the compiler would move that information into a constraint. This can be done very early, even before type checking (or even by the parser like we used to do with initialized decision variables back in the days).

Hrmm, yep, it's tricky.  The main point here is to remove the optional range and size from the array type.  So having int[3] allowed sometimes means we'd have to store the size in the parameter itself somehow.  This might not be a bad idea in general, to always have the param sizes pre-computed/available.

I was just thinking we would turn the size information into a constraint right away.. the 3 above wouldn't even go into the type.. it would just become a constraint in the parser and its purpose is constraining the solution. So the 3 will not actually be used for compile-time OOB checks for example.

I was just thinking we would turn the size information into a constraint right away.. the 3 above wouldn't even go into the type.. it would just become a constraint in the parser and its purpose is constraining the solution. So the 3 will not actually be used for compile-time OOB checks for example.

Yikes, our parser already does waaay too much.  I guess it's already just pushing constraints into the Predicate as they're parsed, but if ever we re-do the parser/macro system in the future this wouldn't be possible.

Yeah that's true. Maybe it's one of those things that has to get resolved right after the initial ast is produced (which will have the size in the array type) but the next phase doesn't have the size in the type (it would be a different Type enum)


[$250] Expense - Tapping back button after deleting expense leads to not here page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.1-0
Reproducible in staging?: y
Reproducible in production?: n
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: applause internal team
Slack conversation:
Action Performed:

Launch New Expensify app.
Submit two manual expenses to any user.
Go to transaction thread of any expenses.
Tap on the report header.
Tap Delete expense.
Delete the expense.
Tap on the back button on the top left.

Expected Result:
App will return to the main page.
Actual Result:
App shows long skeleton loading and then not here page loads.
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/38435837/19324436-532e-4869-99f7-aee4e247de92

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0149255b2b8a3385dc
Upwork Job ID:<PHONE_NUMBER>810844307
Last Price Increase: 2024-06-24

Issue OwnerCurrent Issue Owner: @allroundexperts

@CortneyOfstad FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

We think that this bug might be related to #wave-collect - Release 1

@bernhardoj is your fix going to work here too?

I think we can demote this issue at this point. Its not blocking the user from using the app further, its quite specific edge case too

Asked @cdOut to look into this as he worked on the details revamp

@mountiny sorry, which one?

I fixed the issue. I came from Upwork. Should I submit the proposal, or is there no need to now?

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link:

@mountiny I fixed the issue. I came from Upwork. Should I submit the proposal, or is there no need to now?

I submitted a proposal on Upwork outlining how to fix this. I have already fixed it locally and included a video in the proposal showcasing the app working as expected.

Hey, I'm from SWM. I've found a possible solution. I need to consult it with navigation colleagues. I will update you tomorrow as they are already OOO.

Proposal
Please re-state the problem that we are trying to solve in this issue.
When a user deletes a Transaction and subsequently presses the back button, the app shows "page is not here" error.
What is the root cause of that problem?
When the user deletes a Transaction, they are navigated to the page of the deleted item, resulting in a "page is not here" error.
What changes do you think we should make in order to solve the problem?
We will remove the deleted Transaction's page from the routes stack list.
𝗜𝘁𝗲𝗺 𝗗𝗲𝗹𝗲𝘁𝗶𝗼𝗻:
Make the necessary changes for transaction deletion.
𝗔𝗰𝗰𝗲𝘀𝘀 𝗡𝗮𝘃𝗶𝗴𝗮𝘁𝗶𝗼𝗻 𝗦𝘁𝗮𝗰𝗸:
Utilize the navigation library's API to access and manipulate the navigation stack.
𝗥𝗲𝗺𝗼𝘃𝗲 𝗗𝗲𝗹𝗲𝘁𝗲𝗱 𝗣𝗮𝗴𝗲 𝗳𝗿𝗼𝗺 𝗦𝘁𝗮𝗰𝗸:
Identify and remove the page corresponding to the deleted item from the navigation stack.
𝗨𝗽𝗱𝗮𝘁𝗲 𝗡𝗮𝘃𝗶𝗴𝗮𝘁𝗶𝗼𝗻 𝗦𝘁𝗮𝘁𝗲:
Apply the updated navigation stack state using the navigation library's state management functions to ensure the deleted page is no longer accessible.

I've found a possible fix similar to this one.
But after a discussion with @WojtekBoman we've concluded that it might require changes in the goBack function of Navigation.
@mountiny what is the priority of it? If needed, I can instantly prepare a fix; later, the navigation team will prepare a more generic solution.

Depends on what other tasks you have lined up, I think it would be great to get a PR merged for this by EOW

Depends on what other tasks you have lined up, I think it would be great to get a PR merged for this by EOW

Hey I'd like to know why my proposal is not getting considered?

the updated navigation stack state using the navigation library's state management functions to ensure the deleted page is no longer accessible.

Hey @yassinezaanouni, initially I with @cdOut was working on this change which caused this bug. That's why we are investigating it.
Moreover, your proposal is IMO too general and doesn't mention the detailed root cause and solution.

@kosmydel Ok thank you, next time I'll try to be more specific.

@mountiny I've prepared a fix as the navigation team (Adam & Wojtek) is busy now, but they will probably need to fix it using a more general approach as a follow-up (fixing the goBack function), as I don't have enough context here.

Nice, thanks @kosmydel! Can you please write more description for the fix and prepare the PR body/ checklist?

Nice, thanks @kosmydel! Can you please write more description for the fix and prepare the PR body/ checklist?

I've added more details in the PR, and filled in the checklist

This has been re-reported here https://github.com/Expensify/App/issues/45576 so it seems the PR did not fix the issue or broke some very similar case. Going to mark this issue as blocker and close the other one

@allgandalf posted a proposal here

Did you try reverting the PR in this issue and see if it fixes the new problem? Seems quite suspicious that this PR was deployed on staging and the issue started happening.
But also, it is certainly related, no? Like it's the same problem in a slightly different flow?

If I am understanding this correctly, it seems to me that they are basically the same problem and the fix applied here was incomplete. Your proposal is even in the same line as the PR in this issue changed and it's in the same flow.

This is not the same.
Previously, we were redirected to the page that was not found. Now, it briefly shows the not found page, when closing the RHP (but finally we are on the correct chat, previously we landed on not found). I'm not sure how we missed it during the testing and review. The RCA here sounds correct.
I can have a look at this, but I will probably have some results tomorrow, as I'm finishing my work for today soon.

Demoting again from this convo

@allroundexperts can you have the checklist completed before EOD tomorrow? This will help avoid any delay in payment — thank you!

@allroundexperts please complete the check list at your earliest convenience! Thank you!

Hi, I just wanted to confirm, has this issue been properly fixed by this or another issue PR or are there still problems as pointed in this previous comment?

Hi, I just wanted to confirm, has this issue been properly fixed by this or another issue PR or are there still problems as pointed in this previous comment?

The other issue was closed and fix was added here.

Checklist

https://github.com/Expensify/App/pull/43251
The author is aware of the issue and helped to review the fix in this issue.
N/A
A regression test would be helpful here.

Regression test

Open the app and submit two manual expenses to any user.
Go to transaction thread of any expenses.
Tap on the report header and select Delete expense.
Delete the expense.
Tap on the back button on the top left.

Verify that the app returns to the main page.
Do we 👍 or 👎 ?

$250 approved for @allroundexperts


Update syscall mappings in wiki

Per talk with Brendan today.
It would be nice to profile Lind to trace what parts of Lind each syscall is touching. A program that runs through all of the syscalls, combined with appropriate logging verbosity (such as in this issue, but also in NaCl) would be helpful.
For each syscall it would be good to know which of the following scenarios it's taking:

Routing from the IRT directly to SafePOSIX
Routhing from the IRT, through some NaCl functions, then to SafePOSIX
Routing from the IRT, into NaCl, then to the Kernel
Routing from the IRT, into NaCl (no Kernel)

I have a much better idea of how all this works now, but I should update the wiki to reflect that.

This is much better with the wiki update. I'm going to close this.


Check the alt text when nearly done

Years can't be automated in alt text, and  there's a new weight-at-age figure early on main-figures, which may offset some of the manual figures (I forget - that may not matter).

Done in e0324cce. Haven't fully tested with rebuild from scratch, but knitr works (with cache).


Ability to serve an ASGI app object directly, rather than passing a module string

This is a very exciting project - thanks for releasing this!
I tried to get it working with my https://datasette.io/ ASGI app and ran into this error:
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/process.py", line 121, in start
    self._popen = self._Popen(self)
                  ^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/context.py", line 288, in _Popen
    return Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/popen_spawn_posix.py", line 32, in __init__
    super().__init__(process_obj)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/popen_fork.py", line 19, in __init__
    self._launch(process_obj)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/popen_spawn_posix.py", line 47, in _launch
    reduction.dump(process_obj, fp)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'asgi_csrf_decorator.<locals>._asgi_csrf_decorator.<locals>.app_wrapped_with_csrf'

Here's the script I wrote to replicate the problem, saved as serve_datasette_with_granian.py:
from granian.server import Granian
from granian.constants import HTTPModes, Interfaces, Loops, ThreadModes
from granian.log import LogLevels
from datasette.app import Datasette

def serve_with_granian():
    ds = Datasette(memory=True)
    app = ds.app()
    Granian(
        app,
        address="<IP_ADDRESS>",
        port=8002,
        interface=Interfaces.ASGI,
        workers=1,
        threads=1,
        pthreads=1,
        threading_mode=ThreadModes.workers.value,
        loop=Loops.auto.value,
        http=HTTPModes.auto.value,
        websockets=True,
        backlog=1024,
        log_level=LogLevels.info.value,
        ssl_cert=None,
        ssl_key=None,
    ).serve()

if __name__ == "__main__":
    serve_with_granian()

Run it like this to see the error (run pip install datasette first):
python serve_datasette_with_granian.py

Are there changes I can make to Datasette to get this to work, or is this something that illustrates a bug in Granian?
Relevant Datasette code is here: https://github.com/simonw/datasette/blob/6a352e99ab988dbf8fd22a100049caa6ad33f1ec/datasette/app.py#L1429-L1454
It's applying my asgi-csrf ASGI middleware from https://github.com/simonw/asgi-csrf

Hi @simonw,
the app argument should be the import location of your application, not the actual object. The actual load of the app will be handled by Granian itself.
You should be able to serve your application just writing a main.py file with these contents:
from datasette.app import Datasette

ds = Datasette(memory=True)
app = ds.app()

and run Granian from cli with: granian --interface asgi main:app

Thanks - that recipe worked for me right now, and didn't return any errors.
However... I really want the ability to start Granian running from my own Python scripts, in the manner shown above.
The reason is that Datasette is configured by the command line. The usual way of starting it looks like this:
datasette serve mydb.db -p 8003 --setting sql_time_limit_ms 10000 --crossdb

There are a whole ton of options like those: https://docs.datasette.io/en/stable/cli-reference.html#datasette-serve
datasette serve starts a server running using Uvicorn - but I also have a plugin for using gunicorn instead which works like this:
# Install the plugin
datasette install datasette-gunicorn
datasette gunicorn mydb.db -p 8003 --setting sql_time_limit_ms 10000 --crossdb

I ran into the "can't pickle local object" error while trying to build a new plugin, datasette-granian, which worked in a similar way to datasette-gunicorn.
The implementation of datasette-gunicorn is here: https://github.com/simonw/datasette-gunicorn/blob/0.1.1/datasette_gunicorn/init.py
So I guess this is a feature request: I would like a documented way to programatically start a Granian server without having to use the granian --interface asgi CLI tool.

@simonw using Granian interface directly is absolutely possible, but as I said, the app argument shouldn't be your application instance, but a string with the importable location of your application object. It depends on how you named your module/package, but generally speaking should be something like yourmodule:app.
Benchmarks apps in Granian repo can show you an example: https://github.com/emmett-framework/granian/blob/e5139e218606a1b7bac817d2cfa1975a0d23a40c/benchmarks/app/asgi.py#L76-L82

The challenge with that is that my application object needs to be instantiated with additional arguments that have been provided by the user.
One thing that might work is that I could code-generate a Python script file, save it to /tmp and then pass it to Granian(...) - but that feels pretty messy! I'd much rather be able to serve an ASGI app directly, like I can with Uvicorn and Gunicorn:

https://github.com/simonw/datasette/blob/6a352e99ab988dbf8fd22a100049caa6ad33f1ec/datasette/cli.py#L660
https://github.com/simonw/datasette-gunicorn/blob/5b2ca643eb174f19d664c5bf97dc839da64188ec/datasette_gunicorn/__init__.py#L49-L56

That could work. I'm not sure how I'd pass in the additional arguments though.
The thing I want to build is effectively a CLI script that looks something like this:
python datasette_granian.py -h <IP_ADDRESS> -p 8005 --setting page_size 5

(Plus a whole bunch more options).
Running this script would instantiate my existing Datasette() class with various options, then use ds.app() to get an ASGI app and start serving that using Granian.

@simonw wait, I got an idea to get this working with the current implementation.
The serve method of Granian class actually accepts a target_loader parameter: https://github.com/emmett-framework/granian/blob/9265a03416a536acb37ca6073292a0c88b23ab47/granian/server.py#L303
You can use this to override the default behaviour to loading the application, and thus you can write something like this in a run.py file:
from datasette.app import Datasette
from granian import Granian

ds_kwargs = {}

def load_app(target):
    if target != "dyn":
        raise RuntimeError("Should never get there")
    ds = Datasette(**ds_kwargs)
    return ds.app()

def main():
    global ds_kwargs

    ds_kwargs.update(some_util_to_convert_cli_param_to_dict())
    srv = Granian("dyn", address="<IP_ADDRESS>", port=8002, interface="asgi")
    srv.serve(target_loader=load_app)

if __name__ == "__main__":
    main()

then running python run.py --whatever param --you-need-for ds should work :)

That didn't quite work - the subprocess couldn't see the ds_kwargs updated dictionary - but thanks to this I did figure out a pattern that works: https://github.com/simonw/datasette-granian/blob/0.1a0/datasette_granian/init.py
I passed the arguments as serialized JSON:
    srv = Granian(
        # Pass kwars as serialized JSON to the subprocess
        json.dumps(kwargs),
        address=host,

Then in load_app:
def load_app(target):
    from datasette import cli

    ds_kwargs = json.loads(target)
    ds = cli.serve.callback(**ds_kwargs)
    return ds.app()

You can try the above out like this:
pip install datasette datasette-granian
datasette granian --memory

This will start a server on port 8001 serving the Datastte interface.

@simonw probably wrapping works and is a cleaner solution. Eg:
from datasette.app import Datasette
from granian import Granian

def app_loader(kwargs):
    def load_app(target):
        if target != "dyn":
            raise RuntimeError("Should never get there")
        ds = Datasette(**ds_kwargs)
        return ds.app()
    return load_app

def main():
    ds_kwargs = some_util_to_convert_cli_param_to_dict()
    srv = Granian("dyn", address="<IP_ADDRESS>", port=8002, interface="asgi")
    srv.serve(target_loader=app_loader(ds_kwargs))

if __name__ == "__main__":
    main()

Tried that but it didn't work - I got this error:
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/popen_spawn_posix.py", line 47, in _launch
    reduction.dump(process_obj, fp)
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'app_loader.<locals>.load_app'

How about if Granian had some kind of mechanism where you could specify a pickle-able object which should be passed to each of the workers, specifically designed for this kind of use-case?

How about if Granian had some kind of mechanism where you could specify a pickle-able object which should be passed to each of the workers, specifically designed for this kind of use-case?

Gonna think about it. Probably the theme here is making the target_loader argument more customisable.

@gi0baro Is there a solution to the problem? I want to run application without global variables.

@novichikhin what's the error? Do you have a stack trace?

@novichikhin what's the error? Do you have a stack trace?

[INFO] Starting granian
[INFO] Listening at: <IP_ADDRESS>:8002
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\dev\python\backend\users-service\users_service\api\__main__.py", line 37, in <module>
    run_application()
  File "C:\dev\python\backend\users-service\users_service\api\__main__.py", line 33, in run_application
    server.serve(target_loader=app_loader(settings=settings))
  File "C:\Users\novichikhin\AppData\Local\pypoetry\Cache\virtualenvs\users-service-auTBzo84-py3.11\Lib\site-packages\granian\server.py", line 390, in serve
    serve_method(spawn_target, target_loader)
  File "C:\Users\novichikhin\AppData\Local\pypoetry\Cache\virtualenvs\users-service-auTBzo84-py3.11\Lib\site-packages\granian\server.py", line 342, in _serve
    self.startup(spawn_target, target_loader)
  File "C:\Users\novichikhin\AppData\Local\pypoetry\Cache\virtualenvs\users-service-auTBzo84-py3.11\Lib\site-packages\granian\server.py", line 334, in startup
    self._spawn_workers(sock, spawn_target, target_loader)
  File "C:\Users\novichikhin\AppData\Local\pypoetry\Cache\virtualenvs\users-service-auTBzo84-py3.11\Lib\site-packages\granian\server.py", line 313, in _spawn_workers
    proc.start()
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\process.py", line 121, in start
    self._popen = self._Popen(self)
                  ^^^^^^^^^^^^^^^^^
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\context.py", line 336, in _Popen
    return Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\popen_spawn_win32.py", line 94, in __init__
    reduction.dump(process_obj, to_child)
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'app_loader.<locals>.load_app'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\spawn.py", line 122, in spawn_main
    exitcode = _main(fd, parent_sentinel)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\spawn.py", line 132, in _main
    self = reduction.pickle.load(from_parent)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
EOFError: Ran out of input

@novichikhin can you try with wrap_loader=False in the serve method and defining/importing everything into a single method? Multiprocessing requires objects to be pickable. Something like:
def app_loader():
    from whatever import get_app_settings, register_app
    settings = ...
    return register_app(...)

@gi0baro
def load_app() -> FastAPI:
    from users_service.api.setup import register_app
    from users_service.settings.main import get_app_settings

    settings = get_app_settings(
        app_env=AppEnvTypes.prod if os.getenv("IS_PRODUCTION") else AppEnvTypes.dev
    )

    return register_app(settings=settings)

def run_application() -> None:
    server = Granian(
        "app",
        address="<IP_ADDRESS>",
        port=8002,
        interface=Interfaces.ASGI
    )

    server.serve(target_loader=load_app, wrap_loader=False)

if __name__ == "__main__":
    run_application()

[INFO] Starting granian
[INFO] Listening at: <IP_ADDRESS>:8002
[INFO] Spawning worker-1 with pid: 12772
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\spawn.py", line 122, in spawn_main
    exitcode = _main(fd, parent_sentinel)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\novichikhin\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\spawn.py", line 132, in _main
    self = reduction.pickle.load(from_parent)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: Can't get attribute 'load_app' on <module '__main__' (built-in)>

@novichikhin I don't really know how to solve the pickling issues.
Maybe adding support for factories should solve your need?

Subscribing, this issue is unfortunately a blocker for me. I currently use hypercorn, and a thing I rely on in testing is that I can launch several instances of it as trio tasks (to simulate several nodes in a network), and they even support reporting back when the startup is completed via a trio event (hypercorn has a trio compatibility submodule). I don't mind if it's not as efficient as launching from CLI, but it's incredibly convenient for tests.

@novichikhin pickle cannot serialise closures for obvious reasons, they are not compiled into byte-code until called at least once. If you want to use settings as an argument you can either:

use functools.partial to define your loader. Signature would mostly look something like this (target: str, *, settings: AppSettings) -> App
make a small custom class that'll cache your settings and define __call__

Both variants are applicable only for global module scope, i. e. no closures :)
Also, also - if you are using __main__.py file to start your server, you should consider moving loader somewhere else, because it's not a valid target for pickle unless you're willing to do some sketchy path hacking
# runner.py
def app_loader(_: str, *, settings: AppSettings):
    return register_app(settings=settings)

# __main__.py
import functools
from .runner import app_loader
settings = ...
loader = functools.partial(app_loader, settings=settings)
Granian(...).serve(target_loader=loader)

Maybe it's little late
To avoid the pickle problem, you can use the "fork" process creation strategy instead of the "spawn".
Put it somewhere closer to the beginning of code multiprocessing.set_start_method('spawn')
Also, for some PoC I used this code with app object (not str)
from granian.asgi import _callback_wrapper
from granian._futures import future_watcher_wrapper
from granian._granian import ASGIWorker
from granian._loops import WorkerSignal
import contextvars
import asyncio
from fastapi import FastAPI

sock = bind_socket('<IP_ADDRESS>', 9400)
loop = asyncio.new_event_loop()
fastapi_app = FastAPI()

asgi_worker = ASGIWorker(
    worker_id=worker_id,
    socket_fd=sock.fileno(),
    threads=1,
    blocking_threads=1,
    backpressure=1024,
    http_mode='1',
    http1_opts=None,
    http2_opts=None,
    websockets_enabled=False,
    opt_enabled=False,
    ssl_enabled=False,
    ssl_cert=None,
    ssl_key=None,
)

wcallback = _callback_wrapper(fastapi_app, {}, {}, None)
wcallback = future_watcher_wrapper(wcallback)

sock.listen()
asgi_worker.serve_wth(wcallback, loop, contextvars.copy_context(), WorkerSignal())  # or serve_rth

all things are stolen from: https://github.com/emmett-framework/granian/blob/80b80cbe9585789e2cf0fea977285843a14b6e5d/granian/server.py#L212

Maybe it's little late To avoid the pickle problem, you can use the "fork" process creation strategy instead of the "spawn". Put it somewhere closer to the beginning of code multiprocessing.set_start_method('fork')

While this is true for Linux, it won't work on other platforms, which is something to be aware of.

Also, for some PoC I used this code with app object (not str)

It's not clear to me the advantage in the proposed solution, given you're limited to 1 worker and you're sacrificing the entirety of Granian processes management (SIGHUP, workers reload, worker respawn in case of crashes, just to name a few of them).
Also, as I wrote in #330

I get the whole reduce memory usage theme, but at the same time I cannot guarantee – even considering Granian uses its own internal mutability strategy that won't rely on Python and GIL – things will work as expected when resources gets shared between workers: there's a reason behind the design of expecting the target is an importable resource and not a Python object, it is not just because we were lazy to do so :)
The whole memory-shared thing in my opinion will be revisited once Python 3.13 lands, given that we can actually avoid the GIL everywhere (which also means the entirety of the application itself and all its dependencies are no-gil compatible), but for now it just doesn't feel enough safe to me

So let's just say, in general, I won't support issues caused by this kind of usage :)

In my specific case, we have a complex legacy project with its own supervisor process. In addition to managing the worker, the master process also receives some data and distributes it to the workers through pipes. So I need to create worker processes myself and pass pipes as arguments

@gi0baro Is this the correct ticket to monitor for eventually adding a CLI option allowing Granian to accept an app factory function name? I'm currently using your suggested workaround (and it works great), but I want to keep an eye out for a more official method. Thanks!

@gi0baro Is this the correct ticket to monitor for eventually adding a CLI option allowing Granian to accept an app factory function name?

Not really, please open up a separate issue for that.


Module ms17-010 is falsely reporting "not vulnerable", despite the target being vulnerable.

Describe the bug
The module ms17-010 is always reporting "not vulnerable", despite the target being vulnerable.
This is because the module code itself is not working with python3, but the errors are being catched by the try/except/finally wrapper, more specifically the "except: return false" part.
To Reproduce

Tested with HackTheBox Machine "Blue"
Remove the try/except/finally block and look at the error messages

Expected behavior
The module should report vulnerable ms17-010 instances.
Screenshots
This screenshot was created after replacing line 437 with "raise" to propagate the error.

@SebastianApel is this with the newest version from the develop branch or an older version?

I have tested both versions - both are not working. The code is not converted to python3.
The python code in the following link is a python3 conversion from the original python2 code. It is working for me:
https://gist.github.com/mdawsonuk/caac9ec724abe4e70277c6a2478629da

@SebastianApel Okay thanks, we'll take a look and try to get a fix out! Appreciate the bug report.


The Dockerfile for release 5.2 installs master version.

The Dockerfile used for the release 5.2 image does not install the 5.2 release but uses master:
# Download latest version of the code and install npm dependencies
RUN git clone https://github.com/ging/fiware-pep-proxy.git && \
    cd fiware-pep-proxy && \
    npm install

Adding:
git checkout 5.2 && \

right after the clone should be enough.

Fixed in 5.2.1


Review seqner usage (decimal vs hex)

Review if we are using/calling the seqner correctly in a bunch of places in the code regarding sequence number being decimal or hexadecimal.  It'd be helpful to add tests that run over 10 key events.
I assigned the issue to myself as a reminder.

@rodolfomiranda I encountered this I think. Currently we do const sn = Number(state.s) which only works for state.s < 10. If state.s is expected to be in hexadecimal without the 0x prefix, we should do this instead: const sn = parseInt(state.s, 16). I have a fix on my fork, but it contains some other fixes that I need to branch out as well. I probably won't get to it until monday.

Keripy definition for numbers from Number:

    Parameters:
        num (int | str | None): non-negative int number or hex str of int
            number or 0 if None
        numh (str):  string equivalent of non-negative int number

    Note: int("0xab", 16) is also valid since int recognizes 0x hex prefix

I think there's a logic error in CesrNumber of signify-ts. It does not match the logic of Number in keripy
https://github.com/WebOfTrust/signify-ts/blob/421232df0dd52418a917ceff7f2b7d3e398d1d29/src/keri/core/number.ts#L17-L23
vs
https://github.com/WebOfTrust/keripy/blob/86c50b466f3fb6b8a55615ce40ba1cc31d10b749/src/keri/core/coring.py#L1582-L1597
Also there are probably issues using parseInt with large integers (bigger than safe integer or 2^53)
CesrNumber should be fixed. Review code for uses of parseInt(input) or Number(input). Where needed replace with
const result = new CesrNumber({}, input, undefined).num


add train.prototxt

add train.prototxt

name: "conv2_1/dw"  type: "Convolution"
is this still Convolution?,it isn't depthwise convolution


Calculating streak is probably easier than how it is implemented now.

4th point in this

The 4th point uses WITH which is not supported in MYSQL. Instead we can create VIEW and then query on it. But this seems to be a bad option.


Android Studio (the doctor check crashed)

Steps to Reproduce

...Run "flutter doctor" in Flutter

Logs

Android Studio (the doctor check crashed)
    X Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know
      about this issue at https://github.com/flutter/flutter/issues.
    X FileSystemException: Exists failed, path = 'C:\Users\Chad Brezina\Documents\Android\Android Studio" .plugins' (OS
      Error: The filename, directory name, or volume label syntax is incorrect.
      , errno = 123)

flutter doctor -v
[√] Flutter (Channel stable, 2.2.2, on Microsoft Windows [Version 10.0.19043.1052], locale en-US)
• Flutter version 2.2.2 at C:\Flutter
• Framework revision d79295af24 (2 weeks ago), 2021-06-11 08:56:01 -0700
• Engine revision 91c9fc8fe0
• Dart version 2.13.3

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at C:\Android\Sdk
• Platform android-30, build-tools 30.0.3
• Java binary at: C:\ProgramData\Oracle\Java\javapath\java.exe
• Java version Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[☠] Android Studio (the doctor check crashed)
X Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know
about this issue at https://github.com/flutter/flutter/issues.
X FileSystemException: Exists failed, path = 'C:\Users\Chad Brezina\Documents\Android\Android Studio" .plugins' (OS
Error: The filename, directory name, or volume label syntax is incorrect.
, errno = 123)
• #0      _Directory.existsSync (dart:io/directory_impl.dart:94:7)
#1      ForwardingFileSystemEntity.existsSync
(package:file/src/forwarding/forwarding_file_system_entity.dart:43:33)
#2      ErrorHandlingDirectory.existsSync.
(package:flutter_tools/src/base/error_handling_io.dart:479:22)
#3      _runSync (package:flutter_tools/src/base/error_handling_io.dart:573:14)
#4      ErrorHandlingDirectory.existsSync (package:flutter_tools/src/base/error_handling_io.dart:478:12)
#5      AndroidStudio.pluginsPath (package:flutter_tools/src/android/android_studio.dart:186:52)
#6      AndroidStudioValidator.validate (package:flutter_tools/src/android/android_studio_validator.dart:46:17)
#7      asyncGuard. (package:flutter_tools/src/base/async_guard.dart:111:32)
#8      asyncGuard. (package:flutter_tools/src/base/async_guard.dart:109:18)
#9      _rootRun (dart:async/zone.dart:1354:13)
#10     _CustomZone.run (dart:async/zone.dart:1258:19)
#11     _runZoned (dart:async/zone.dart:1789:10)
#12     runZonedGuarded (dart:async/zone.dart:1777:12)
#13     runZoned (dart:async/zone.dart:1708:12)
#14     asyncGuard (package:flutter_tools/src/base/async_guard.dart:109:3)
#15     Doctor.startValidatorTasks (package:flutter_tools/src/doctor.dart:199:9)
#16     Doctor.diagnose (package:flutter_tools/src/doctor.dart:303:47)
#17     DoctorCommand.runCommand (package:flutter_tools/src/commands/doctor.dart:50:47)
#18     FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1192:12)

#19     FlutterCommand.run. (package:flutter_tools/src/runner/flutter_command.dart:1043:27)

#20     AppContext.run. (package:flutter_tools/src/base/context.dart:150:19)

#21     CommandRunner.runCommand (package:args/command_runner.dart:196:13)

#22     FlutterCommandRunner.runCommand.
(package:flutter_tools/src/runner/flutter_command_runner.dart:284:9)

#23     AppContext.run. (package:flutter_tools/src/base/context.dart:150:19)

#24     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:232:5)

#25     run.. (package:flutter_tools/runner.dart:62:9)

#26     AppContext.run. (package:flutter_tools/src/base/context.dart:150:19)

#27     main (package:flutter_tools/executable.dart:91:3)

[√] Connected device (2 available)
• Chrome (web) • chrome • web-javascript • Google Chrome 91.0.4472.114
• Edge (web)   • edge   • web-javascript • Microsoft Edge 91.0.864.59
! Doctor found issues in 1 category.

Closing this as duplicate of https://github.com/flutter/flutter/issues/83195


Unexpected token '<' (at VM201 Build.loader.js:1:1)

Please avoid duplicates

[X] I checked all open issues and discussions and none of them matched my problem.

Language and Compiler
Babel and WebPack JavaScript
What environment are you using?
Local Development Server
When does your problem occur?
When the Context is created
What does your problem relate to?
The problem seems React related
React-Unity-WebGL Version
9.4.0
React Version
18.2.0
Unity Version
2021.3.4f1
What happened?

First I've created a "create-react-app"
Npm install react-unity-webgl
Set the Unity Config object as I think it should be set
npm start

I get an Error about unexpected token..? Seems to be that a lot of people have got this, but I can't seem to figure this out.

Reproducible test case
No response
Would you be interested in contributing a fix?

[ ] yes, I would like to contribute a fix

Remove ../public from your URLs, that should fix it.

Not entirely, I'm getting a couple new error on Build.framework.js

You've removed too much, Keep the leading / 😁

That's not it. :( Trust me, I've tried pretty much every combination on those paths..

Have the same error.
create-react-app with react-unity-webgl

In appearance, there are some problems when working specifically with CRA, because the installation in react project, which was created by "hands" (https:/dev.to/stepstep.to/ivadyhabimana/how--create-a-withwithout-appervice-creang----reactrea-appBusi-a30nl) - everything works

The link seem don't work any more.

In appearance, there are some problems when working specifically with CRA, because the installation in react project, which was created by "hands" (https:/dev.to/stepstep.to/ivadyhabimana/how--create-a-withwithout-appervice-creang----reactrea-appBusi-a30nl) - everything works

i have the same error with CRA and react-unity-webgl.
@levkovich2806 can you reupload the link with created by ¨hands¨ solution plz?

Create react app without CRA - https://dev.to/ivadyhabimana/how-to-create-a-react-app-without-using-create-react-app-a-step-by-step-guide-30nl

you can fix with CRA
add webpack.config.js in project root
example webpack.config.js
`const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
module.exports = {
entry: './index.js',
mode: 'development',
output: {
path: path.resolve(__dirname, './dist'),
filename: 'index_bundle.js',
publicPath: '/'
},
target: 'web',
devServer: {
port: '5000',
static: {
directory: path.join(__dirname, 'public')
},
open: true,
hot: true,
liveReload: true,
},
resolve: {
extensions: ['.js', '.jsx', '.json'],
},
module: {
rules: [
{
test: /.(js|jsx)$/,
exclude: /node_modules/,
use: 'babel-loader',
},
],
},
plugins: [
new HtmlWebpackPlugin({
template: path.join(__dirname, 'public', 'index.html')
})
]
};`

I have the same exact problem, with the URLs correct and everything, however my project wasn't created from create-react-app, but rather I pulled a react template and started modifying it. What should I do in this case? The template is CoreUI incase you're wondering.

facing same problem. have you figured out the solution ? @YukimuraKyoko


bicep docs example to upload file to private registry doesn't work

Bicep version
Bicep CLI version 0.4.1008
Describe the bug
bicep documentation example to push files to private registry fails with a message:
The module alias name "acrbicepyweyu.azurecr.io/storage" is invalid. Valid characters are alphanumeric, "_", or "-".
Additional context
working snippet:
az bicep publish storage.bicep --target br:exampleregistry.azurecr.io/bicep/modules/storage:v1

https://twitter.com/BicepLang?t=kF73y8X13IlAlpQyBMht9A&s=09
There was an update on this, plus the current workaround to use bicep.exe.

the issue in docs is that to specify a target container registry use br/<registry> instead of br:<registry>.

as a side note,
There is still an open item for the using the moduleAliases from bicepconfig.json for the publish, however it has been enabled for the restore.
#4771
The current publish experience is as follows, since it has not yet available.
The OCI artifact module alias name "coremodules" does not exist in the built-in Bicep configuration.


Add instruction to install odo via Maven plugin

Signed-off-by: Marco Carletti<EMAIL_ADDRESS>/kind documentation
/area documentation
This way to install odo can be useful if you are integrating odo commands in test automations using a test suite built with Maven

/approve


add an outer div that is never removed to ROverlay

Codecov Report
Patch and project coverage have no change.

Comparison is base (e923376) 98.88% compared to head (a1d506a) 98.88%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #164   +/-   ##
=======================================
  Coverage   98.88%   98.88%
=======================================
  Files          74       74
  Lines        1430     1430
  Branches      222      226    +4
=======================================
  Hits         1414     1414
  Misses         16       16

Impacted Files
Coverage Δ

src/ROverlay.tsx
100.00% <ø> (ø)

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


Updating tests to create temporary files in temp dir instead of user dir

I've noticed that unit tests create a temporary folder .tmp-test-container in my user directory. I don't believe that this is the best choice. Temporary directory is usually a better choice to create temp files.
This PR suggests to use java.io.tmpdir instead of user.home in tests.

Thanks @orange-buffalo, but I'm afraid there's already a PR in motion to do this: #450
I'll close this one; if I've misunderstood then please re-open.

Sure, sorry for the duplicate.


Bump rich from 10.13.0 to 10.14.0

Codecov Report

Merging #62 (6703823) into main (3511587) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              main       #62   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            7         7
  Lines          597       597
=========================================
  Hits           597       597

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 3511587...6703823. Read the comment docs.


ECS Task Definition Review

Remove any legacy or unused vars and secrets from the Task Definition

https://github.com/cds-snc/forms-terraform/pull/494


Update index.html

"Instagram on you Desktop" >
"Instagram on your Desktop"
"Have you ever dreamt of having Instagam on your desktop" >
"Have you ever dreamt of having Instagram on your desktop

Nice work! I'll love to merge this into the project. Any reason why you closed the request?

Thanks!  Yeah, I was just confused. :)  Not sure how it worked.  But it's submitted now, right?

Sent: Monday, October 31, 2016 at 10:04 AM
From: Terkel<EMAIL_ADDRESS>To: terkelg/ramme<EMAIL_ADDRESS>Cc: vsnvx<EMAIL_ADDRESS>"State change"<EMAIL_ADDRESS>Subject: Re: [terkelg/ramme] Update index.html (#75)
Nice work! I'll love to merge this into the project. Any reason why you closed the request?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub, or mute the thread.

Yes, it's live 👍


Do you support orcale?

Hi ,Do you support orcale?

No but it is planned (#175). However, it will not be freely available on crates.io but instead be part of our new paid premium offering. By charging for using SQLx with proprietary/niche databases like MSSQL and Oracle, and potentially other enterprise-focused features, we hope to soon be able to have a developer on SQLx full-time which should benefit everyone using it.
The core of SQLx, the macros, and the Postgres, MySQL and SQLite drivers will remain free and open source, and their maintenance will be included in the full-time work.
Open-source projects and non-profit organizations will be able to obtain a free license to use the paid connectors via an application process.

More information here: https://github.com/launchbadge/sqlx/discussions/909


COFF loader breaking for i960

Working on an i960 processor (https://github.com/mumbel/ghidra_i960) and trying to get SleighDevTools going, but ran into an issue with the COFF loader when I built the pcode test.  This is happening  before my relocate() gets called, but canRelocate() does get called and returns true (that code is only stubs w/ prints, no relocations implemented yet).  It has loaded COFF, so maybe its a bad prebuilt gcc I'm using or maybe this binary has a section/type other than the file I tested with (vmlinux).
I've yet to dive into the Java, but just reporting since its independent of my code looks like.  Any thoughts?
DEBUG Exception appended to MessageLog java.lang.IndexOutOfBoundsException: Offset must be in range [0,335346], got<PHONE_NUMBER>
	at ghidra.program.database.mem.MemoryMapDB.checkFileBytesRange(MemoryMapDB.java:564)
	at ghidra.program.database.mem.MemoryMapDB.createInitializedBlock(MemoryMapDB.java:531)
	at ghidra.app.util.MemoryBlockUtils.createInitializedBlock(MemoryBlockUtils.java:224)
	at ghidra.app.util.opinion.CoffLoader.createInitializedBlock(CoffLoader.java:537)
	at ghidra.app.util.opinion.CoffLoader.processSectionHeaders(CoffLoader.java:481)
	at ghidra.app.util.opinion.CoffLoader.load(CoffLoader.java:201)
	at ghidra.app.util.opinion.AbstractLibrarySupportLoader.doLoad(AbstractLibrarySupportLoader.java:346)
	at ghidra.app.util.opinion.AbstractLibrarySupportLoader.loadProgram(AbstractLibrarySupportLoader.java:83)
	at ghidra.app.util.opinion.AbstractProgramLoader.load(AbstractProgramLoader.java:112)
	at ghidra.plugin.importer.ImporterUtilities.importSingleFile(ImporterUtilities.java:401)
	at ghidra.plugin.importer.ImporterDialog.lambda$7(ImporterDialog.java:351)
	at ghidra.util.task.TaskLauncher$1.run(TaskLauncher.java:90)
	at ghidra.util.task.Task.monitoredRun(Task.java:126)
	at ghidra.util.task.TaskRunner.lambda$1(TaskRunner.java:94)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:830)
  (MessageLog.java:102)
DEBUG:  canRelocate() i960:  352 == 352 or 353?
ERROR Error Importing File: Error importing file: i960_GCC_O3_pcodetest.out ghidra.program.model.address.AddressOutOfBoundsException: Address Overflow in subtract: 00000010 - 0x5f150000
	at ghidra.program.model.address.AbstractAddressSpace.add(AbstractAddressSpace.java:434)
	at ghidra.program.model.address.GenericAddressSpace.add(GenericAddressSpace.java:1)
	at ghidra.program.model.address.GenericAddress.add(GenericAddress.java:237)
	at ghidra.app.util.opinion.CoffLoader.processRelocations(CoffLoader.java:666)
	at ghidra.app.util.opinion.CoffLoader.load(CoffLoader.java:205)
	at ghidra.app.util.opinion.AbstractLibrarySupportLoader.doLoad(AbstractLibrarySupportLoader.java:346)
	at ghidra.app.util.opinion.AbstractLibrarySupportLoader.loadProgram(AbstractLibrarySupportLoader.java:83)
	at ghidra.app.util.opinion.AbstractProgramLoader.load(AbstractProgramLoader.java:112)
	at ghidra.plugin.importer.ImporterUtilities.importSingleFile(ImporterUtilities.java:401)
	at ghidra.plugin.importer.ImporterDialog.lambda$7(ImporterDialog.java:351)
	at ghidra.util.task.TaskLauncher$1.run(TaskLauncher.java:90)
	at ghidra.util.task.Task.monitoredRun(Task.java:126)
	at ghidra.util.task.TaskRunner.lambda$1(TaskRunner.java:94)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:830)
  (ImporterUtilities.java:414)

Can you provide your binary?

i960_GCC_O3_pcodetest.txt
Shoulda checked email before going into work.  txt is an out due to github limitations

Does this processor have just 1 address space?

The first thing I see is that we aren't parsing the section headers correctly.  We have a couple of different  CoffSectionHeader variations, but this binary has section headers of size 0x2c, which we don't have an implementation for.  Have you come across an COFF specification documents for this processor?

I found a header file that will help.  I'll implement this, but I expect other errors to pop up too.

Thanks for looking/helping.  Is that that code be abstracted out to my coff code by implementing some other class or it needs to be in ghidra? (I'd guess that's significant api/class changes if the latter to instead be the former).
There might be a second space, a private 1k RAM @ 0x0  Have not touched it yet.

Unfortunately right now we'd have to add it to core Ghidra here:
https://github.com/NationalSecurityAgency/ghidra/blob/3eb130123bfec55ed2aef82d2bfeb985cd8121f6/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/coff/CoffSectionHeaderFactory.java#L22-L34
Ideally the COFF section header classes would be extension points so if someone is writing a new processor in a standalone extension, they could provide their own implementation that would get discovered at runtime.
For now I'll just add in another version for your case to get you going.

Definitely gets further, and points out the places that are different, thanks again for taking a look.
Yeah, that gets gross quickly.  The CoffSymbol and the CoffSymbolAux* parsing changes as well (additional/changed fields and more padding)... notably:
external.h
#define	SYMENT	struct external_syment
#define	SYMESZ	18
#define	AUXENT	union external_auxent
#define	AUXESZ	18

i960.h
#define	SYMENT	struct external_syment
#define	SYMESZ	24
#define	AUXENT	union external_auxent
#define	AUXESZ	24

I think for now my best action would be to see if I can get my build chain to output ELF instead.


Normalize directory separators in target path

Ensure the slashes are normalized, it's possible that the subpath inside the task is using / and the TaskDirectory is using \ on Windows.

We are blocked by this, our task includes dist/index.js with a forward slash, and this agent fails:

I noticed no VSTS tasks put their index.js in a subfolder, so we edited our task to put index.js directly into the root and that got us unblocked. While this bug is still valid, and the fix still seems good, we are no longer blocked by this.


Renaming union tags

Slack discussion for reference: https://crewlabs.slack.com/archives/CFZE45NTW/p1631709631008600
With Unionize it was very easy to rename a tag in the union—TS would propagate the change to all constructors, match functions and type definitions. Can we achieve something close to this?
https://user-images.githubusercontent.com/921609/133125412-0fbee27b-c4e2-445f-80ed-f499ceb60771.mov

This is a wider issue than just renaming. It also affects other language server features such as "go to definition" and "find references". Example of go to definition from my reduced test case above:


Box does not display on canvas for Mac OSX 10.13.2

Describe the bug
In trying out the Getting Started tutorial, after adding a box to my canvas' elements, it does not display.
To Reproduce
Steps to reproduce the behavior:

Go to 'Essentials`
Click on 'Box`
Drag 'Box' to 'Elements section'
Add background of #DA046E to Box

Expected behavior
The box does not appear.
Screenshots

Device (please complete the following information):

OS & Version: macOS 10.13.2
Version of Alva 0.8.0

Thank you very much for the detailed response, it was exactly what I needed.


Add MonadZero instances

Such that Alt corresponds with Semigroup and Plus with Monoid.
That is, First agrees with the behavior of Maybe, and Last ends up as the opposite.

Thanks!

Thanks Gary! :)


Inputmask on Win10 with Touchscreen or even Chrome Touch Device Emulation not working

Some events are not getting to the mask library or something.  The browser appears to send touch events at least partially even when using the mouse due to the screen having touch capabilities.  When I click into the field with a mask the mask will either clear and when typing no mask gets applied, or the mask will remain and chars typed just move over like it is text in the field.  I see the same behavior when I turn on device emulation in Chrome on a PC with no touch devices. Even tabbing into the field with the keyboard doesn't work.
Things seem to operate fine on tablets and smartphones though and I see articles back a long while working on touch devices, so is touch on a PC messed up? I've even tried grabbing touch events and dispatching them as mouse events. Not much luck, but chaining a mouseenter before a mousedown improved a little.  Is there a specific order I could fire them, or specific events needed?  I don't think it will fix them all, but I'm up for trying anything at this point.

@weisborg ,
Can you provide an example on jsfiddle or is this reproducable on the demo page?  I tried in Chrome with desktop with touch and it seem to work without problems.
Which version did you use?

Sorry for the delay, other stuff became a higher priority and I just got back to this.  When I have the user with the touchscreen monitor try the demo page, most of the masks work, but two of the masks don't and somehow even typed chars outside the bounds of the box- I think it was decimal and email.  The dates on that page worked though.  I was using 4.0.0-52 and -94.  The current build on the demo page was 4.0.0-beta.45 which is a little confusing on the numbering.  I replaced what I was using with it, but it still has issues on the PC with the touch screen monitor.  The issues occur even when the mouse is used since Windows 10 enters some type of different mode where touch events are sent for either.
It was nice having the datetime validations back...when they were removed before I had replaced them with a mask of numbers like 99/99/9999.  Now I use datetime with an inputFormat of mm/dd/yyyy, but neither one works right on the touch screen.  I used to set insertMode to false too to get a bigger cursor, but that doesn't work right with datetime and the cursor jumps all over the place.  There are some other date fields in the application that use both a mask and a datepicker that work fine though.  I think it is because the picker shows then puts focus back to the input so the mask gets the event it needs.  I tried emulating this behavior when touch events are received, but it didn't work.

@weisborg ,
Here a jsfiddle with the mask are there more options you add?
https://jsfiddle.net/vek9vaqh/2/

clearComplete is true, placeholder is "mm/dd/yyyy".  I also use a class to set the value for all controls on the page like- $(".MyDateOnly").inputmask("datetime", { "clearIncomplete": true, "placeholder": "mm/dd/yyyy", "inputFormat": "mm/dd/yyyy" });
The input itself is-
The user with the touchscreen will be in sometime today or tomorrow and we can test some more.

Well, that demo had those overflow issues, but for my date mask it ended up being another library that had some code to cleanup events. When if called .off(“input”) it broke the mask. I removed the calls from the other library and just have to remember not to call it twice on a control since no cleanup.