feat(plugins): ai-prompt-template plugin

Summary
This plugin adds the ability to provide tuned AI prompts to users, who only need to fill in the blanks with variable placeholders (in moustache format: {{variable}} )
It is to be used in conjunction with ai-proxy plugin, as with other AI Family plugins.
AI-Proxy plugin
This allows prompt tuning to be started, or performed, by the experience LLM users in an organisation, and then consumed by anyone.
When activated, it looks for template references in the following forms:
Chat:
{
	"messages": "{template://developer-chat}",
	"properties": {
		"language": "python",
		"program": "flask web server"
	}
}

Prompt:
{
	"prompt": "{template://developer-prompt}",
	"properties": {
		"language": "python",
		"program": "flask web server"
	}
}

Based on this gateway configuration:
_format_version: "3.0"

services:
- name: default
  host: localhost
  path: "/"
  port: 9900
  protocol: https
  routes:
  - name: openai-chat
    paths:
    - "~/openai/chat$"
    methods:
    - POST
    plugins:
    - name: ai-proxy
      config:
        route_type: "llm/v1/chat"
        auth:
          header_name: "Authorization"
          header_value: "Bearer REDACT"
        logging:
          log_statistics: true
          log_payloads: false
        model:
          provider: "openai"
          name: "gpt-3.5-turbo"
          options:
            max_tokens: 512
            temperature: 1.0
    plugins:
    - name: ai-prompt-template
      config:
        allow_untemplated_requests: true
        templates:
        - name: "developer-chat"
          template:  |-
            {
              "messages": [
                {
                  "role": "system",
                  "content": "You are a {{program}} expert, in {{language}} programming language."
                },
                {
                  "role": "user",
                  "content": "Write me a {{program}} program."
                }
              ]
            }
        - name: "developer-prompt"
          template:  |-
            {
              "prompt": "You are a {{language}} programming language expert. Write me a {{program}} program."
            }

It has been designed to work with other formats as soon as they are supported.
It also sanitises string inputs to ensure that json control characters are escaped, preventing arbitrary prompt injection.
Checklist

[x] The Pull Request has tests
[x] A changelog file has been created under changelog/unreleased/kong or skip-changelog label added on PR if changelog is unnecessary. README.md
[ ] There is a user-facing docs PR against https://github.com/Kong/docs.konghq.com - docs PR for all four "AI Family" pluigins is still being worked on separately.

Issue reference
Internal project.

An http client is required to have knowledge of all of the configured templates and their respective parameters in order to make a request. What convenience is provided by having Kong store and render the templates rather than the http client?

An http client is required to have knowledge of all of the configured templates and their respective parameters in order to make a request. What convenience is provided by having Kong store and render the templates rather than the http client?

@flrgh It is designed this way, not so much for restricting exactly what human-callers can do, but so our Kong admins can turn a complex LLM backend into a simple API for consumption from something else.


[Feature] :latest tag on DockerHub

Problem
I've noticed there already was this issue #241 regarding the latest tag and it was solved by using an explicit tag. Now I just wanted to use this in my Unraid setup, but Unraid always tries to pull latest by default, which still doesn't exist. If I use that specific tag, I lose the ability to update the container later on and have to remove and create a new one, again specify the repository with the new tag and also set all the other variables.
Solution
Maybe add a build step in your CI pipeline to also push to the latest tag? Please? :smile_cat:
Notes

Closed in #264


support basic authentication

Basic support for Basic authentication for test command. Fix for #256

Added command line options for authentication type (only basic to start with) and username and password

Added Interface for getting the Authentication Header to make extending to other authentication types in the future easier

Added Authentication Header Provider for Basic authentication

Questions:

I think supporting other means besides entering username and password in the commandline is important for automation scenarios. Would you be happy if we added an option to read authentication details from a file or environment variables or pass in the encoded value?

@JonCubed, this looks great! I'll find some time later this week to get it reviewed/merged/builds made.

thanks @ctaggart


http://developer.github.com/v3/#user-agent-required doesn't redirect correctly

What is the current behavior?
While using the github api I hit the missing user-agent issue and received this link to find more info: http://developer.github.com/v3/#user-agent-required - when I navigated to this link it redirects to https://docs.github.com/en/rest#user-agent-required instead of https://docs.github.com/en/rest/overview/resources-in-the-rest-api#user-agent-required
What changes are you suggesting?
Fix the redirect
Additional information

👋 @Ethan-Arrowood It sounds like the link you're clicking isn't on docs.github.com. Since we only update the docs themselves in this repo, it sounds like the best place to send your feedback is to https://support.github.com/contact/feedback 💛
Let me know if I'm misunderstanding!


Be able to enable and hide instead of only enable/disable with git.showActionButton

"git.showActionButton" enables/disables the functionality for commit, publish and sync buttons. However, there is no option to show only when there is some action to do. Instead of showing a disabled button, I'd like the option to hide it (I can't click it anyway).
In summary, the new feature/option should be something like "enabled, but show only when clickable"

@gian1200, thank you very much for your feedback. Hiding the action button was something that we have tried in the early prototypes. We have found that showing/hiding the button would result in significant jumps in the contents of the "Source Control" view so we have settled on enabling and disabling it.


Changed how some Defaults functions work so class and option types ha…

Ran into some issue while rewriting tests where calling instance.get() wasn't working as it should.
• I added some types to the get and set functions in context/ToneWithContext
• I added some types to getDefaultsFromInstance in util/Defaults
Then added some examples of how this would affect existing test files.

Thanks for the PR! i think i prefer the current behavior of .get() since it doesn't require explicitly passing in the type of object you expect to receive as a generic. Instead, since the Options object is defined as part of the class definition, you automatically get that Options object back when you call get.
Is there a reason that this approach is advantageous?

The reason why I did this was the same reason why I didn't add tests to the comb filters in #538
Take this test for example:
it("can be get and set through object", () => {
    const fbcf = new FeedbackCombFilter();
    fbcf.set({
        delayTime: 0.2,
        resonance: 0.3,
    });
    const values = fbcf.get();
    expect(values.delayTime).to.be.closeTo(0.2, 0.001);
    expect(values.resonance).to.be.closeTo(0.3, 0.001);
    fbcf.dispose();
});

The fbcf.set function fails because:
Argument of type '{ delayTime: number; resonance: number; }' is not assignable to parameter of type 'RecursivePartial<ToneWithContextOptions>'.\n  Object literal may only specify known properties, and 'delayTime' does not exist in type 'RecursivePartial<ToneWithContextOptions>'.

And calls to fbcf.get().delayTime / fbcf.get().resonance fail because:
Property 'delayTime' does not exist on type 'ToneWithContextOptions'
Property 'resonance' does not exist on type 'ToneWithContextOptions'

With something like what this PR suggests it would just look like:
it("can be get and set through object", () => {
    const fbcf = new FeedbackCombFilter();
    fbcf.set<FeedbackCombFilterOptions>({
        delayTime: 0.2,
        resonance: 0.3,
    });
    const values = fbcf.get<FeedbackCombFilter, FeedbackCombFilterOptions>();
    expect(values.delayTime).to.be.closeTo(0.2, 0.001);
    expect(values.resonance).to.be.closeTo(0.3, 0.001);
    fbcf.dispose();
});

I mentioned this in a comment, but this isn't necessary if you pass in the Options description into the class generic when extending one of the base classes. That options generic is used to define the interface for get and set which should make this PR unnecessary.
Going to close. let me know if i'm missing something


Add Huber loss

Add Huber loss.
Thanks!

Hi @henry0312, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

I'm making objective function now.

@guolinke ready for review

@wxchan thank you for your review. updated.

@guolinke updated :)


Update RedirectException.php

HTTP_URL_REPLACE causes HTTP_URL_JOIN_QUERY to be completelly ignored and as such the $redirect_uri loses its original query parameters.

Codecov Report

Merging #43 into master will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff            @@
##             master     #43   +/-   ##
========================================
  Coverage      4.16%   4.16%
  Complexity      156     156
========================================
  Files            23      23
  Lines           649     649
========================================
  Hits             27      27
  Misses          622     622

Impacted Files
Coverage Δ
Complexity Δ

src/RedirectException.php
0% <0%> (ø)
3 <0> (ø)
:arrow_down:

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 28be1ea...3b9c0a9. Read the comment docs.

Codecov Report

Merging #43 into master will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff            @@
##             master     #43   +/-   ##
========================================
  Coverage      4.16%   4.16%
  Complexity      156     156
========================================
  Files            23      23
  Lines           649     649
========================================
  Hits             27      27
  Misses          622     622

Impacted Files
Coverage Δ
Complexity Δ

src/RedirectException.php
0% <0%> (ø)
3 <0> (ø)
:arrow_down:

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 28be1ea...3b9c0a9. Read the comment docs.


Remove allstudents team

The default allstudents team serves no real purpose in the current system. However, it adds an extra call to GitHub API every time the status of enrollment changes. This PR removes this team and the corresponding steps in the enrollment process.
Resolves #897.

Codecov Report

Merging #914 (4b8a94b) into master (c066545) will decrease coverage by 0.02%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #914      +/-   ##
==========================================
- Coverage   28.98%   28.96%   -0.03%
==========================================
  Files          92       92
  Lines        9412     9384      -28
==========================================
- Hits         2728     2718      -10
+ Misses       6399     6381      -18
  Partials      285      285

Flag
Coverage Δ

unittests
28.96% <0.00%> (-0.03%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

scm/github.go
0.00% <0.00%> (ø)

scm/helper.go
30.76% <ø> (ø)

scm/mock.go
78.60% <ø> (-0.51%)
:arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


how about higher quality hash algorithm?

Although hash algorithm is not the Bottleneck of bigcache, the smhasher(the project of hash function quality and speed tests) show that FVNa has poor quality while other hash func has higher.
Should we evaluate the default hash func of bigcache again? After the question and answer of hash, lots of new hash functions come out, such as xxhash, wyhash, menhash, which have higher quality.
Due to some hash functions use hardware instructions provided by the CPU to accelerate (AVX2, SSE), we can use different hash func in different Platform, such as:

FVNa default
xxhash in amd

By the way, why bigcache has no dependence? Should only no dependence PR can be approve?
Look forward to your reply!

By the way, why bigcache has no dependence? Should only no dependence PR can be approve?

Making golang the only dependency makes this lib easy to use and update. I think we should keep it that way.
We have Hasher interface introduced in https://github.com/allegro/bigcache/pull/5 to enable users using their own hash method. I think it will be great if you can create hasher implementation with benchmarks on different datasets and machines. We can link to it from readme so if anybody need it they are free to add dependency.


fix: skip null align

RM-9793

🧰 Changes
Skips the align attrs if they're all null.
I didn't realize markdown tables default to null, rather than a string:
| foo |
| --- |

🧬 QA & Testing

Broken on production.
Working in this PR app.

This PR was released!
🚀 Changes included in v6.75.0-beta.75


Add type definitions

Please add type definitions for this module.
Example for node: https://www.npmjs.com/package/@types/node

@fc89 Thanks for that. I'm not sure what this means, tho. Can you explain how this is useful? I'm not that much into TypeScript.

Without it, anyone using TypeScript can't call your module without workarounds. You could use https://github.com/DefinitelyTyped/DefinitelyTyped to publish one.

I can't do this right now, but contributions are welcome! Thanks!

I was mistaken. The definitions enable intellisense but are otherwise not needed.


Change implementation to api in build.gradle.kts so subdependencies are exposed

For now I changed all of them to use api, even though for my own use case I don't need all of them to be exposed, but I suspect sooner or later someone else will want to use classes in any of these modules anyway.
Thoughts?
Fixes #54

CC @lilgallon

Thanks for your contribution, I am not sure about exposing ocpp-version specific modules. I will talk with my team about that

@lilgallon I'm actually quite sure you need it.
For instance, in the example in the linked issue, you need the com.izivia.ocpp.core16.ChargePointOperations class for the api callbacks, so the ocpp-1-6-core needs to definitely be exposed (same for other verisons)


Allow to write to a file without permission after authentication

VS code on my Mac cannot save modified files suddenly. I tried restarting VS Code and MAC itself, but none brought saving back. It keeps popping this dialog when I cmd + S to save a file.
More information:
VS version: 0.10.6

@HuanhuanSunMSFT did something change with your permissions? can you save with another editor?

@bpasero I can save with Sublime 3. But I guess something permissions related did happen because when I save with Sublime 3, I need to input my password. However, I checked the file properties, it's not read only.

@HuanhuanSunMSFT this indicates that you are not the owner of the file and currently we do not support entering password during write.

@bpasero that's interesting. How come I'm not the owner of this file? Though it may not be related to VS Code, how could I get into this state and get out of it?

I have no clue but this does not sound like something to discuss in the VSCode issue tracker.

rather StackOverflow :+1:

@bpasero Hey, just picking up on this one too. Is the idea of password prompts for saving files you don't have permission for on the roadmap for vscode? This was super useful when I used Sublime Text and I was editing /etc/hosts files, etc.

This feature request will not be considered in the next 6-12 months roadmap and as such will be closed to keep the number of issues we have to maintain actionable. Thanks for understanding and happy coding!

@isidorn That's a shame but understand there are bigger fishes to fry. Is there anyway you can keep this tracked though, just closing the issue and pretending it doesn't exist just disregards those of us who are looking to have this fixed?

Sure, we can reopen and put to backlog to keep track

@isidorn Very much appreciated, thanks!

/duplicate of https://github.com/Microsoft/vscode/issues/1614


Allow disabling sub-config required-versions

From what I understand, ruff currently aborts as soon as it finds a required-version mismatch.
This is an issue when e.g. using / submodule-ing multiple repositories with incompatible required-version, as running ruff now requires --ignore or -c, and the sub-configurations will otherwise be ignored.
Possible improvements (compatible with one another):

allow disabling required-version on the CLI
allow a configuration higher up to ignore the sub-configurations' required-version
only skip (and warn about) directories where an incompatible required-version is specified, instead of aborting the run entirely

I believe your description of current behavior is correct. I'm a little torn on what to change here, if anything -- the current behavior is kind of working as intended, since if you have a submodule with a different required version that the current version, it should error? I'm hesitant to change it to a warning. I'm most open to the idea of allowing a CLI override for required-version.
I'm wondering, though -- could you not add your submodules to an extend-ignore field in the pyproject.toml of the parent project? Wouldn't that be easier than having to pass --no-required-version on the CLI every time?

In fact I would like to propose allowing required-version to work like in other tools where is working more like min-version required. At least it would fail only if it finds that the version used is older.
Current feasure is incompatible with pre-commit hook of ruff, as when doing auto-update of ruff, the value from the config will get in conflict.


Use size_t to index simplification grid

Small grid cell sizes can easily cause the number of cells to increase past the max value for int.

Thanks, Jeff, this will help a lot.

Thanks!


No provision to test the Elastic Search connection in the Jasper Server Datasource page

Will mark this as enhancement.

HI Wedjaa,
I hope you are doing good. I just want to ask you when can I expect this enhancement to be added
Thanks,
Ashirvad Gupta

Will include this on the next release.


M21C: add land constants as HISTORY export variables

as in #970 but for R21C
cc: @gmao-qliu @biljanaorescanin

Testing summary:
1 day M21C AGCM runs for AMIP, REPLAY and zero-increment REPLAY are all zero diff for data comparison but metadata comparison will fail due to the long name change. See below
Comparing NC4 catch_internal_checkpoint using nccmp...
Failure!
Checking for data differences
Checking for metadata differences
DIFFER : LENGTHS : ATTRIBUTE : long_name : VARIABLE : CDCR2 : 46 <> 42 : VALUES : "maximum_soil_water_content_above_wilting_point" : "max_soil_water_content_above_wilting_point" DIFFER : LENGTHS : ATTRIBUTE : units : VARIABLE : POROS : 6 <> 1 : VALUES : "m3 m-3" : "1" DIFFER : LENGTHS : ATTRIBUTE : long_name : VARIABLE : WPWET : 48 <> 24 : VALUES : "soil_wilting_point_in_degree_of_saturation_units" : "wetness_at_wilting_point"
Number of differences: 1
Differing collections: catch_internal_checkpoint


Execute onInit, onStep, event callbacks on a framework main thread instead on the GL thread

Just looking for feedback; also raises an issue.
All of the heavy-weight samples I tried work with this, so far there is no sample I am aware that does not. But the need to have a way to know when all the textures are ready is even more apparent with this change. You tend to get some textures loaded later than others in immersivepedia for example. This is its own issue outside of the scope of this change probably but nevertheless a serious one. Nola has already brought it up on few occasions too. All that async loading and framework is not that useful if we end up having textures pop into view one after another.
Maybe we need a special GVRScript stage where the app can return a list of textures it needs and then have the fw call the GVRScript when all these textures are ready for use. Whatever it is, there is a pattern so we can and should do more on the fw side.
A certain important app partially works with a small tweak. Have to examine it closer because it is a rather unique case.

Ok, that pop in effect with immersivepedia is really the app's fault. It is easy to deal with because the app is using the blocking loaders. An app that resorts to our Future APIs will have harder time knowing when it is ready for rendering.

I think it's a good idea to separate framework thread and GL thread. But haven't clearly seen what the actual role of the new thread is, except that it runs events. Maybe need to review other 3D engines and design the threads with more details?

This is an incremental improvement, that is all. To see the impact and learn something for the future. Regular GVRF apps seem to quite easily accept this change and take some advantage of it (mostly during application startup). On the other hand certain important app shows that we may have an API problem - if we truly want to hide the threading from end developers we most likely need to redesign the api.

I know it is incremental. However, for the minimalist implementation, a concern is the asynchronicity between events and rendering. I feel it might have changed the behavior for apps?

It does change, even more so if apps (rightly so) assume things about which thread is calling onInit, onStep. Our samples took the change quite well, but they are just samples. Simply changing the thread calling these methods is probably inadvisable. Especially since I saw the impact on that certain important app.
My suggestion is to deprecate GVRScript, preserve the semantics and the threading of its APIs. Come up with a new base class, with a better name, probably taking most of the APIs from GVRScript and maybe adding few others and have none of these called on the GL thread from the get go.
In the meantime this can be used as a case study or if the implications are considered acceptable, considered for merging (after whatever additional improvements requested are made of course).

Planning to close this after few days. It is still usable and can be experimented with but we will come up with an alternative to GVRScript that is not called on the GL thread from day one.
Some additional findings that came out, in no particular order:

recursivelySendSimpleEvent uses GVRSceneObject.rawGetChildren(); I think there is potential for concurrent modification of the collection while iterating
GVRTexture.getId() must be called on the GL thread; needs to be somehow addressed if we want to simplify the threading for end users
base_texture.h and GVRBitmapTexture: I think the java side takes care of some or all the things base_texture does in runPendingGL

Since Tom mentioned it, I made a change to add a GVRMain class in addition to GVRScript. The only difference at the moment is that GVRMain is called on the fw thread and GVRScript is called on the GL thread like in the past.

We need an event that GearVRF and the application can respond to that indicates the asset AND ALL OF ITS TEXTURES are loaded. If one or more textures fails to load after a period of time, we can issue the event with an error response indicating what did not load. When GearVRF receives this event it can bind the appropriate shaders for the new content. We should not add the asset to the scene until we get the event.

@liaxim, do you think this is ready for merging?  (assuming no further comments?)

I think it is ok. Someone else needs to test it with some samples and The App.

If i understand the way you've done this commit, the internal reasearch app can continue to use GVRScript.  Correct?

Yes, The App is unaffected.

Squashed the commits

needs manual rebase.  Mihail is out on vacation so I rebased it in my own branch and created a new pull request:  https://github.com/Samsung/GearVRf/pull/560


[Core] CAIP-10 regex fixed

Description
CAIP-10 Regex updated with https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-10.md#syntax

Resolves https://github.com/WalletConnect/WalletConnectSwiftV2/pull/761
How Has This Been Tested?

Due Dilligence

[ ] Breaking change
[ ] Requires a documentation update

Hello. I recreated my pull request as you asked #765 . Why did you create the same as #761 ?

@flypaper0 ok, let me download the project again and re-upload with test fixes ?

although I changed my mind 🙄, do as you wish, have a nice day, bye

Ok, I'll merge this. Normally we are doing branch from fresh develop, doing commits, and PR in develop. I think the reason of bad branch in your PR, that you initially created branch from main, and after changed destination branch to develop. Thanks for contribution 🙏


decorateIcons() function accessibility improvement when hyperlinked

When authors use SVG icons and then create links out of them, the resulting code is an a tag without any text, or an aria-label attribute.  A good usage example for this is the brand icon in the header.   This output results in a "Links do not have a discernible name" accessibility error and a deduction in the lighthouse score -  https://dequeuniversity.com/rules/axe/4.7/link-name.  To resolve this we can simply add a label attribute to the parent a element.  I'm proposing we modify this default functionality to add the icon name as the label, this way we aren't leaving it empty and thus improving our score.
OOTB code should not result in accessibility deductions.
OOTB code does not add an aria-label attribute when :svg-icons: are created in word and then hyperlinked.
To reproduce this scenario, open a document, add an SVG icon via :icon-name: and then link the icon.  Preview the page then run a lighthouse accessibility report.  You should see the deduction.

Opened an issue in the new aem-lib project - closing this issue.
https://github.com/adobe/aem-lib/issues/13


STORM-793 Made change to logviewer.clj in order to remove the invalid http 500 response

+1 the changes look fine to me, the CI failure looks unrelated.


Check _session_parameters is not None

Description
Connector's _session_parameters can be None so we should also check before using the field
Testing
Existing test + stored proc regression test
Please answer these questions before submitting your pull requests. Thanks!

What GitHub issue is this PR addressing? Make sure that there is an accompanying issue to your PR.
N/A

Fill out the following pre-review checklist:

[ ] I am adding a new automated test(s) to verify correctness of my new code
[ ] I am adding new logging messages
[ ] I am adding a new telemetry message
[ ] I am adding new credentials
[ ] I am adding a new dependency

Please describe how your code solves the related issue.
It's possible that the connector's _session_parameter is None, so we should do a check before using it.

Will be superceded by Adam's change


Update endorsed-distros.md

Adding SLE 15 to the endorsed distribution list

@linuxelf001 : Thanks for your contribution! The author, @szarkos, has been notified to review your proposed change.

#sign-off


build(docker): Add support for armv8

I'm not sure what exactly I need. I just know what is available wasn't enough.
$ uname -m
aarch64

This likely involves adding linux/arm/v8 to https://github.com/TwiN/gatus/blob/master/.github/workflows/publish-release.yml
I'm not really sure what arch I have, and if v8 and aarch64 are synonyms.
I can't easily test this, so I'm not going to assign this to myself atm.

Astetiks++ workaround:
  gatus:
    build: https://github.com/TwiN/gatus.git
    image: twinproduction/gatus:latest

Pretty sure the issue is that you're using latest.
If you want to use arm, you'll have to use a version tag (e.g. twinproduction/gatus:v3.5.0)

You are correct. Though, :v3 or similar would be a nice tag to have in parallel.


Fix filtering by = <numeric>

Summary of the changes / Why this improves CrateDB
Fixes:
cr> create table t (a numeric(3,2));
CREATE OK, 1 row affected (1.768 sec)
cr> insert into t values (1.11);
INSERT OK, 1 row affected (3.031 sec)
cr> select * from t where a = 11.1::numeric;
+------+
|    a |
+------+
| 1.11 |
+------+
SELECT 1 row in set (0.021 sec)

https://github.com/crate/crate/blob/a1f77cfb706fb3fb470a58e5d0dad58eb679ade6/docs/appendices/release-notes/5.9.1.rst?plain=1#L118-L120 is enough that we do not need an extra release entry.
Checklist

[x] Added an entry in the latest docs/appendices/release-notes/<x.y.0>.rst for user facing changes
[x] Updated documentation & sql_features table for user facing changes
[x] Touched code is covered by tests
[x] This does not contain breaking changes, or if it does:

It is released within a major release
It is recorded in the latest docs/appendices/release-notes/<x.y.0>.rst
It was marked as deprecated in an earlier release if possible
You've thought about the consequences and other components are adapted
(E.g. AdminUI)

Hi @mfussenegger could you have a look at this draft? Also please comment on how you think about the second commit that is to not trigger https://github.com/crate/crate/pull/16829#discussion_r1809606022.

Can you clarify what is happening in the original example?

cr> create table t (a numeric(3,2));
CREATE OK, 1 row affected (1.768 sec)
cr> insert into t values (1.11);
INSERT OK, 1 row affected (3.031 sec)
cr> select * from t where a = 11.1::numeric;
+------+
|    a |
+------+
| 1.11 |
+------+

What precision or types are the numbers when the comparison happens? Is this the case that we have taken the "least common" precision and scale and the number that actually gets compared is 1.1 on both sides?

What precision or types are the numbers when the comparison happens? Is this the case that we have taken the "least common" precision and scale and the number that actually gets compared is 1.1 on both sides?

Numeric(3,2) values are stored as unscaled hence the Lucene queries need to be unscaled. 11.1::numeric became a BigDecimal instance with precision = 3 and scale = 1, 111, when unscaled.
On master, = 11.1::numeric(3,2) worked fine because it became a BigDecimal instance with precision = 3 and scale = 2 as expected and 1110 when unscaled.
Thanks for pointing out, actually I left out those test cases. Please see https://github.com/crate/crate/pull/16829/files#diff-d441b1fcd81ed17b4340cc860a3095e70f3340cfc5128f78f492b6f45d4e0cabR145-R152 for details.

@jeeminso Keep in mind that the following case has been fixed:
cr> select * from t where a = 11.1;
SQLParseException[Cannot cast `11.1` of type `double precision` to type `numeric(3,2)`]

with: https://github.com/crate/crate/pull/16857

Closing, please see https://github.com/crate/crate/pull/16862 and #16866.


Release (2021-05-06)

:tada: This PR is included in version 0.14.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Pepsi

Description
Description of the project here
Code of Conduct

[X] I follow Contributing Guidelines of this project.

/assign


Blob Storage APIs sections sounds contradictory and confusing

This section: https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-known-issues#blob-storage-apis
Specifically this:
You cannot use both Blob APIs and Data Lake Storage APIs to write to the same instance of a file. If you write to a file by using Data Lake Storage Gen2 APIs, then that file's blocks won't be visible to calls to the Get Block List blob API. You can overwrite a file by using either Data Lake Storage Gen2 APIs or Blob APIs. This won't affect file properties.
Could be inferred multiple ways and confusing. Both bolded portions of text above contradict each other. Is the bold & italicized portion saying  you can use either api for to overwrite a file regardless if it was made originally with Blob or Data Lake? Or is saying that you can overwrite using either api as long as api matches the api used when initially created e.g: if written via blob api then overwrite can be done via blob api & vice-versa. If it is the latter then it should be a seperate bullet or omitted entirely. If the former it should be clarified better. One example:

You cannot use both API & Data Lake Storage APIs to write to the same instance of a file. If you write to a file by using Data Lake Storage Gen2 APIs, then that file's blocks won't be visible to calls to the Get Block List blob API. The only exception is when using you are overwriting. You can overwrite a file/blob using either API.

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

ID: 46d15a48-4780-edbb-4485-121f901cbac9
Version Independent ID: fc65764c-2d2a-4901-5c31-82b4566bf3bc
Content: Known issues with Azure Data Lake Storage Gen2
Content Source: articles/storage/blobs/data-lake-storage-known-issues.md
Service: storage
Sub-service: data-lake-storage-gen2
GitHub Login: @normesta
Microsoft Alias: normesta

@shraboin sorry for the delay, I wanted to do a few tests to be sure my answer is current.  The service has changed since I last tried.
In a gen2 account (with Heirarchical namespace), I created a container, and inside it I placed a pair of files in root, and a pair of files in a folder.  Each pair consisted of an item uploaded via Set-AzStorageBlobContent and an item uploaded via New-AzDataLakeGen2Item.
Then I did a rest call (using Postman) https://XXXXX.blob.core.windows.net/XXXX?res=container&comp=list
I was able to see all items and the folder.  Next I will test overwriting.

Next I pointed at an item created as a gen2 item in the previous step.  Except this time I use a call to https://xxxxx.blob.core.windows.net/xxxx/fol1/subGen2.txt.  When I do a GET the file is read, but when I do a PUT to overwrite it, I get 404 not found.
Next I do similar, but pointing at an item created as blob in the previous step, and calling the dfs.core.windows.net endpoint for it.  I am able to read with a GET.  PUT overwrites (makes into an empty file).  This is not to be confused with append operation.

Thank you for asking me to look into this, @shraboin .  Given the difference between my experience, and the document I highlighted, I will assign this to author for updating as appropriate.

@normesta Could you please review this document for accuracy with respect to current behavior?  The behaviors I have experienced do not match up with the documented behaviors.  See above comments for my tests.

@MartinJaffer-MSFT thanks for looking at this.

Sorry for taking so long @shraboin .  The service seems to have changed quite significantly since I last did a deep dive (maybe a couple months ago).

Thank you @shraboin. Yes, you're suggested text looks clearer. I've incorporated that into the content and it should appear live in the doc by tomorrow 10 AM. @MartinJaffer-MSFT  - tested overwrite with both ADLSG2 and Blob APIs against both types of accounts (ADLSG2 and flat namespace). Overwrite works across APIs. Therefore, the content is correct. It's just not phrased optimally. @shraboin's phrasing is much clearer.

#please-close


rewrite feature writers API, again

I've been working on this for months now, I don't want to make it rot so I'll just push it..
I'll explain in more details what the changes are tomorrow.

Here's a bit of changelog, sorry if it's quite long (still shorter than the patch itself :)
ufo2ft/__init__.py
Changed:

compile{OTF,TTF}:

removed {kern,mark}WriterCalss arguments (already deprecated for a while)
featureCompilerClass=None means auto-select the feature compiler class
based on the presence of MTI vs Adobe feature files in the UFO

Added:

compileFeatures: function to compile only the OTL tables from a UFO,
(either into existing TTFont object, or into an empty TTFont containing only the new compiled tables)

ufo2ft/featureCompiler.py
Changed:

split FeatureCompiler class into a BaseFeatureCompiler, an MTIFeatureCompiler
and a FeatureCompiler class (for FDK features only)
renamed setupFile_features and setupFile_tables methods to setupFeatures
and buildTables; kept old names with deprecation warning
FeatureCompiler now loads custom feature writers specified in the UFO lib
under special key "com.github.googlei18n.ufo2ft.featureWriters"; if that is
not present, it uses the default Kern and MarkFeatureWriters with predefined
settings; one can also override them by passing a list of featureWriters
as argument to FeatureCompiler; an empty list means no auto-features are
generated.

Added:

parseLayoutFeatures: function to parse UFO features.fea into a feaLib
AST object

ufo2ft/featureWriters

added functions to load custom feature writer specifications from the UFO lib
and also from a string (the latter for use in command-line applications like fontmake).
Writer classes are expected to have a tableTag (str) attribute and a
method write with same signature as the BaseFeatureWriter (see further).

ufo2ft/featureWriters/ast.py

Feature writers no longer deal with strings, but manipulate directly the feaLib Abstract Syntax Tree (AST) objects. This new module provides some utilities to extract data from AST objects or create new ones, which can be useful when writing a feature writer implementation.

ufo2ft/featureWriters/baseFeatureWriter.py

the main public method, write, now takes a feaLib.ast.FeatureFile object which is meant to be modified in-place, and no longer returns a string. The return value is a boolean indicating whether the feature file was actually changed or not.
The predefined "modes" are now only two: "skip" (default) and "append". The "prepend" mode was deemed not generally useful and hence was dropped from the BaseFeatureWriter class (but subclasses may implement one if they need).
Note, previously the "skip" mode would skip if ANY of the features defined by each writer class was already present in the features.fea. Now, it will skip only if ALL the features are already defined, and will generate only the ones that are missing.  Of course, one can also pass a different subset of features when initializing a feature writer instance, so that it will only build those instead of all the default features.
And Feature writer classes can have a different default mode than the base class
(in fact KernFeatureWriter's default mode is now "append", not "skip").
all writers now inherit a self.log attribute dynamically named with their respecive module's and class's names.
the set_context method was renamed to setContext as all the rest of the library uses camelCase (and this was a good occasion since we are breaking backward compatibility with the previous feature writer API anyway..).

ufo2ft/featureWriters/kernFeatureWriter.py
This module had to be completely rewritten from scratch to work with the new AST-based approach, and also in order to implement some new features. These include: a "dist" feature, which references the same LTR or RTL kern lookups that the kern feature uses, but is registered only for the "Indic" open type scripts -- i.e. when the feature file contains languagesystem statements referencing one of these scripts (derived from Harfbuzz source code) that use the "dist" feature.
Also, the generation of two LTR and RTL kern lookups has been improved: we now check not only the
presence of RTL characters in the kerning data but also their GSUB alternates (more info below).
The Arabic numerals, with their special bidi type, are now correctly encoded as left
to right, but they are still only added to the RTL kerning lookup (i.e. the lookup
registered for the scripts that are globally RTL, like Arabic).
ufo2ft/featureWriters/markFeatureWriter.py
The basic logic is the same. Most notable change is that the currently defined mark class definitions
from the feature file are taken into account when generating the new ones:
those with the same name and anchors are recycled, whereas when a name clash
occur (same accent glyph defined with different anchors for the same markClass)
the new mark classes will get a new unique name. More work is required to implement "abvm" and "blwm" (#179).
ufo2ft/postProcessor.py
The calculcation of the OS/2 usMaxContext was moved from the FeatureCompiler to the PostProcessor class, so that an OS/2 table is not required when the FeatureCompiler is building the OTL tables.
ufo2ft/util.py
Two related new functions added to 1) compile a headless GSUB table from a FeatureFile and a glyphOrder (list of glyph names); and 2) use the FontTools Subsetter to perform a "closure" over this GSUB table. This allows to find all the glyphs that are "reachable" via GSUB substitutions from an initial set of "cmapped" glyphs associated with some unicode codepoints. It is used in the KernFeatureWriter to group all the glyphs according to unicode properties like the script's horizontal direction, or the character's bidirection category, and split the lookups accordingly.
Tests
All the tests in our suite have been parametrized so that they also test an alternative UFO implementation that Adrien Tétar and I have been working in the last couple of months. Note that it's still experimental, and also we are not sure yet when or whether it will eventually be incorporated into fonttools,
or will stay separate. Check it out at https://github.com/fonttools/ufoLib2

I guess I'll approve myself :grimacing: and merge this now, although I'll wait a few more days before releasing to catch issues or let other catch up and modify things. fontmake itself needs some changes to use the new interface.

@anthrotype,
This is splendid.
I think that the next step might be moving this to a separate module and add more code to facilitate automatic feature creation. In a separate repo, we could discuss how this could be done functionally.
For example, I think there could be a function to create languagesystems based on the font's cmap coverage (utilizing the Unicode-to-OT script functions from ft).
There could also be GSUB synthesis functions that parse standardized glyph name suffixes and create a flurry of 1:1 substitutions and the respective features, and also n:1 ligature-type creators based on glyphname parsing, some code to build some "known" contextual features, a "ccmp" decomposition builder based on Unicode decomposition, and many others.
There had been attempts to create such projects but currently, there is none that would work comprehensively, be extensible by the users and could work hand-in-hand with existing feature definitions in a non-destructive manner (so the user could specify a "minimal" number of hand-written features in FEA but then all those that can be created algorithmically could be added).
I'm very interested in doing something like this anyway, but I'd prefer if it were reasonably independent of ufo2ft.


docs(README): updated verbiage to sound more natural

Checklist:

[X] I have read freeCodeCamp's contribution guidelines.
[X] My pull request has a descriptive title (not a vague title like Update index.md)
[X] My pull request targets the master branch of freeCodeCamp.
[X] All the files I changed are in the same world language, for example: only English changes, or only Chinese changes, etc.

Closes #XXXXX

I fixed a lot of the grammatical errors for better clarification! In some cases, there were missing commas, awkward wording, or in one case a preposition. Thank you for reviewing my commits!!!!

Thank you for reviewing my commits! I updated the pull request accordingly! Thank you.

No problem, @MarceloDamian. Thanks for taking the time to go through the docs.


Styles Not Applied with Stylex and Webpack Plugin in Next.js (runtimeInjection: false)

Title: Styles Not Applied with Stylex and Webpack Plugin in Next.js (runtimeInjection: false)
Environment:

Operating System: Ubuntu 22.04 (WSL)
Next.js Version: 14.0.2
Stylex Version: 0.3.0
Webpack Version: (Included with Next.js)

Description:
I am facing an issue where CSS styles are not being applied in the browser when using Next.js with the Stylex Webpack plugin. This issue occurs when runtimeInjection is set to false. In this setup, the class names appear on the elements and the styles.css file is created in the .next cache. However, the styles themselves are not applied in the browser. Notably, this setup worked correctly in Stylex version 0.2.0beta27 and the corresponding Webpack plugin, without any changes in the configuration.
My next.config.js is as follows:
const StylexPlugin = require("@stylexjs/webpack-plugin");

/** @type {import('next').NextConfig} */
const nextConfig = {
    reactStrictMode: true,
    images: {
        remotePatterns: [
            {
                protocol: "https",
                hostname: "**",
            },
        ],
    },
    webpack: (
        config,
        { buildId, dev, isServer, defaultLoaders, nextRuntime, webpack },
    ) => {
        config.module.rules.push({
            test: /\.svg$/,
            use: ["@svgr/webpack"],
        });

        config.plugins.push(
            // Ensure that the stylex plugin is used before Babel
            new StylexPlugin({
                filename: "styles.css",
                // get webpack mode and set value for dev
                dev: dev,
                // Use statically generated CSS files and not runtime injected CSS.
                // Even in development.
                runtimeInjection: false,
                // optional. default: 'x'
                classNamePrefix: "x",
                // Required for CSS variable support
                unstable_moduleResolution: {
                    // type: 'commonJS' | 'haste'
                    // default: 'commonJS'
                    type: "commonJS",
                    // The absolute path to the root directory of your project
                    rootDir: __dirname,
                },
            }),
        );

        return config;
    },
};

module.exports = nextConfig;

Steps to Reproduce:

Set up a Next.js project with Stylex and the Webpack plugin.
Configure next.config.js with runtimeInjection set to false.
Run the project and observe that the CSS classes are present on elements but styles are not applied.

Expected Result:
The CSS styles should be applied to the elements in the browser, as they were in Stylex version 0.2.0beta27.
Actual Result:
The CSS classes are present on elements, and the styles.css file is created in the .next cache, but the styles are not applied in the browser.
Additional Information:

The issue only occurs when runtimeInjection is set to false. When set to true, the styles are applied as expected.
There are no console errors or warnings indicating a problem with the Stylex implementation or the Webpack configuration.
The issue started occurring after updating Stylex from version 0.2.0beta27 to 0.3.0.

I am seeking assistance to understand why this issue is occurring with the newer version of Stylex and how it can be resolved. Any insights or suggestions would be highly appreciated.
Thank you for your help,
Samplead Team

Can you reproduce the issue in the nextjs example app? https://github.com/facebook/stylex/tree/main/apps/nextjs-example


Always include anonymous and authenticated roles when logged in

When logging in, always add anonymous and authenticated as roles in the cookie. This mirrors how it works in Azure.

If I get the documentation right, the anonymous role should apply to all unauthenticated users (even without login) and as soon as logged in, the roles should include authenticated but not anonymous anymore, correct @anthonychu ?

I think that's actually incorrect. If you hit the /.auth/me endpoint or read functions the client principal header when not logged in, they are null/empty. I'm unsure what happens if you use the anonymous role in routes authorization rules. @mkarmark can help confirm behavior.

When determining if a user is authorized to access a route, the behavior is what @itpropro describes. @anthonychu, is the concern that /.auth/me shows null/empty without logging in? That's because there isn't a user principal to display.

@anthonychu @mkarmark I understand that when a user is logged in, we should append the authenticated role to the user principal's userRoles array, like so:
{
  "identityProvider": "facebook",
  "userId": "d75b260a64504067bfc5b2905e3b8182",
  "userDetails"<EMAIL_ADDRESS>  "userRoles": ["authenticated" ]
}

However, where should we propagate the anonymous role if the user isn't logged in? Since the user principal is null.

I also asked myself, how this would work with anonymous @manekinekko. I was talking about this part from the documentation:
Every user who accesses a static web app belongs to one or more roles. There are two built-in roles that users can belong to:

anonymous: All users automatically belong to the anonymous role.
authenticated: All users who are logged in belong to the authenticated role.

This implicitly states that if a user is not logged in, he still holds the anonymous role. Is this just unclear documentation or is the proxy actually adding a clientPrincipal object with the anonymous role that is not exposed to the /.auth/me endpoint @mkarmark ?

No we are not adding a client principal header when a user is not logged in cause there is no client principal to add to the header.

Thank you @mkarmark for confirming that.

Adding @craigshoemaker who wrote that documentation. Craig could you provide more details about the anonymous role from this part of the docs:
anonymous: All users automatically belong to the anonymous role.
authenticated: All users who are logged in belong to the authenticated role.

@manekinekko Just tried this and it looks like logged in users are in authenticated role but not anonymous. Can we add anonymous too?

Done.


Fix(web-twig): Fix condition to render aria-labelledby attribute in the Modal component

Description
Currently the aria-labelledby attribute is rendered based on id not titleId. The render condition had to be changed.
Additional context
There is a slight difference between React and Twig implementation. Twig implementation allowed the developer to set the titleId while in the React implementation the suffix __title is appended to the id.

Thanks for this, but as you already mentioned, the React implementation is different. We discussed it with @adamkudrna and decided we will stick with the React way. This means titleId in twig will be deprecated and we are going to use the modal id.
Anyway, this PR can be merged first.

This means titleId in twig will be deprecated and we are going to use the modal id.

https://jira.lmc.cz/browse/DS-884


add llamd and bloom in ipex inference tests

Add llama and bloom model in ipex inference tests.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Azure Cli plugin

https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest

Added over 2000 tasks for Azure CLI
https://github.com/flubu-core/FlubuCore.Azure


Add docstrings for time package and Timer class

There was no docstring for the time package, so I added one with a
brief description of what the classes in the package do.
There was no example code in the Timer docstring, so I fleshed out the
description of the class and added an example.

Thanks!


Consider contry in tagging

To separate the nvdb tagging from the tags used in Norway, add a country identifier such as se:nvdb or something look at the comments to https://www.openstreetmap.org/changeset/98318559

I do not think these id's should be stored in OSM at all. If the highway is altered, concatenated etc then the id will not be correct anymore (the highway in OSM and in NVDB will not be the same). Also, if the id in NVDB is updated, the id will be unusable. This has happened twice in NVDB in Norway during the last two years for all highways. So it is better to exclude RLID from the output of nvdb2osm.

I think you talk about different ID:s, RLID I have indeed already removed, but I tag with "source=NVDB" on the generic source tag, often using tags like "source=Bing" etc.
Maybe "NVDB" is a a bit too unspecific, but I did some searches in overpass and it doesn't seem to be used in Norway, while NVDB as tag has already been used as source tag in Sweden long before this script (NVDB data has been available for quite a few years already), so I reused the NVDB tag.
The source tag doesn't tend to survive for that long and I don't think it's that important. In actuality now when I do updates using this script, which I do fully manually looking at every road, I also look at photos and previous data etc and change where needed/suitable so even if NVDB is stated as source it's not purely NVDB, but I find it just too cumbersome to individually set the source to multiple sources. On the patch set I set multiple sources though (which generally is "NVDB; Lantmäteriet Topographic Map; Esri World Imagery" which are the main layers I use)

And as we all know, source tags go on the changeset, not on the ways.
https://wiki.openstreetmap.org/wiki/Key:source

Hmm... maybe one should remove the source tag completely then, I've tagged the ways as that's how it usually looks, but I guess that's because where I update there's usually lots of old data...
How do you search for changeset tags so you can see where in the map certain data sources have been used? The advantage of having a source tag is that it's searchable in overpass, but maybe changeset tags can be searched as well?

Here is one tool: http://resultmaps.neis-one.org/osm-changesets?comment=nvdb

Thanks! I've surfed a bit and it does seem like there's no tool for checking stuff older than 30 days. I find the source=NVDB tag to be quite useful in this context to be able to track things for the near to mid-term (ie a few years into the future which is what one can expect reaching a good baseline would take), but if it's against what people do these days when merging I'll remove it, and run without source.
There are other ways one can figure out if NVDB merge has been made, by looking at richness of various tags and quality of road alignment, so it's not 100% necessary to have NVDB source tag for the purpose of identification, but it is more convenient.
What do you recommend?
(In my workflow practice it will mean that I will use source=NVDB while working on the merge, as much of the previous geometry is "historical" and has source tag set, (gpx, landsat etc), it's easier to track conflicts than remember to remove an old tag that becomes misleading after update with fresh geometry, and then when I'm ready to upload a changeset I remove any source=NVDB tags.)

I think the source tag is not particularly well suited for highways, because these ways will often be modified in OSM by somebody else at a later stage, and then the source tag is not really correct anymore. Also, I think the guiding in the wiki is quite clear.
My experience is that when large import files include extra/optional tags, then many users who import will also upload them. Therefore I think it is better to exclude the source tag from the generated import files. If anyone would like to have the tag because of their workflow, they can easily add it to the import file as a first step in the import process.
The Changeset Manger window in JOSM can download a list of changesets in the current view, including the comment text to those changesets.

Thanks, I'll remove the source tag.

I've pushed a patch and I tested it locally, so I think we can close this issue now.
The conclusion is that the layer should be free from any source tagging as that is how OSM is doing it these days.


Authorization Flow Doesn't Work

When attempting to setup a new project with Spotify authentication, I'm running into the following issue upon completing the Spotify authorization.
This has been reproduced with the code example from this repo.
Webpage:

Console:

Network Tab:

Steps to reproduce:

Clone this repository
yarn to install dependencies
cd to web-api-examples/authentication/authorization_code
populate client_id, client_secret, redirect_uri, with your project specific values
node app.js
visit web page (localhost:8888)
click "login with Spotify"
authorize using your account
-- land on error page --

It strikes me as very curious why the Spotify code is redirecting to https://accounts.spotify.com/{2}
I'm running on a 2022 M2 Macbook Air, macOS 13.0, with node v20.1.0, and yarn v1.22.19

Figured out the problem! My redirect URI didn't have a protocol on it (both in my code & in the Spotify dev console).
localhost:3000/account is invalid.
Changing it to http://localhost:3000/account resolves the issue.
If at all possible, it would be helpful to receive an error code explaining the problem instead of an html page describing a generic error, or validation in the Spotify developer console.
Hopefully this is helpful for someone else in the future searching for this issue :)


Slow Consumer policy

Can you explain the behaviour of a " Slow Consumer"? Why the connection is closed?
https://github.com/apcera/gnatsd/blob/7d820b762fbcc58264b7d688bd869e5949e8d175/server/client.go#L625
I am working in a stress tool and when i send 25k message to a client then the client becomes a slow consumer (not slow just busy) and the connection is closed.
https://github.com/mcuadros/natstress
Regards

is there a way to adjust the timeout that makes throw out the "slow consumer" err?

Currently no, but am looking into it. The head for master does have the ability to adjust how much we buffer before we enter the slow consumer state, but not the write timeout parameter.


Move getCheckoutContent to redux

As per our offline discussion, this PR does not add much value, so we decided to close it.


An inquiry regarding the execution requirements of the vector extension.

Hi,
In M-mode, the execution of the vector extension requires setting the vs bit in mstatus. Does vsstatus also need to be set?
Thank you!

See section 3.3 of the RVV spec.


Question: the use the command TSO wait metrics?

I find the cmd metrics wait contains the time of TSO execution time:
func (req *tsoRequest) Wait() (physical int64, logical int64, err error) {
	// If tso command duration is observed very high, the reason could be it
	// takes too long for Wait() be called.
	start := time.Now()
	cmdDurationTSOAsyncWait.Observe(start.Sub(req.start).Seconds())
	select {
	case err = <-req.done:
		err = errors.WithStack(err)
		defer tsoReqPool.Put(req)
		if err != nil {
			cmdFailDurationTSO.Observe(time.Since(req.start).Seconds())
			return 0, 0, err
		}
		physical, logical = req.physical, req.logical
		now := time.Now()
		cmdDurationWait.Observe(now.Sub(start).Seconds())
		cmdDurationTSO.Observe(now.Sub(req.start).Seconds())
		return
	case <-req.ctx.Done():
		return 0, 0, errors.WithStack(req.ctx.Err())
	}
}

As you can see, the Wait here includes getting TSO, is it proper?

em, what do you mean by "includes getting TSO"? The meaning of the 3 metrics here:

cmdDurationTSOAsyncWait: from calling GetTS to calling Wait
cmdDurationWait: from calling Wait to Wait returns.
cmdDurationTSO: from calling GetTS to Wait returns.

cmdDurationWait: from calling Wait to Wait returns.

You can see the Wait also contains the time of getting TSO.


[python3] Build error on x64-osx

Package<EMAIL_ADDRESS>Environment- Host: x64-osx- Compiler: AppleClang <IP_ADDRESS>00309-    vcpkg-tool version: 2024-07-10-d2dfc73769081bdd9b782d08d27794780b7a99b9    vcpkg-scripts version: 821100d96 2024-07-20 (12 hours ago)To Reproducevcpkg install python3:x64-osx --clean-after-buildFailure logsCMake Warning at ports/python3/portfile.cmake:7 (message):  python3 currently requires the following programs from the system package  manager:      autoconf automake autoconf-archive  On Debian and Ubuntu derivatives:      sudo apt-get install autoconf automake autoconf-archive  On recent Red Hat and Fedora derivatives:      sudo dnf install autoconf automake autoconf-archive  On Arch Linux and derivatives:      sudo pacman -S autoconf automake autoconf-archive  On Alpine:      apk add autoconf automake autoconf-archive  On macOS:      brew install autoconf automake autoconf-archiveCall Stack (most recent call first):  scripts/ports.cmake:192 (include)-- Using cached python-cpython-v3.11.8.tar.gz.-- Extracting source ~/vcpkg/downloads/python-cpython-v3.11.8.tar.gz-- Applying patch 0001-only-build-required-projects.patch-- Applying patch 0003-use-vcpkg-zlib.patch-- Applying patch 0004-devendor-external-dependencies.patch-- Applying patch 0005-dont-copy-vcruntime.patch-- Applying patch 0008-python.pc.patch-- Applying patch 0010-dont-skip-rpath.patch-- Applying patch 0012-force-disable-modules.patch-- Applying patch 0014-fix-get-python-inc-output.patch-- Applying patch 0015-dont-use-WINDOWS-def.patch-- Applying patch 0016-undup-ffi-symbols.patch-- Applying patch 0018-fix-sysconfig-include.patch-- Applying patch 0002-static-library.patch-- Using source at ~/vcpkg/buildtrees/python3/src/v3.11.8-31d17ab840.clean-- Getting CMake variables for x64-osx-dbg-- Getting CMake variables for x64-osx-rel-- Generating configure for x64-osxCMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message):    Command failed: /opt/local/bin/autoreconf -vfi    Working Directory: ~/vcpkg/buildtrees/python3/src/v3.11.8-31d17ab840.clean/    Error code: 1    See logs for more information:      ~/vcpkg/buildtrees/python3/autoconf-x64-osx-err.logCall Stack (most recent call first):  scripts/cmake/vcpkg_configure_make.cmake:731 (vcpkg_execute_required_process)  ports/python3/portfile.cmake:274 (vcpkg_configure_make)  scripts/ports.cmake:192 (include)~/vcpkg/buildtrees/python3/autoconf-x64-osx-err.logautoreconf: export WARNINGS=autoreconf: Entering directory '.'autoreconf: configure.ac: not using Gettextautoreconf: running: /opt/local/bin/aclocal --force autoreconf: configure.ac: tracingautoreconf: configure.ac: not using Libtoolautoreconf: configure.ac: not using Intltoolautoreconf: configure.ac: not using Gtkdocautoreconf: running: /opt/local/bin/autoconf --forceconfigure.ac:18: error: possibly undefined macro: AC_MSG_ERROR      If this token and others are legitimate, please use m4_pattern_allow.      See the Autoconf documentation.autoreconf: error: /opt/local/bin/autoconf failed with exit status: 1

A few new lines are missing here...

Please run brew install autoconf automake autoconf-archive.
error: possibly undefined macro: AC_MSG_ERROR

@FrankXie05
I have autoconf automake autoconf-archive installed but got same error

@FrankXie05
path_to/vcpkg/buildtrees/python3/autoconf-x64-osx-err.log
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: /opt/local/bin/aclocal --force
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: /opt/local/bin/autoconf --force
configure.ac:18: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: error: /opt/local/bin/autoconf failed with exit status: 1

Got the same issue here...

got same error

got same error

Please try brew install autoconf automake autoconf-archive

I already did that but still have same error


Resolves #11 .gitignore, venv, and requirements.txt to facilitate ease of development and deployment

This pull request is written to resolve #11
.gitignore is added to ignore creation of env and pycache folders and *.db files. Apparently adding  dashboard-config.cfg and config.ini doesn't seem to work and will still show changes in the local environment for me. A fix is to use git update-index --assume-unchanged dashboard-config.cfg config.ini, as recommended in this StackOverflow answer.
requirements.txt is added to list all the dependencies of the project using pip freeze > requirements.txt.
README's Deployment section is modified to add details on creating a virtual environment and installing package requirements. Also, I placed the commands to be ran in a command block for easier display, and I added underscores in the variables in <sharp brackets> to signal not using spaces. (I'm not sure about the effects of using spaces as table names, although from my experience it is bad practice.)

This is great, thank you!


Output of the PostProcessBlock added to the input sharp image.

Hi!
First of all congratulations for the work.
In the code, the output of the postprocessblock is added to the input  sharp image in order to generate the blur image.
In the paper i do not find any place that says explicitly that the output is a residual to be added to the residual in order to create the blur image. is it a bug? should be added? Or F computes directly the blur image?
Thanks!

Thank you for your interest!
It's not a bug, the output of the PostprocessBlock is added to the sharp image to generate the corresponding blurry image. We did not include this in the paper, sorry for making you confused.


cannot open ‘file_widget’ for reading: No such file or directory

After I upload the file with your widget, where does it get saved on my machine? If I am running Jupyter notebook on a sever and give the user a URL to the running Jupyter Notebook so that he can upload a file, how can I use that file for the rest of my code? I was trying to access the file using a simple command but it was unsuccessful:
%%bash
date
head -5 file_widget

I get:
Wed Sep 14 15:10:07 CDT 2016

head: cannot open ‘file_widget’ for reading: No such file or directory

Here's the code:
import base64
from __future__ import print_function # py 2.7 compat.
import ipywidgets as widgets # Widget definitions.
from traitlets import Unicode # Traitlet needed to add synced attributes to the widget.
class FileWidget(widgets.DOMWidget):
    _view_name = Unicode('FilePickerView').tag(sync=True)
    _view_module = Unicode('filepicker').tag(sync=True)

    value = Unicode().tag(sync=True)
    filename = Unicode().tag(sync=True)

    def __init__(self, **kwargs):
        """Constructor"""
        widgets.DOMWidget.__init__(self, **kwargs) # Call the base.

        # Allow the user to register error callbacks with the following signatures:
        #    callback()
        #    callback(sender)
        self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1])

        # Listen for custom msgs
        self.on_msg(self._handle_custom_msg)

    def _handle_custom_msg(self, content):
        """Handle a msg from the front-end.

        Parameters
        ----------
        content: dict
            Content of the msg."""
        if 'event' in content and content['event'] == 'error':
            self.errors()
            self.errors(self)

%%javascript

requirejs.undef('filepicker');

define('filepicker', ["jupyter-js-widgets"], function(widgets) {

    var FilePickerView = widgets.DOMWidgetView.extend({

        render: function() {
            // Render the view.
            this.setElement($('<input />')
                .attr('type', 'file'));
        },
        import base64
from __future__ import print_function # py 2.7 compat.
import ipywidgets as widgets # Widget definitions.
from traitlets import Unicode # Traitlet needed to add synced attributes to the widget.
class FileWidget(widgets.DOMWidget):
    _view_name = Unicode('FilePickerView').tag(sync=True)
    _view_module = Unicode('filepicker').tag(sync=True)

    value = Unicode().tag(sync=True)
    filename = Unicode().tag(sync=True)

    def __init__(self, **kwargs):
        """Constructor"""
        widgets.DOMWidget.__init__(self, **kwargs) # Call the base.

        # Allow the user to register error callbacks with the following signatures:
        #    callback()
        #    callback(sender)
        self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1])

        # Listen for custom msgs
        self.on_msg(self._handle_custom_msg)

    def _handle_custom_msg(self, content):
        """Handle a msg from the front-end.

        Parameters
        ----------
        content: dict
            Content of the msg."""
        if 'event' in content and content['event'] == 'error':
            self.errors()
            self.errors(self)

%%javascript

requirejs.undef('filepicker');

define('filepicker', ["jupyter-js-widgets"], function(widgets) {

    var FilePickerView = widgets.DOMWidgetView.extend({

        render: function() {
            // Render the view.
            this.setElement($('<input />')
                .attr('type', 'file'));
        },

        events: {
            // List of events and their handlers.
            'change': 'handle_file_change',
        },

        handle_file_change: function(evt) {
            // Handle when the user has changed the file.

            // Retrieve the first (and only!) File from the FileList object
            var file = evt.target.files[0];
            if (file) {

                // Read the file's textual content and set value to those contents.
                var that = this;
                var file_reader = new FileReader();
                file_reader.onload = function(e) {
                    that.model.set('value', e.target.result);
                    that.touch();
                }
                file_reader.readAsText(file);
            } else {

                // The file couldn't be opened.  Send an error msg to the
                // back-end.
                this.send({ 'event': 'error' });
            }

            // Set the filename of the file.
            this.model.set('filename', file.name);
            this.touch();
        },
    });

    return {
        FilePickerView: FilePickerView
    };
});

file_widget = FileWidget()

# Register an event to echo the filename when it has been changed.
def file_loading(change):
    print("Loading %s" % file_widget.filename)
file_widget.observe(file_loading, names='filename')

# Register an event to echo the filename and contents when a file
# has been uploaded.
def file_loaded(change):
    print("Loaded, file contents: %s" % file_widget.value)
file_widget.observe(file_loaded, names='value')

# Register an event to print an error message when a file could not
# be opened.  Since the error messages are not handled through
# traitlets but instead handled through custom msgs, the registration
# of the handler is different than the two examples above.  Instead
# the API provided by the CallbackDispatcher must be used.
def file_failed():
    print("Could not load file contents of import base64
from __future__ import print_function # py 2.7 compat.
import ipywidgets as widgets # Widget definitions.
from traitlets import Unicode # Traitlet needed to add synced attributes to the widget.
class FileWidget(widgets.DOMWidget):
    _view_name = Unicode('FilePickerView').tag(sync=True)
    _view_module = Unicode('filepicker').tag(sync=True)

    value = Unicode().tag(sync=True)
    filename = Unicode().tag(sync=True)

    def __init__(self, **kwargs):
        """Constructor"""
        widgets.DOMWidget.__init__(self, **kwargs) # Call the base.

        # Allow the user to register error callbacks with the following signatures:
        #    callback()
        #    callback(sender)
        self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1])

        # Listen for custom msgs
        self.on_msg(self._handle_custom_msg)

    def _handle_custom_msg(self, content):
        """Handle a msg from the front-end.

        Parameters
        ----------
        content: dict
            Content of the msg."""
        if 'event' in content and content['event'] == 'error':
            self.errors()
            self.errors(self)

%%javascript

requirejs.undef('filepicker');

define('filepicker', ["jupyter-js-widgets"], function(widgets) {

    var FilePickerView = widgets.DOMWidgetView.extend({

        render: function() {
            // Render the view.
            this.setElement($('<input />')
                .attr('type', 'file'));
        },

        events: {
            // List of events and their handlers.
            'change': 'handle_file_change',
        },

        handle_file_change: function(evt) {
            // Handle when the user has changed the file.

            // Retrieve the first (and only!) File from the FileList object
            var file = evt.target.files[0];
            if (file) {

                // Read the file's textual content and set value to those contents.
                var that = this;
                var file_reader = new FileReader();
                file_reader.onload = function(e) {
                    that.model.set('value', e.target.result);
                    that.touch();
                }import base64
from __future__ import print_function # py 2.7 compat.
import ipywidgets as widgets # Widget definitions.
from traitlets import Unicode # Traitlet needed to add synced attributes to the widget.
class FileWidget(widgets.DOMWidget):
    _view_name = Unicode('FilePickerView').tag(sync=True)
    _view_module = Unicode('filepicker').tag(sync=True)

    value = Unicode().tag(sync=True)
    filename = Unicode().tag(sync=True)

    def __init__(self, **kwargs):
        """Constructor"""
        widgets.DOMWidget.__init__(self, **kwargs) # Call the base.

        # Allow the user to register error callbacks with the following signatures:
        #    callback()
        #    callback(sender)
        self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1])

        # Listen for custom msgs
        self.on_msg(self._handle_custom_msg)

    def _handle_custom_msg(self, content):
        """Handle a msg from the front-end.

        Parameters
        ----------
        content: dict
            Content of the msg."""
        if 'event' in content and content['event'] == 'error':
            self.errors()
            self.errors(self)

%%javascript

requirejs.undef('filepicker');

define('filepicker', ["jupyter-js-widgets"], function(widgets) {

    var FilePickerView = widgets.DOMWidgetView.extend({

        render: function() {
            // Render the view.
            this.setElement($('<input />')
                .attr('type', 'file'));
        },

        events: {
            // List of events and their handlers.
            'change': 'handle_file_change',
        },

        handle_file_change: function(evt) {
            // Handle when the user has changed the file.

            // Retrieve the first (and only!) File from the FileList object
            var file = evt.target.files[0];
            if (file) {

                // Read the file's textual content and set value to those contents.
                var that = this;
                var file_reader = new FileReader();
                file_reader.onload = function(e) {
                    that.model.set('value', e.target.result);
                    that.touch();
                }
                file_reader.readAsText(file);
            } else {

                // The file couldn't be opened.  Send an error msg to the
                // back-end.
                this.send({ 'event': 'error' });
            }

            // Set the filename of the file.
            this.model.set('filename', file.name);
            this.touch();
        },
    });

    return {
        FilePickerView: FilePickerView
    };
});

file_widget = FileWidget()

# Register an event to echo the filename when it has been changed.
def file_loading(change):
    print("Loading %s" % file_widget.filename)
file_widget.observe(file_loading, names='filename')

# Register an event to echo the filename and contents when a file
# has been uploaded.
def file_loaded(change):
    print("Loaded, file contents: %s" % file_widget.value)
file_widget.observe(file_loaded, names='value')

# Register an event to print an error message when a file could not
# be opened.  Since the error messages are not handled through
# traitlets but instead handled through custom msgs, the registration
# of the handler is different than the two examples above.  Instead
# the API provided by the CallbackDispatcher must be used.
def file_failed():import base64
from __future__ import print_function # py 2.7 compat.
import ipywidgets as widgets # Widget definitions.
from traitlets import Unicode # Traitlet needed to add synced attributes to the widget.
class FileWidget(widgets.DOMWidget):
    _view_name = Unicode('FilePickerView').tag(sync=True)
    _view_module = Unicode('filepicker').tag(sync=True)

    value = Unicode().tag(sync=True)
    filename = Unicode().tag(sync=True)

    def __init__(self, **kwargs):
        """Constructor"""
        widgets.DOMWidget.__init__(self, **kwargs) # Call the base.

        # Allow the user to register error callbacks with the following signatures:
        #    callback()
        #    callback(sender)
        self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1])

        # Listen for custom msgs
        self.on_msg(self._handle_custom_msg)

    def _handle_custom_msg(self, content):
        """Handle a msg from the front-end.

        Parameters
        ----------
        content: dict
            Content of the msg."""
        if 'event' in content and content['event'] == 'error':
            self.errors()
            self.errors(self)

%%javascript

requirejs.undef('filepicker');

define('filepicker', ["jupyter-js-widgets"], function(widgets) {

    var FilePickerView = widgets.DOMWidgetView.extend({

        render: function() {
            // Render the view.
            this.setElement($('<input />')
                .attr('type', 'file'));
        },

        events: {
            // List of events and their handlers.
            'change': 'handle_file_change',
        },

        handle_file_change: function(evt) {
            // Handle when the user has changed the file.

            // Retrieve the first (and only!) File from the FileList object
            var file = evt.target.files[0];
            if (file) {

                // Read the file's textual content and set value to those contents.
                var that = this;
                var file_reader = new FileReader();
                file_reader.onload = function(e) {
                    that.model.set('value', e.target.result);
                    that.touch();
                }
                file_reader.readAsText(file);
            } else {

                // The file couldn't be opened.  Send an error msg to the
                // back-end.
                this.send({ 'event': 'error' });
            }

            // Set the filename of the file.
            this.model.set('filename', file.name);
            this.touch();
        },
    });

    return {
        FilePickerView: FilePickerView
    };
});

file_widget = FileWidget()

# Register an event to echo the filename when it has been changed.
def file_loading(change):
    print("Loading %s" % file_widget.filename)
file_widget.observe(file_loading, names='filename')

# Register an event to echo the filename and contents when a file
# has been uploaded.
def file_loaded(change):
    print("Loaded, file contents: %s" % file_widget.value)
file_widget.observe(file_loaded, names='value')

# Register an event to print an error message when a file could not
# be opened.  Since the error messages are not handled through
# traitlets but instead handled through custom msgs, the registration
# of the handler is different than the two examples above.  Instead
# the API provided by the CallbackDispatcher must be used.
def file_failed():
    print("Could not load file contents of %s" % file_widget.filename)
file_widget.errors.register_callback(file_failed)

file_widget

    print("Could not load file contents of %s" % file_widget.filename)
file_widget.errors.register_callback(file_failed)

file_widget

                file_reader.readAsText(file);
            } else {

                // The file couldn't be opened.  Send an error msg to the
                // back-end.
                this.send({ 'event': 'error' });
            }

            // Set the filename of the file.
            this.model.set('filename', file.name);
            this.touch();
        },
    });

    return {
        FilePickerView: FilePickerView
    };
});

file_widget = FileWidget()

# Register an event to echo the filename when it has been changed.
def file_loading(change):
    print("Loading %s" % file_widget.filename)
file_widget.observe(file_loading, names='filename')

# Register an event to echo the filename and contents when a file
# has been uploaded.
def file_loaded(change):
    print("Loaded, file contents: %s" % file_widget.value)
file_widget.observe(file_loaded, names='value')

# Register an event to print an error message when a file could not
# be opened.  Since the error messages are not handled through
# traitlets but instead handled through custom msgs, the registration
# of the handler is different than the two examples above.  Instead
# the API provided by the CallbackDispatcher must be used.
def file_failed():
    print("Could not load file contents of %s" % file_widget.filename)
file_widget.errors.register_callback(file_failed)

file_widget

%s" % file_widget.filename)
file_widget.errors.register_callback(file_failed)

file_widget

        events: {
            // List of events and their handlers.
            'change': 'handle_file_change',
        },

        handle_file_change: function(evt) {
            // Handle when the user has changed the file.

            // Retrieve the first (and only!) File from the FileList object
            var file = evt.target.files[0];
            if (file) {

                // Read the file's textual content and set value to those contents.
                var that = this;
                var file_reader = new FileReader();
                file_reader.onload = function(e) {
                    that.model.set('value', e.target.result);
                    that.touch();
                }
                file_reader.readAsText(file);
            } else {

                // The file couldn't be opened.  Send an error msg to the
                // back-end.
                this.send({ 'event': 'error' });
            }

            // Set the filename of the file.
            this.model.set('filename', file.name);
            this.touch();
        },
    });

    return {
        FilePickerView: FilePickerView
    };
});

file_widget = FileWidget()

# Register an event to echo the filename when it has been changed.
def file_loading(change):
    print("Loading %s" % file_widget.filename)
file_widget.observe(file_loading, names='filename')

# Register an event to echo the filename and contents when a file
# has been uploaded.
def file_loaded(change):
    print("Loaded, file contents: %s" % file_widget.value)
file_widget.observe(file_loaded, names='value')

# Register an event to print an error message when a file could not
# be opened.  Since the error messages are not handled through
# traitlets but instead handled through custom msgs, the registration
# of the handler is different than the two examples above.  Instead
# the API provided by the CallbackDispatcher must be used.
def file_failed():
    print("Could not load file contents of %s" % file_widget.filename)
file_widget.errors.register_callback(file_failed)

file_widget

Any help is really appreciated!!

It looks like you need to write the data out to a file yourself. So modify the file_loaded function above to, instead of echoing the contents, write out the file:
with open(file_widget.filename, 'w') as f:
    f.write(file_widget.value)

Closing as answered - please reopen if you'd like to continue the conversation.


Improve stability of TestGetPolicyOK

Fixes https://github.com/fabric8-services/fabric8-wit/issues/1443

@alexeykazakov snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1463-1

@alexeykazakov snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1463-2

Codecov Report

Merging #1463 into master will decrease coverage by 0.12%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1463      +/-   ##
==========================================
- Coverage   60.31%   60.18%   -0.13%
==========================================
  Files         118      118
  Lines       10981    10981
==========================================
- Hits         6623     6609      -14
- Misses       3720     3733      +13
- Partials      638      639       +1

Impacted Files
Coverage Δ

remoteworkitem/github.go
77.14% <0%> (-22.86%)
:arrow_down:

models/transaction.go
50% <0%> (-20%)
:arrow_down:

remoteworkitem/scheduler.go
53.65% <0%> (-9.76%)
:arrow_down:

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 9df0657...2ed7b8f. Read the comment docs.

@alexeykazakov snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1463-3

[test]

[test]

@alexeykazakov snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1463-4


Display HTML response as HTML

In some not-so-production-ready rest API`s there could be heavy-styled error responses (like Xdebug or Whoops does), it's a pain to dig in their markup to find out error message. Is it possible to have HTML ResponseContent ?

Sure, I know what you mean, I'll add it in the next version.

Great!
I've made pull request with this functionality, hope it helps.

Thanks @udivanking. It's going to be included in v0.5 (to be released soon).


Can I use callbacks in train_on_batch ?

@fchollet As we all know, Keras provide a callbacks interface in model.fit() function. However, it requires loading the training dataset into memory previously. When I use train_on_batch( ), I didn't find out where I can put my callbacks (e.g. EarlyStopping, History, etc.). Any suggestions ?

Clearly if you are training on each batch from inside your own script, then the notion of per-batch or per-epoch callback is not longer relevant. You are free to do whatever you want between batches or between epochs: it's your own code.

@fchollet Thank you for you reply. fchollet, you are always that helpful : )

what about TensorBoard callback? Are there any way to use TensorBoard with train_on_batch()?

@naotokui  Please see https://gist.github.com/joelthchao/ef6caa586b647c3c032a4f84d52e3a11

you can do it manually!
you can just use save weights:
model.save_weights('my_model_weights.h5')

This will not save the optimizer state though, right? What's the workaround for that?

@fchollet I'm using model.train_on_batch and after each epoch I validate using model.predict (also in batches), due to memory leak issues I need to use clear_session() and load_model() after and before each model.predict, respectively. Since I need to continue training after validation I use model.save() to save the weights, since it also saves the 'the optimizer and its states'. Is it instead possible to save only the weights but not the architecture (I want to make some changes in architecture for validation) but also be able to pick up training after validation?


Losing <tt and sorrounding whitespace from abstract

Describe the issue
https://bib.ietf.org/get-one/by-docid/?docid=RFC+9165&doctype=IETF&query=9165&query_format=docid_regex&page=1
Code of Conduct

[x] I agree to follow the IETF's Code of Conduct

The API for RFC reference information is https://www.rfc-editor.org/rfc-index.xml, which does not contain text formatting such as <tt/>, so the abstract provided by bib.ietf.org won't have it either.
However, rfc-index.xml has the correct spaces around the terms:
The present document defines a number of control operators that were
not yet ready at the time RFC 8610 was completed: .plus, .cat, and
.det for the construction of constants; .abnf/.abnfb for including
ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and .feature for
indicating the use of a non-basic feature in an instance.

So I don't know what happened there.

There's no spaces in the relaton source file.
So this is an issue in relaton-ietf gem.

In our database and rfc-index.xml, this abstract (and also the abstracts of RFCs 9396 and 9495) initially had <tt/> formatting, which is why the spacing was incorrect.
The updated rfc-index.xml should be pulled into bib.ietf.org again to fix the spacing issue.


Added a lengthy but profound libbpf tutorial

The post is not particularly turned as a tutorial and I would probably have added it to https://github.com/zoidbergwill/awesome-ebpf#kernel-tracing instead. But I don't have a strong opinion here, I'm fine if you prefer to keep it with the tutorials. Let me know.
Thanks for the PR!

@qmonnet that's a fair point, at the first sight this post doesn't look like a traditional tutorial. However, it does have a bunch of steps that can be reproduced if one were to write a simple BPF program. It also links two repositories with simple yet useful code examples and build scripts. On top of that, it has very little on the actual kernel tracing part. So, I'm inclined to keep it in the tutorial section.
But it's not a hill I'm willing to die on, so feel free to move it to another section ;-)


Using wrappers

Hi @mattjennings! Thanks so much for this plugin, it's been a godsend for my current project.
I'm trying to add a global live code wrapper following the docs to insert a React <Provider> but it's unclear how to pass in children from the component. Could you explain how this is accomplished?
Currently I have a wrapper file:
// LiveCodeProviders.tsx
import { TooltipProvider } from "stylus-ui";

// I think the problem is here — how do you pass in children?
export default ({ children }: { children: React.ReactNode }) => {
  return <TooltipProvider>{children}</TooltipProvider>;
};

And I'm declaring that wrapper within the config settings:
// astro.config.mjs
import { defineConfig } from "astro/config";
import liveCode from "astro-live-code";

export default defineConfig({
  // ...Other Astro/Starlight config
  integrations: [
    // ...Other integrations
    liveCode({
      layout: "src/components/LiveCodeLayout.astro",
      wrapper: "src/components/LiveCodeWrapper.tsx",
      defaultProps: {
        "client:load": true,
      },
    }),
  ],
});

This results in a TypeError:
Cannot read properties of undefined (reading 'length')

Oh — it looks like this might be related to #8

eep, let me get that released and see if that fixes it for you. What you're doing should work; I should probably include an example of a Wrapper component on that docs page.

@evadecker can you try<EMAIL_ADDRESS>

That fixed it! Thanks so much!


source finders should be aware of download config settings

If a user configures special downloader instructions using the settings file, especially if rename instructions are included, then it should not be necessary to create override functions for the finders to use to find those names.

Adding from our discussion, I might also expose the canonicalized name as a template variable


crashlytics crash if passed nonexistent group

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I have read the Contribution Guidelines

Issue Description
If you run the crashlytics action and specify a group which doesn't exist, fastlane will crash without a sensible error message after ~10 seconds.  I ran into this when using the human-readable group names before realizing that crashlytics provides slugified group aliases for exactly this reason.
fastlane run crashlytics ipa_path:test.ipa api_token:xxx build_secret:xxx groups:test-group1,test-group2

Fastlane should be robust against this type of error and ideally the crashlytics action docs would be updated to note that you should use group aliases.
Environment
fastlane version (fastlane -v): 1.67.0
Do you use bundler, rbenv or rvm? bundler

@fisch0920 Thanks for the report. Can you please include the stack trace from the crash?

No stack trace is given as I believe it's a problem with Crashlytics.framework/submit as opposed to Fastlane itself, though Fastlane should be able to catch the error.

Hi @fisch0920! Can you send over the full output when your run 'fastlane run crashlytics'?
Thanks!

This was a problem in that the crashlytics submit shell action swallows stdout because it just appeared to be crashing until I ran the submit function directly and realized the submit was failing.
2016-04-18 16:54:52.462 submit Crashlytics: Crashlytics.framework/submit 1.3.5 (16)
2016-04-18 16:54:52.469 submit Crashlytics: Path to IPA manually provided: fastlane/build/eko.ipa
2016-04-18 16:54:53.004 submit Crashlytics: Path To App: /var/folders/5_/6s453vvn2vn75t4r4xjvgy600000gn/T/eko/Payload/eko.app
2016-04-18 16:55:00.148 submit Crashlytics: Unable to add testers: Project ekogreen is inactive
2016-04-18 16:55:00.148 submit Crashlytics: Failed to add testers/groups to the release

This was failing because of the issue described here, specifically that the project I was trying to upload was "inactive" e.g., hadn't sent any events yet by running the app.  This was very important to my use case for automatically building & uploading hundreds of white-labeled apps.

@fisch0920 Good job tracking this down! 👍

@fisch0920 Thanks for following up. Have you tried the steps at fabric.io/kits followed by a build and run prior to running this on a bundle ID?
Thanks!

@TKBurner yes, that works.. BUT the entire point of fastlane is to automate this process and when we're working with hundreds of white-labeled enterprise apps that are auto-generated, manually running each new client build before uploading to crashlytics is a PITA.
Fabric.io doesn't help with this.

Thanks @fisch0920! This is actually a limitation on the Fabric side that has been longstanding.  The recent Cocoapods addition, /kits/ and some upcoming Unity work have all been moving toward this automated onboarding you are looking for. I'll bring this up with the Crashlytics team. Thanks!