Enhancements to 'improve' tool, updates to related documentation and configurations

Type
Enhancement, Documentation

Description

Added a new method get_improve_usage_guide in help.py to generate a usage guide for the 'improve' tool.
Modified the run method in pr_code_suggestions.py to include the usage guide in the PR body if pr_code_suggestions.enable_help_text is enabled.
Renamed publish_summarizes_suggestions to generate_summarized_suggestions and modified it to return the PR body instead of publishing it directly.
Updated the documentation in IMPROVE.md to reflect the changes in the 'improve' tool's usage and configuration.
Added a new configuration option enable_help_text in configuration.toml to control whether the usage guide should be included in the PR body.

Changes walkthrough
Relevant files                                                                                Enhancement

help.pyAddition of 'improve' tool usage guide in help.py

        pr_agent/servers/help.py

Added a new method get_improve_usage_guide to generate a usage guide for the 'improve' tool.

 +83/-0

pr_code_suggestions.pyModifications to PR code suggestions handling

        pr_agent/tools/pr_code_suggestions.py

Modified the run method to include the usage guide in the PR body if pr_code_suggestions.enable_help_text is enabled.
Renamed publish_summarizes_suggestions to generate_summarized_suggestions and modified it to return the PR body instead of publishing it directly.

 +16/-4

Documentation

IMPROVE.mdUpdate to 'improve' tool documentation

        docs/IMPROVE.md

Updated the documentation to reflect the changes in the 'improve' tool's usage and configuration.

 +13/-23

Configuration changes

configuration.tomlAddition of new configuration option in configuration.toml

        pr_agent/settings/configuration.toml

Added a new configuration option enable_help_text to control whether the usage guide should be included in the PR body.

 +1/-0

 ✨ Usage guide:
Overview:
The describe tool scans the PR code changes, and generates a description for the PR - title, type, summary, walkthrough and labels. The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on a PR.
When commenting, to edit configurations related to the describe tool (pr_description section), use the following template:
/describe --pr_description.some_config1=... --pr_description.some_config2=...

With a configuration file, use the following template:
[pr_description]
some_config1=...
some_config2=...

  Enabling\disabling automation

When you first install the app, the default mode for the describe tool is:

pr_commands = ["/describe --pr_description.add_original_user_description=true"
                         "--pr_description.keep_original_user_title=true", ...]

meaning the describe tool will run automatically on every PR, will keep the original title, and will add the original user description above the generated description.

Markers are an alternative way to control the generated description, to give maximal control to the user. If you set:

pr_commands = ["/describe --pr_description.use_description_markers=true", ...]

the tool will replace every marker of the form pr_agent:marker_name in the PR description with the relevant content, where marker_name is one of the following:

type: the PR type.
summary: the PR summary.
walkthrough: the PR walkthrough.

Note that when markers are enabled, if the original PR description does not contain any markers, the tool will not alter the description at all.

  Custom labels
The default labels of the describe tool are quite generic: [Bug fix, Tests, Enhancement, Documentation, Other].
If you specify custom labels in the repo's labels page or via configuration file, you can get tailored labels for your use cases.
Examples for custom labels:

Main topic:performance - pr_agent:The main topic of this PR is performance
New endpoint - pr_agent:A new endpoint was added in this PR
SQL query - pr_agent:A new SQL query was added in this PR
Dockerfile changes - pr_agent:The PR contains changes in the Dockerfile
...

The list above is eclectic, and aims to give an idea of different possibilities. Define custom labels that are relevant for your repo and use cases.
Note that Labels are not mutually exclusive, so you can add multiple label categories.
Make sure to provide proper title, and a detailed and well-phrased description for each label, so the tool will know when to suggest it.

  More PR-Agent commands

To invoke the PR-Agent, add a comment using one of the following commands:

/review: Request a review of your Pull Request.
/describe: Update the PR title and description based on the contents of the PR.
/improve [--extended]: Suggest code improvements. Extended mode provides a higher quality feedback.
/ask <QUESTION>: Ask a question about the PR.
/update_changelog: Update the changelog based on the PR's contents.
/add_docs 💎: Generate docstring for new components introduced in the PR.
/generate_labels 💎: Generate labels for the PR based on the PR's contents.
/analyze 💎: Automatically analyzes the PR, and presents changes walkthrough for each component.

See the tools guide for more details.
To list the possible configuration parameters, add a /config comment.

See the describe usage page for a comprehensive guide on using this tool.

Preparing suggestions...

PR Code Suggestions
Suggestions                                                                                maintainability
Split a long method into smaller, more manageable methods.

The method get_improve_usage_guide is quite long and contains multiple sections. It would be more maintainable to split this method into smaller methods, each responsible for generating a specific section of the guide.
pr_agent/servers/help.py [236-316]
 @staticmethod
 def get_improve_usage_guide():
     output = "**Overview:**\n"
-    ...
+    output += self.get_overview_section()
+    output += self.get_automation_section()
+    output += self.get_extra_instructions_section()
+    output += self.get_suggestions_quality_section()
+    output += self.get_general_section()
     return output

Split a long method into smaller, more manageable methods.

The method run is quite long and contains multiple sections. It would be more maintainable to split this method into smaller methods, each responsible for a specific part of the process.
pr_agent/tools/pr_code_suggestions.py [79-95]
 async def run(self):
     if get_settings().config.publish_output:
-        get_logger().info('Pushing PR code suggestions...')
-        self.git_provider.remove_initial_comment()
-        ...
-        self.git_provider.publish_comment(pr_body)
+        self.publish_output()
     else:
         get_logger().info('Pushing inline code suggestions...')
         self.push_inline_code_suggestions(data)

+def publish_output(self):
+    get_logger().info('Pushing PR code suggestions...')
+    self.git_provider.remove_initial_comment()
+    ...
+    self.git_provider.publish_comment(pr_body)
+

Split a long method into smaller, more manageable methods.

The method generate_summarized_suggestions is quite long and contains multiple sections. It would be more maintainable to split this method into smaller methods, each responsible for generating a specific part of the suggestions.
pr_agent/tools/pr_code_suggestions.py [312-393]
 def generate_summarized_suggestions(self, data: Dict) -> str:
     try:
         pr_body = "## PR Code Suggestions\n\n"
+        pr_body += self.generate_suggestions_body(data)
         ...
         return pr_body
     except Exception as e:
         get_logger().info(f"Failed to publish summarized code suggestions, error: {e}")
         return ""

Extract repeated condition checks into a separate method.

The run method is checking if get_settings().pr_code_suggestions.summarize and self.git_provider.is_supported("gfm_markdown") are both true. This check is done in multiple places in the code. It would be better to create a method that performs this check and call it instead.
pr_agent/tools/pr_code_suggestions.py [83]
-if get_settings().pr_code_suggestions.summarize and self.git_provider.is_supported("gfm_markdown"):
+if self.should_push_summarized_suggestions():
     get_logger().info('Pushing summarize code suggestions...')

+def should_push_summarized_suggestions(self):
+    return get_settings().pr_code_suggestions.summarize and self.git_provider.is_supported("gfm_markdown")
+

 ✨ Usage guide:
Overview:
The improve tool scans the PR code changes, and automatically generates suggestions for improving the PR code. The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on a PR.
When commenting, to edit configurations related to the improve tool (pr_code_suggestions section), use the following template:
/improve --pr_code_suggestions.some_config1=... --pr_code_suggestions.some_config2=...

With a configuration file, use the following template:
[pr_code_suggestions]
some_config1=...
some_config2=...

  Enabling\disabling automation
When you first install the app, the default mode for the improve tool is:
pr_commands = ["/improve --pr_code_suggestions.summarize=true", ...]

meaning the improve tool will run automatically on every PR, with summarization enabled. Delete this line to disable the tool from running automatically.

  Utilizing extra instructions
Extra instructions are very important for the improve tool, since they enable to guide the model to suggestions that are more relevant to the specific needs of the project.
Be specific, clear, and concise in the instructions. With extra instructions, you are the prompter. Specify relevant aspects that you want the model to focus on.
Examples for extra instructions:
[pr_code_suggestions] # /improve #
extra_instructions="""
Emphasize the following aspects:
- Does the code logic cover relevant edge cases?
- Is the code logic clear and easy to understand?
- Is the code logic efficient?
...
"""

Use triple quotes to write multi-line instructions. Use bullet points to make the instructions more readable.

  A note on code suggestions quality

While the current AI for code is getting better and better (GPT-4), it's not flawless. Not all the suggestions will be perfect, and a user should not accept all of them automatically.
Suggestions are not meant to be simplistic. Instead, they aim to give deep feedback and raise questions, ideas and thoughts to the user, who can then use his judgment, experience, and understanding of the code base.
Recommended to use the 'extra_instructions' field to guide the model to suggestions that are more relevant to the specific needs of the project.
Best quality will be obtained by using 'improve --extended' mode.

  More PR-Agent commands

To invoke the PR-Agent, add a comment using one of the following commands:

/review: Request a review of your Pull Request.
/describe: Update the PR title and description based on the contents of the PR.
/improve [--extended]: Suggest code improvements. Extended mode provides a higher quality feedback.
/ask <QUESTION>: Ask a question about the PR.
/update_changelog: Update the changelog based on the PR's contents.
/add_docs 💎: Generate docstring for new components introduced in the PR.
/generate_labels 💎: Generate labels for the PR based on the PR's contents.
/analyze 💎: Automatically analyzes the PR, and presents changes walkthrough for each component.

See the tools guide for more details.
To list the possible configuration parameters, add a /config comment.

See the improve usage page for a more comprehensive guide on using this tool.

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/2132771f46c50b9883996bae82edd055c3a2cfe3)

Preparing PR description...

Preparing PR description...

Preparing PR description...

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

Preparing PR description...

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

Preparing PR description...

Preparing PR description...

Preparing PR description...

PR Description updated to latest commit (https://github.com/Codium-ai/pr-agent/commit/8f510dc553065a7fd27faa16a18c0a4482f14aff)

PR Analysis
Here is a list of code components that were changed in this PR:
fileComponentshelp.py
get_improve_usage_guide (method of HelpMessage)
+81/-0

pr_code_suggestions.py
run (method of PRCodeSuggestions)
+12/-2

generate_summarized_suggestions (method of PRCodeSuggestions)
+3/-0

 ✨ Usage guide:
Using static code analysis capabilities, the analyze tool scans the PR code changes and find the code components (methods, functions, classes) that changed in the PR.
The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on any PR:
/analyze

Language that are currently supported: Python, Java, C++, JavaScript, TypeScript.
See more information about the tool in the docs.

Tests for 'generate_summarized_suggestions' method
PR-Agent tests for code changes in generate_summarized_suggestions:
 [happy path]The function should correctly generate a summarized suggestion HTML table with the correct headers and footers

test_code:
import pytest
from your_module import PRCodeSuggestions  # Adjust the import according to your project structure

@pytest.mark.asyncio
async def test_generate_summarized_suggestions_html_structure():
    pr_code_suggestions = PRCodeSuggestions("dummy_pr_url")
    data = {
        "code_suggestions": [
            {
                "label": "Refactor",
                "relevant_file": "example.py",
                "relevant_lines_start": 10,
                "relevant_lines_end": 12,
                "suggestion_content": "Consider using a context manager.",
                "existing_code": "f = open('file.txt')\nf.close()",
                "improved_code": "with open('file.txt') as f:\n    pass",
                "one_sentence_summary": "Use context manager for file handling."
            }
        ]
    }
    result = pr_code_suggestions.generate_summarized_suggestions(data)
    assert "
" in result and "
" in result, "The result should contain an HTML table structure."
    assert "
" in result and "
" in result, "The result should contain a table header."
    assert "
" in result and "
" in result, "The result should contain a table body."
    assert "Refactor" in result, "The result should include the label 'Refactor'."
    assert "example.py" in result, "The result should include the file name 'example.py'."
    assert "Consider using a context manager." in result, "The suggestion content should be included in the result."

 [happy path]The function should correctly replace code tags in the one sentence summary with HTML entities to avoid breaking the HTML structure

test_code:
import pytest
from your_module import PRCodeSuggestions  # Adjust the import according to your project structure

@pytest.mark.asyncio
async def test_generate_summarized_suggestions_code_tags_replacement():
    pr_code_suggestions = PRCodeSuggestions("dummy_pr_url")
    data = {
        "code_suggestions": [
            {
                "label": "Syntax",
                "relevant_file": "example.py",
                "relevant_lines_start": 5,
                "relevant_lines_end": 5,
                "suggestion_content": "Use `:=` for assignment expressions.",
                "existing_code": "val = get_value()\nif val:",
                "improved_code": "if (val := get_value()):",
                "one_sentence_summary": "Use `:=` for assignment expressions."
            }
        ]
    }
    result = pr_code_suggestions.generate_summarized_suggestions(data)
    assert "<=" in result and ">=" in result, "The result should contain HTML entities for code tags."

 [edge case]The function should handle empty code suggestions gracefully, returning only the initial headers and footers without any suggestion rows

test_code:
import pytest
from your_module import PRCodeSuggestions  # Adjust the import according to your project structure

@pytest.mark.asyncio
async def test_generate_summarized_suggestions_with_empty_data():
    pr_code_suggestions = PRCodeSuggestions("dummy_pr_url")
    data = {"code_suggestions": []}
    result = pr_code_suggestions.generate_summarized_suggestions(data)
    assert "
" in result and "
" in result, "The result should contain an HTML table structure."
    assert "
" not in result, "The result should not contain a table body if there are no suggestions."

/test generate_summarized_suggestions

/analyze

/test generate_summarized_suggestions

/analyze


Handle unhandled promise rejecion when dev-server.js tries to open a …

Fix for #369, that to silently ignores the promise rejection.
Without this npm run dev on nodejs v8.6.0 shows an annoying warning:
 DONE  Compiled successfully in 4890ms                                                                                21:02:38

> Listening at http://localhost:8080

(node:1164) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3): Error: Exited with code 3
(node:1164) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

We will switch to webpack-dev-server very soon (#946), so this should not be an issue afterwards.


Doesn't build because package dependency is not published

In a8ee56a80834e65a6b07a5c73e5c2ae5d2e86150 the version of AntShares was changed from 2.0.0-preview2 to 2.0.0-preview2-04 but that version does not appear to be published on NuGet. (https://www.nuget.org/packages/AntShares).
This makes attempting to build the solution fail.

You can pack it by yourself.
dotnet pack -c Release
Then add a local source to nuget.

Is that the intended development model? Or just a workaround. It'd be nice to not have to do that. Or, if that's a necessary step, perhaps include it in the README.

@erikzhang , I think it would be nice to have some nuspec files to deploy the nugets more easily.


Known issue is not persisted for the other tests

Steps:

Mark any issue as know issue
Create a test with the same steps like in the first test with known issue.

Expected result:
All the tests with the same issue should be marked as known issue.
Actual result:
Known issue is appearing only for the test which was marked as known issue.

it is not a bug


trim 'v' prefix from versions before checking skew

What this PR does / why we need it:

embedded cluster version mismatch - this binary is version "v1.14.2+k8s-1.29", but the cluster is running version "1.14.2+k8s-1.29"

this is bad and we should avoid it happening
Which issue(s) this PR fixes:

Does this PR require a test?

Does this PR require a release note?

Does this PR require documentation?

@laverya why is there still a 'v' prefix? I thought we completely dropped the v everywhere?

I am not sure @chris-sanders, but when I run embedded-cluster version I get this:
./embedded-cluster version
+-------------------------+------------------+
| COMPONENT               | VERSION          |
+-------------------------+------------------+
| Installer               | v1.14.2+k8s-1.29 |
| Kubernetes              | v1.29.8+k0s.0    |
| AdminConsole            | v1.117.3         |
| EmbeddedClusterOperator | v1.14.2+k8s-1.29 |
| OpenEBS                 | v4.1.1           |
| Registry                | v2.2.3           |
| Velero                  | v7.2.1           |
+-------------------------+------------------+


UI-REACT:  separate modal ui from react hooks

UI modal files takes a lot of space, but used only once per user session. It would be great to have some way to separate it from main app bundle.

Cool

Nice project


Pip install with python 2.7 fails

Seeing this error when running vagrant up --provision for the first time
==> default: The URL you are using to fetch this script has changed, and this one will no
==> default: longer work. Please use get-pip.py from the following URL instead:
==> default:
==> default:     https://bootstrap.pypa.io/pip/2.7/get-pip.py
==> default:
==> default: Sorry if this change causes any inconvenience for you!
Was changed via issue #116, but looks to have changed again.

Fix merged.


How to resize canvas and center image without resizing?

My image is 100x100 pixel. The resulting image must be 200x200 pixel. The original image must be centered so that there is a 50 pixel border around it. How do I do that?

Hi, did you see https://sharp.pixelplumbing.com/api-resize#extend ?

@lovell Yes, I saw that. Thanks. I find the interface a bit awkward, because for achieving what I want I would have to calculate the extension values first. With the resize interface I get the high level center-option.
I can think of a canvas-size function canvas(width, height, positioning) -> canvas(200, 200, 'center') to make that comfortable.

I came up with this one
sharp({
                create: {
                    width: AVATAR_IMAGE_MAX_HEIGHT,
                    height: AVATAR_IMAGE_MAX_WIDTH,
                    channels: 4,
                    background: { r: 0, g: 0, b: 0, alpha: 0.0 }
                }
            })
                .png()
                .composite([{ input: avatarImageBuffer, gravity: 'center' }])
                .toBuffer()
            );

Not sure if this is efficient or not.

Yes, your suggestion will work, and I think more closely matches the model you've described.
There's a slight CPU cost due to the use of RGBA as this will require a premultiply/unpremultiply round-trip when compositing, but I think for your use case this is still the best approach.

I hope this information helped. Please feel free to re-open with more details if further assistance is required.


Laravel 11 Support.

Laravel 11 has been released
thank you

@unicodeveloper please when can we expect a release for the laravel 11 support?

I'll tag a release today for the Laravel 11 suppport @emyu01


fix(workflows): filter messages by tags

Changes

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#1143
#1142  👈
#1141
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @MasterPtato and the rest of your teammates on  Graphite


[Android] Map with region controlled as state won't let you move the map

Is this a bug report?
Yes
Have you read the Installation Instructions?
Yes
Environment
react-native: 0.52.2
react: 16.2.0
react-native-maps: 0.19.0
Works on iOS target platform 9.0 (Apple Maps, have not tried Google Maps)
Does not work on Android, tried multiple versions including 6.0 emulator and a 8.1.0 Pixel 2
Steps to Reproduce

react-native init <projectName>
Install RN Maps according to the instructions
Test a non controlled map (aka uses initialRegion instead of region) to confirm everything is installed correctly. It will work. (see master branch of repo referenced in reproducible demo section)
Change the map into a controlled map (using region and onRegionChange)
Run on an Android device or emulator. You will see that when you try to move the map around the whole map jitters and makes it impossible to move around
(optional) Test the same code on iOS (Apple Maps) it will work fine

Expected Behavior
I would have expected to be able to move the map around like normal on Android. This example is taken straight out of the Readme and has worked for me perfectly on another project that is running on older RN and RN Maps (RN 0.48.4, RN Maps: 0.16.4).
Actual Behavior
Whenever you try to move the map the whole map jitters and doesn't move at all. Sometimes you can get very small movements to work but it is not usable. It almost seems as if the updates to the state are not happening in sync with the dragging of your finger making it just bounce back and forth.
This is only an issue on Android not iOS.
Reproducible Demo
https://github.com/techwes/rn-maps-playground/tree/issue-map-move
The repo above I just created to play around with RN Maps and confirm this issue was not due to some of my other code. The branch linked above has the code that reproduces the issue. The master branch is actually a version that works (just to prove I didn't mess up the installation).
You will notice that this code is the same as "Using a MapView while controlling the region as state" section of the readme, but it doesn't work on Android

Any updates on this issue?

@rafetkhallaf don't make region depending on state

I got pulled onto more pressing things so left this hanging for now. My plan when I get back to this is to remove the need to control the region through the state and use animateTo when I need to change the region, as @alvelig suggested.
If it is a bad practice to control region with state, then I propose we remove references to it in the Readme and call it out as a bad practice. Almost every code snippet example in the Readme references:
<MapView
  region={this.state.region}
  onRegionChange={this.onRegionChange}
>

which implies that controlling the region as state is a best practice. Luckily it looks like the actual examples in the examples folder generally use initialRegion (at least the view I clicked through).
I would be happy to make this documentation update, I just want to make sure the powers at be agree this is a good idea so I don't waste my time

@techwes I see your point, but there's a problem, that it's not a totally bad practice, but actually just a use case. You may intentionally use state to control region, but you should be aware of the consequences. I agree that this cases should be cleared in the docs.

Yeah I don't think I know exactly what the consequences are, so maybe I am not the best to do this? Or maybe if you give me a use case where it is a good idea to control region via state  (and that actually works) that would help. I just know the example in the docs does not work  and it doesn't seem like this is best recommendation for most use cases

One possible use case is when you want to restrict area shown. But actually you are correct. Most of them are doable with animateTo

I know this is outside your convo right now, but it got little confusing for me now. just to confirm, the problem is not with onRigonChange => setState({ region: region}), it's with region={this.state.region}. is this correct?

I think yes, but I would not have phrased it that way. It is more an issue of them being used together than with either individually. To be clear, there is no issue with onRegionChange being called, and you could certainly set the state in that function and it would work fine. But once you hook that region state up to the region prop is when this bug occurs.

Exactly, the issue is expecting the map to pan fluently while controlling it's region with setState(), as map render() might take more time than you expect to change the region.

@techwes @alvelig I tried everything to get the map to work as smooth as before but no luck. how are you guys setting the region when somebody moves the map around? this.setState({}) is not working as we discussed and almost every tutorial i found is doing the same thing.
** we are also using expo and it's using 0.19 and i noticed today that there is a new version here that solved some of the other problems i was having with RNM but don't know how to upgrade it one expo, not sure if that is even possible, but i searched around and i posted the questions hoping that it is possible without waiting for the next sdk update. So if this issue is fixed on RNM 0.20.1 just confirm it for me and I'll focus on following up with expo.
@rborn sorry i missed your comment. I'm not trying to set the region using the state, i'm trying to get the region when the user moves the map around.

I guess then it's an expo issue and not reactnative-maps @ethantran. I just came back to this issue i'm going to do some more testing on it and see if we can solve this.

@rafetkhallaf I have been able to sidestep this issue in both a pure naive and an expo (SDK 25) app using  I have been able to side step this issue using the suggestion from @alvelig which is to not use the region prop (only use initialRegion aka don't control the region with state), keeping track of the region in the state via onRegionChanged, and using animateTo to change the region when needed. Have you tried this method? I think it actually should be the preferred way to go.
So I would like to get back to the matter of either fixing this issue, or making the documentation clear this is not an issue. It seems from earlier conversation that controlling region with state does have its use cases but generally is not a best practice (because it causes this issue). If that is indeed the case, then we can close this issue by making the documentation clear. Otherwise, we should actually fix it so controlling the region as state works as it used to. The documentation updating is something I would be happy to do. Fixing the library however is outside of the current time I have to commit (since I have yet to contribute or even browse the inner workings of this library and have very little time to do so)

I'd go for documenting that animateTo is generally preferable before controlling region in state due to the nature of ReactNative render method. I'm even against initialRegion, but don't know yet how to handle some border cases.
Something like:
NOTE: the approach used in examples where region={this.state.region} is only for demonstration purposes and extremely discouraged to apply due to unresolved performance issues. If you need to change region programmatically, use animation methods

@techwes @alvelig I agree with the documentation seince this is the best practice/approach.

The only problem with using f.ex animateToRegion is that it’s not possible to move the map without duration in android (it seems to use at least 400ms even if I set it to zero)

<MapView           style={styles.map}           region={this.state.mapRegion}           showsUserLocation={true}           followUserLocation={true}           onRegionChange={() => this.onRegionChange()}>           <MapView.Marker             coordinate={{               latitude: (this.state.lastLat ) || -36.82339,               longitude: (this.state.lastLong ) || -73.03569,             }}             title="Hello"             description="Hello d"             onPress={() => alert("hello re")}             >             <View>               <Text style={{color: '#000'}}>                 { this.state.lastLong } / { this.state.lastLat }               </Text>             </View>           </MapView.Marker>         </MapView>
i tried using fat arrow function and it worked.
 onRegionChange={() => this.onRegionChange()}>
problem was with whenever region changes it call backs immidiately, because of it when i try to drag my map pointer it shakes and then i use this call back function and it works perfect.

Removing region = {this.state.region} from MapView solved this for me.

Following Lavkushwaha's suggestion, I simply changed my code from the example in the docs to a fat arrow function and amazingly the jittery behavior went away. Any thoughts why it would make a difference?
                // onRegionChange={this.onRegionChange}
                onRegionChange={() => this.onRegionChange()}

onRegionChange={(region) => props.map.animateToRegion(region,0)  } work for me :)

as @markmssd noticed there will be a little "jitter" at the end of your movement on the map especially if you give a big scroll and leave the map go. It is more evident on real device in my case.
In this case debounce will help
          <MapView
            provider={Platform.OS === 'ios' ? null : PROVIDER_GOOGLE}
            initialRegion={region}
            onRegionChangeComplete={debounce(this.onRegionChange, 1000, {
              leading: false,
              trailing: true
            })}
            zoomControlEnabled
          />

I'm closing this issue because it seems like incorrect usage instead of an actual bug. stackoverflow seems like a better place for such discussion.

I believe that this is still a problem on Android. At least the example from the Readme is broken.
I noticed that iOS is implementing a feature that prevents onRegion callbacks to fire when programmatically updating the region ([AirMap ignoreRegionChanges]) while Android seems to be missing that part completely.

Had the same problem because the Readme pointed me to the onRegionChange when having the region as state.

@jakoblorz @stigi  Did you guys solved this in any way?
I'm cracking my head for almost a week now.. I need to store the latitudeDelta on a state to calc the users current zoom and display the markers based on that, and update it on the go with useEffect by passing the zoomValue as a second argument.
Can someone help me?

I using this guide, maybe you should try
https://alizahid.dev/blog/keep-marker-in-center-and-move-map-around-it

I was struggling to find the solution to this problem since couple of weeks, and suddenly i thought of a fix to this issue in this way.
First thing, If you need a state based region, don't go for state based region.
Why?
Because, in order to update the region, you will require
onRegionChange={this.onRegionChange}
which makes map sluggish and does not let the map move smoothly since you're updating state every time user navigates/pans, which re-renders your entire component. Definitely a heavy operation.
Please note here that changing above line to
onRegionChange={() => this.onRegionChange}
does not make any sense, since you're not capturing region from the callback and hence, onRegionChange will never be able to update the state. But still, your map will work smooth because you're not at all updating state. If at any point you'll try to console your region, you'll get initialRegion only which you had set programatically and not the region where user currently is looking at.
Also, some developers have mentioned to use onRegionChangeComplete method instead of onRegionChange, but it did't work me actually. onRegionChangeComplete keeps moving my map automatically without user interactions.
So, what my suggestion is, instead keeping region in state of the component, you can keep region as class variable using this.region = <your initial state>
modify your onRegionChange method to,
onRegionChange = (region) => {         this.region = region;     }
this will not change the state every time user navigates/pans in the map.
PS: At any point if you need to re-assign the region and you need map to load latest region, you can always have a workaround like below.
Have one state variable which would be of dateTime, and whenever you need to re-render your component with latest region, just update the dateTime state variable.
Hope this helps!


Compilation of generated code without some replacement of input parameters

/go/src/sample/rules.go:794:176: syntax error: unexpected customerid at end of statement
GENERATED CODE:
output["hide"] = "[map[screenId:transferscreen _condition:contains(group:showTransfersScreen,input:customerid) _conditionCode:contains(group:showTransfersScreen,ctx.Input["customerid"].(string))] map[screenId:accountscreen _condition:before('2020-04-30T23:32:21+00:00') _conditionCode:before("2020-04-30T23:32:21+00:00")] map[_condition:contains(group:specialCustomers,input:customerid) and randomPerc(10, input:customerid) _conditionCode:contains(group:specialCustomers,ctx.Input["customerid"].(string)) && randomPerc(10,ctx.Input["customerid"].(string),1234) screenId:specialcustomersscreen]]"

When making some adjustments to the screens.json, the ruller-dsl-feature-flag executed without error.
The adjustments were:
// wrong
{
 "redirect": [
        {
            "fromId":"paymentscreen",
            "targetId":"/tela/funcionalidade-indisponivel",
            "_condition": "input:_ip_city=='Brasília'"
        },
        {
            "fromId":"minhasfinancashome",
            "targetId":"minhasfinancashomeB",
            "_condition": "randomPerc(50, input:customerid)"
        },
        {
            "screenId":"minhasfinancashome",
            "targetId":"/tela/minhas-financas",
            "_condition": "versionCheck(input:app_version, '<=4.3')"
        }
    ],
"hide": [
        {
            "screenId":"transferscreen",
            "_condition": "contains(group:showTransfersScreen,input:customerid)"
        },
        {
            "screenId":"accountscreen",
            "_condition": "before('2020-04-30T23:32:21+00:00')"
        },
        {
            "screenId":"specialcustomersscreen",
            "_condition": "contains(group:specialCustomers,input:customerid) and randomPerc(10, input:customerid)"
        }
    ]
}

//right

 "_items": [
        {
            "label": "redirect",
            "_items": [
                {
                    "fromId":"paymentscreen",
                    "targetId":"/tela/funcionalidade-indisponivel",
                    "_condition": "input:_ip_city=='Brasília'"
                },
                {
                    "fromId":"minhasfinancashome",
                    "targetId":"minhasfinancashomeB",
                    "_condition": "randomPerc(50, input:customerid)"
                },
                {
                    "screenId":"minhasfinancashome",
                    "targetId":"/tela/minhas-financas",
                    "_condition": "versionCheck(input:app_version, '<=4.3')"
                }
            ]
        },
        {
            "label": "hide",
            "_items": [
                {
                    "screenId":"transferscreen",
                    "_condition": "contains(group:showtransfersscreen,input:customerid)"
                },
                {
                    "screenId":"accountscreen",
                    "_condition": "before('2020-04-30T23:32:21+00:00')"
                },
                {
                    "screenId":"specialcustomersscreen",
                    "_condition": "randomPerc(10,input:customerid) and contains(group:specialcustomers,input:customerid)"
                }
            ]
        }
    ]

From what I understand, the entrypoint for ruller-dsl-feature-flag  to understand and execute the rules correctly is the keyword _items. Is that true @flaviostutz ?
I noticed a problem: keys from _groups must be a lowercase string, if not ruller-dsl-feature-flag  can't find the content, this could be an issue. Had you noticed that, @flaviostutz ?
The result was (POST http://localhost:3000/screens):

{
    "_items": [
        {
            "_items": [
                {
                    "label": "redirect"
                },
                {
                    "_items": [
                        {
                            "_condition_debug": "before('2020-04-30T23:32:21+00:00')",
                            "screenId": "accountscreen"
                        }
                    ],
                    "label": "hide"
                }
            ],
            "label": "my root label"
        }
    ]
}

Is this an expected answer for the type of application you want to use?

Yes. You gotta an error!
I haven't noticed that yet. Maybe this is an error.
That's right!

If not asking too much, please change the erroneous screen.json and send it in a PR.
Thanks!

@flaviostutz, I sent the PR.
Thanks


New multi-trees test, failing

I ran into the issue that has occurred for multiple programmers.
Issues:
#37
#76
#28
The issue is occurring because the call to hash_tree is on an already-scoped ActiveRecord relation, and your previous tests only cover Class.hash_tree.
example:
d = Tag.find_or_create_by_path %w[a b c d]
h = Tag.find_or_create_by_path %w[e f g h]
Tag.first.children.hash_tree
NoMethodError - undefined method []=' for nil:NilClass:   (gem) closure_tree-5.1.1/lib/closure_tree/hash_tree.rb:52:in block in build_hash_tree'
(gem) activerecord-4.1.0/lib/active_record/relation/delegation.rb:46:in each'   (gem) closure_tree-5.1.1/lib/closure_tree/hash_tree.rb:47:in build_hash_tree'
(gem) closure_tree-5.1.1/lib/closure_tree/hash_tree.rb:23:in hash_tree'   (gem) activerecord-4.1.0/lib/active_record/relation/delegation.rb:94:in block in method_missing'
(gem) activerecord-4.1.0/lib/active_record/relation.rb:286:in scoping'   (gem) activerecord-4.1.0/lib/active_record/relation/delegation.rb:94:in method_missing'
app/controllers/aging_resources_controller.rb:34:in `load_resource'
...
I have updated all your tests to accommodate for the desired/intended behavior, and they all pass. I then wrote my own test that demonstrates the issue occurring and the test fails.
Let me know if you need any more info from me. The issue is occurring on line 52 of /lib/closure_tree/hash_tree.rb and it seems like there needs to be another conditional statement on line 49 to fix the problem, but I haven't had time to throw bricks at it yet. It might be an easy fix for you, @mceachen, so I thought I'd let you take a look.
Btw, I love this gem :). Nice work!

Thanks for making those failing tests! I'll try to check them out when I've got a moment this next weekend.

Ah, so I found the actual issue here—the node.children.hash_tree passes a scope that has a where condition (where the parent_id is the id of node)—which causes only the children to be returned from hash_tree.


consolidate ratelimit test samples

Move tests for stackdriver and redisquota to samples directory.
It appears we are not testing what we documented as a task, so this needs a follow up to align them.
Contributes to https://github.com/istio/istio/issues/13433
/assign @douglas-reid
/assign @geeknoid
Signed-off-by: Kuat Yessenov<EMAIL_ADDRESS>

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: kyessenov
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: costinm
If they are not already assigned, you can assign the PR to them by writing /assign @costinm in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

bin/OWNERS
samples/OWNERS
tests/OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kyessenov: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
39049cb2f7e02a6babd325898dfe37846bcbe50e
link
/test istio-integ-k8s-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@douglas-reid
@geeknoid
Can we merge this? I think it's necessary for stackdriver nightly to pass since we disabled the old-style CRD config support by default.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: kyessenov
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers: douglas-reid, frankbu, nmittler
If they are not already assigned, you can assign the PR to them by writing /assign @douglas-reid @frankbu @nmittler in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

bin/OWNERS
pkg/OWNERS
samples/OWNERS
tests/OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
39049cb2f7e02a6babd325898dfe37846bcbe50e
link
/test istio-integ-k8s-tests

prow/istio-integ-local-tests.sh
cef2b0cfec5835979a6a3e470647c7d480f9d1b7
link
/test istio-integ-local-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@gargnupur can you please OK the move to using common samples for ratelimit test?

/lgtm
Need to resolve conflicts, but otherwise seems fine.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: douglas-reid, kyessenov
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers: frankbu, nmittler
If they are not already assigned, you can assign the PR to them by writing /assign @frankbu @nmittler in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

bin/OWNERS [douglas-reid]
pkg/OWNERS
samples/OWNERS
tests/OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-local-tests.sh
cef2b0cfec5835979a6a3e470647c7d480f9d1b7
link
/test istio-integ-local-tests

prow/istio-integ-k8s-tests.sh
cef2b0cfec5835979a6a3e470647c7d480f9d1b7
link
/test istio-integ-k8s-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

New changes are detected. LGTM label has been removed.

@gargnupur @douglas-reid Please take a look again. I re-worked the rest of the test.

@kyessenov: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/release-test.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test release-test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Can I get an approval again @douglas-reid ?
I know it's not fully done since it conflicts with @gargnupur 's PR, but at least it fixes a few issues with stackdriver test configs.

/assign @nmittler

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-security-k8s-presubmit-tests.sh
35819b8dfa7aaaa453bfa0fb39e7d22c9240250f
link
/test integ-security-k8s-presubmit-tests-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: douglas-reid, kyessenov, nmittler
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: frankbu
If they are not already assigned, you can assign the PR to them by writing /assign @frankbu in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

bin/OWNERS [douglas-reid]
pkg/OWNERS [nmittler]
samples/OWNERS
tests/OWNERS [nmittler]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@frankbu
Can you approve the additions to samples directory?

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-security-k8s-presubmit-tests.sh
35819b8dfa7aaaa453bfa0fb39e7d22c9240250f
link
/test integ-security-k8s-presubmit-tests-master

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-security-k8s-presubmit-tests.sh
35819b8dfa7aaaa453bfa0fb39e7d22c9240250f
link
/test integ-security-k8s-presubmit-tests-master

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio-pilot-e2e-envoyv2-v1alpha3-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-security-k8s-presubmit-tests.sh
35819b8dfa7aaaa453bfa0fb39e7d22c9240250f
link
/test integ-security-k8s-presubmit-tests-master

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio-pilot-e2e-envoyv2-v1alpha3-master

prow/e2e-dashboard.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-dashboard-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-security-k8s-presubmit-tests.sh
35819b8dfa7aaaa453bfa0fb39e7d22c9240250f
link
/test integ-security-k8s-presubmit-tests-master

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio-pilot-e2e-envoyv2-v1alpha3-master

prow/e2e-dashboard.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-dashboard-master

prow/e2e-bookInfoTests-trustdomain.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-bookInfoTests-trustdomain-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-security-k8s-presubmit-tests.sh
35819b8dfa7aaaa453bfa0fb39e7d22c9240250f
link
/test integ-security-k8s-presubmit-tests-master

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio-pilot-e2e-envoyv2-v1alpha3-master

prow/e2e-dashboard.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-dashboard-master

prow/e2e-bookInfoTests-trustdomain.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-bookInfoTests-trustdomain-master

prow/e2e-simpleTests-minProfile.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-simpleTestsMinProfile-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-security-k8s-presubmit-tests.sh
35819b8dfa7aaaa453bfa0fb39e7d22c9240250f
link
/test integ-security-k8s-presubmit-tests-master

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio-pilot-e2e-envoyv2-v1alpha3-master

prow/e2e-dashboard.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-dashboard-master

prow/e2e-bookInfoTests-trustdomain.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-bookInfoTests-trustdomain-master

prow/e2e-simpleTests-minProfile.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-simpleTestsMinProfile-master

prow/integ-framework-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-framework-k8s-presubmit-tests-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/lgtm

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: douglas-reid, frankbu, kyessenov, nmittler
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

bin/OWNERS [douglas-reid]
pkg/OWNERS [nmittler]
samples/OWNERS [frankbu]
tests/OWNERS [nmittler]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio-pilot-e2e-envoyv2-v1alpha3-master

prow/e2e-dashboard.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-dashboard-master

prow/e2e-bookInfoTests-trustdomain.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-bookInfoTests-trustdomain-master

prow/e2e-simpleTests-minProfile.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-simpleTestsMinProfile-master

prow/integ-framework-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-framework-k8s-presubmit-tests-master

prow/integ-security-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-security-k8s-presubmit-tests-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kyessenov: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
375ed0b825b660544fb6d02d88e2f9c7cb721433
link
/test istio-integ-k8s-tests

prow/integ-galley-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-galley-k8s-presubmit-tests-master

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio-pilot-e2e-envoyv2-v1alpha3-master

prow/e2e-dashboard.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-dashboard-master

prow/e2e-bookInfoTests-trustdomain.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-bookInfoTests-trustdomain-master

prow/e2e-simpleTests-minProfile.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test e2e-simpleTestsMinProfile-master

prow/integ-framework-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-framework-k8s-presubmit-tests-master

prow/integ-security-k8s-presubmit-tests.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test integ-security-k8s-presubmit-tests-master

prow/e2e_pilotv2_auth_sds.sh
44627fecd6e0e3e48400650f7a2f3b65068abdd0
link
/test istio_auth_sds_e2e-master

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

/test integ-galley-k8s-presubmit-tests-master
/test istio-pilot-e2e-envoyv2-v1alpha3-master
/test e2e-dashboard-master
/test e2e-bookInfoTests-trustdomain-master

/test integ-security-k8s-presubmit-tests-master

/test istio_auth_sds_e2e-master

/test integ-framework-k8s-presubmit-tests-master

/test prow/integ-mixer-k8s-presubmit-tests
/test prow/integ-mixer-local-presubmit-tests

/test integ-mixer-k8s-presubmit-tests
/test integ-mixer-k8s-presubmit-tests-master

/test integ-mixer-local-presubmit-tests
/test integ-mixer-local-presubmit-tests-master


Fix broken / incorrect links

What changes to the docs does this PR provide?
Both of the replaced links were broken. Also, v.7.0.0 template doesn't have a progress ring, last version to have it appears to be 2.2.
PR Checklist
Please check if your PR fulfills the following requirements:

[ ] Correctly picked the right branch to base the change off (dev for new features, master for typos/improvements)
[ ] For new pages, used the provided template
[ ] For new features, added an entry in the Table of Contents
[ ] Ran against a spell and grammar checker
[ ] Contains NO breaking changes

Docs Build status updates of commit 029499b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/controls/ImageEx.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 6fc5409:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/controls/ImageEx.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 6fc5409:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/controls/ImageEx.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit cc51192:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/controls/ImageEx.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit cc51192:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/controls/ImageEx.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Thanks for pointing this out @kmgallahan, sorry for the delay. Figured we probably don't want to point to a technique in the end that's from such an old version of the toolkit anyway, as it's not something we've probably tested in a long time.


Using a go routine does not keep the connection alive

Using a go routine does not keep the connection alive.

compile program.
telnet to port 3000
kill -s SIGUSR2 PID

If you do this same program without the go routine wrapper, the connection is not dropped.
package main

import (
        "fmt"
        "log"
        "net/http"

        "github.com/jpillora/overseer"
)

//create another main() to run the overseer process
//and then convert your old main() into a 'prog(state)'
func main() {
        overseer.Run(overseer.Config{
                Debug: true,
                Program: prog,
                Address: ":3000",
        })
}

//prog(state) runs in a child process
func prog(state overseer.State) {
        log.Printf("app (%s) listening...", state.ID)
        http.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
                fmt.Fprintf(w, "app (%s) says hello\n", state.ID)
        }))
        go func() {
                if err := http.Serve(state.Listener, nil); err != nil {
                     log.Println(err)
                }
        }()
        <-state.GracefulShutdown
}

Ah, I think I understand now. The issue is that normally the state.Listener, which gets converted into a overseeerListener would block being closed, so the connection remains open. But if it is run in a go routine, that blocking doesn't happen.  I wonder how to make that happen still.
The issue is that I would like to be able to start up multiple listeners and have zero downtime restarts.


MINOR: Allow Serdes subclasses to access WrapperSerde

This PR loosens access restrictions on WrapperSerde to protected so that users can define a Serdes subclass that provides additional custom serde members following the same pattern as the parent class.
This is my own work and is compatible with Kafka's license.

cc @ijuma @guozhangwang @mjsax

@jklukas I'm wondering what are your custom serdes? If they are for primitive types or general classes it maybe better to just add to Serdes?

@guozhangwang - In my case, I added a serde that translates between JSON and a particular POJO type. The design was based on your JsonPOJOSerializer from the Kafka Streams examples , but specific to that type.
I'd be happy to see a generic Serde for JSON <-> POJO included, but I still expect there will be cases where folks need to define a project-specific Serde and it would be nice to subclass Serdes to include it.
I'd be open to doing the work of incorporating JsonPOJOSerializer/Deserializer into common.serialization as a separate PR.

I think we can consider eventually add JSONPojo as some of the provided serdes in o.a.k.common.serialization, currently due to jar dependency I would suggest hold on that first until we may get a finer grained dependency graph in our client jar.
As for now, in the example code, there are a few of POJO types and I can see benefits of wrapping them in a factory instead of defining each one of them. What is your motivation of extending the Serdes factory for customized serdes, and using that as Serdes.JSON() in streams code, compared with creating an instance at the beginning, and reuse it whenever needed if it is only for a single particular POJO type?

There's no technical reason that I can't create a MyJsonSerde instance and use that in my application, but it introduces an asymmetry between the built-in types and my custom type.
I find this style easier to read:
stream.to(Serdes.String(), Serdes.MyJsonType(), outputTopicName);

as compared to:
stream.to(Serdes.String(), myJsonTypeSerde, outputTopicName);

since both the key and value serdes are accessed from the factory.
Or is the intention of this factory that the user instantiates a single instance of, say, Serde<String> from Serdes.String() and use that single instance throughout the code? Why not have Serdes return singletons so that using Serdes.String() everywhere could be idiomatic? Are Serde subclasses expected to be threadsafe?

Today Serdes.String() gives you a new serde instance, but I'm also considering of using a cached instance at least for those primitive types where serdes do not need to be configured.

As for this specific case, I was not expecting users to extend Serdes before, but thinking about it a bit it may be a good choice. LGTM.

Merged to trunk and 0.10.0.

@guozhangwang, it's a bit late to be adding new APIs to 0.10.0 in common code IMO. Also, I think the name of this class is perhaps not the best for a public API.

@guozhangwang and @ijuma, do you mind reverting the patch out of <IP_ADDRESS> branch? We are in code-freeze while trying to get a release out on that branch, and only accept fixes to critical bugs.

Holding off on this for <IP_ADDRESS> sounds reasonable to me.

@gwenshap @ijuma I agree it is a bad example of last minute API change. Reverted from 0.10.0.


Merge master, fix gosec, add deps

merge master, fix gosec
add hashicorp dependencies to Gopkg.toml

wrong base branch


Documentation on setting up a Genesis environment in production

I'm sure anyone who hasn't worked at Tumblr on the SRE team would likely struggle a bit trying to actually get this going in production. Maybe a guide that instructs what and how to set this up and have it be used in an existing Collins environment and/or any environment?

Also to clarify, I obviously saw the install.md document, I still don't think this really explains how to actually make use of this in a production environment (just what services are needed). I think I'll make a pull request when I get a chance to illustrate what I mean.

Looking forward to the PR. Ty


Added support for triangle strips

Initially discussed here
Strips are supported on all current backends and can be useful in some cases.
The changes are minimal.

Oops, some other commits slipped in in PR. I will redo it, closing.


check it for me pls thx :)

[Enter feedback here]

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

ID: 5da98502-69f3-82fd-14d9-5da825e9d541
Version Independent ID: dcec6cba-5808-7bcd-ea6c-97996eef4593
Content: Configure Ruby apps - Azure App Service
Content Source: articles/app-service/configure-language-ruby.md
Service: app-service
GitHub Login: @cephalin
Microsoft Alias: cephalin

@abbaskiko Can you please help provide us more details? It's not clear right now what your feedback or ask from us is.
We look forward to your reply.

i cant understand what i do ?:|
i working some contract ETH but all transection for me is block
i cant fix it

@abbaskiko Is there an error message that you can share with us?

@abbaskiko,  Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag us (@BryanTrach-MSFT) in your reply and we will gladly continue the discussion.
To better assist you, if you could share the exact steps (section) referencing from the doc and the screenshot (concealing private details) would be helpful for providing better clarity of the issue.
As a side note, this channel is reserved for ‘Azure docs’ feedback- for sharing doc feedback and suggesting content improvements.


Logging sample file rollover before reaches a size of 256MB

Code sample: https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/Logging
I found the the following in code sample: https://github.com/microsoft/Windows-universal-samples/blob/master/Samples/Logging/cs/FileLoggingSessionScenario.cs#L173
/// This handler is called by the FileLoggingSession instance when a log
/// file reaches a size of 256MB.
All log files for me are about 265 KB, it can't reach the 256 MB even if I write the large enough data like the sample Scenario3 does.
Can you have a check? Thanks.

Might simply be a typo. Will check with feature team.

Yup, just a typo. The MSDN documentation correctly says 256KB.


MCQ Issue for trio comments

https://drishyamody.github.io/CSAstudent_T1/2024/11/18/MCQreflection.html

I like how you split up the topics you got wrong, this is going to help when your reviewing for the AP exam. I also found question 25 difficult so talking about it, helped both of our understandings on interfaces.

I like how you specifically showed the units and topics that you missed out on. I liked this because that is definetly something I should have implemented.
I like how you went over each question that you got incorrect and then explained why you got it wrong
It might have been easier if you had pasted the problem itself but overall its an amazing way to summarize the College Board MCQ


Create gitter chat?

I already saw about Telegram chat. And also know about gitter for yandex-tank. Do you think it's a good idea?

Victor (jkee) will make decision.
I am a bit afraid of too many chats.


"BadZipFile: File is not a zip file" Error Message

Hi, I went through all the steps, and when I ask it to "dream" I get a popup error message, here are the contents:
BadZipFile
Python 3.8.1: C:\Program Files\Krita (x64)\bin\krita.exe
Tue Sep  6 23:31:46 2022
A problem occurred in a Python script.  Here is the sequence of
function calls leading up to the error, in the order they occurred.
C:\Users\Desktop\AppData\Roaming\krita\pykrita\koi\koi.py in pingServer(self=<koi.koi.Koi object>)
157         # wait for response and read image
158         with request.urlopen(response_url, timeout=self._get_timeout()) as response:
159             archive = ZipFile(BytesIO(response.read()))
160             filenames = archive.namelist()
161             for name in filenames:
archive undefined
global ZipFile = <class 'zipfile.ZipFile'>
global BytesIO = <class '_io.BytesIO'>
response = <http.client.HTTPResponse object>
response.read = <bound method HTTPResponse.read of <http.client.HTTPResponse object>>
C:\Program Files\Krita (x64)\zipfile.py in init(self=<zipfile.ZipFile [closed]>, file=<_io.BytesIO object>, mode='r', compression=0, allowZip64=True, compresslevel=None, strict_timestamps=True)
C:\Program Files\Krita (x64)\zipfile.py in _RealGetContents(self=<zipfile.ZipFile [closed]>)
BadZipFile: File is not a zip file
cause = None
class = <class 'zipfile.BadZipFile'>
context = None
delattr = <method-wrapper 'delattr' of BadZipFile object>
dict = {}
dir =
doc = None
eq = <method-wrapper 'eq' of BadZipFile object>
format =
ge = <method-wrapper 'ge' of BadZipFile object>
getattribute = <method-wrapper 'getattribute' of BadZipFile object>
gt = <method-wrapper 'gt' of BadZipFile object>
hash = <method-wrapper 'hash' of BadZipFile object>
init = <method-wrapper 'init' of BadZipFile object>
init_subclass =
le = <method-wrapper 'le' of BadZipFile object>
lt = <method-wrapper 'lt' of BadZipFile object>
module = 'zipfile'
ne = <method-wrapper 'ne' of BadZipFile object>
new =
reduce =
reduce_ex =
repr = <method-wrapper 'repr' of BadZipFile object>
setattr = <method-wrapper 'setattr' of BadZipFile object>
setstate =
sizeof =
str = <method-wrapper 'str' of BadZipFile object>
subclasshook =
suppress_context = False
traceback =
weakref = None
args = ('File is not a zip file',)
with_traceback =
The above is a description of an error in a Python program.  Here is
the original traceback:
Traceback (most recent call last):
File "C:\Users\Desktop\AppData\Roaming\krita\pykrita\koi\koi.py", line 159, in pingServer
archive = ZipFile(BytesIO(response.read()))
File "zipfile.py", line 1267, in init
File "zipfile.py", line 1334, in _RealGetContents
zipfile.BadZipFile: File is not a zip file
I really have no idea what to do, I appreciate any help you can offer!

same here

hey guys, that can mean a few things
(1) something went wrong with the backend (colab or local) and it's returning an error instead of the usual zipfile. This can happen if your ngrok trial-thing runs out or if the colab backend has disconnected. First thing to do is look at what happens on the backend whenever you get that error.
(2) you are running the new version of the plugin (which expects a zip file) but an old version of the backend (which serves single images). Check the code which is running your backend (e.g. the colab notebook) to see if it contains any mention of a "zipfile". If so, you're fine, if not you will need to download (i.e. pull the latest master) a newer version of the backend and use that instead.
Hope this helps.

I have found an issue where if you are using the local backend, zipfiles are not being sent as they should be. In order to fix this, you have to use the version of server.py from this branch of my  own personal fork.
I have verified that the fix works on my own local computer.
or wait for the main branch of this repo to be updated to include that fix and pull it then (this should be within the next 12 hours) @nousr can you post here when this fix has occurred.
NOTE: if you are using colab this issue will not be effecting you, and you are possibly using an outdated version of the colab backend. The one on main now will not experience the zip issue.

@tieguyny @johantri @Lewington-pitsos
should be fixed, feel free to re-open if more issues occur

I am getting the zip-file error as well. I am using colab and I just cloned from master half an hour ago.
I don't see how it could be an outdated version.

@Syannako I pushed an update that will hopefully lower the VRAM requirements.
If you run into more issues it seems like there's one more option we can go with, although I don't know how it will affect the speed.
lmk

Thank you @nousr @Lewington-pitsos it works now!


Thanks and little issues

First, glad to have inspired this and thank you for referring ts-json-schema-decorator. It's been years I didn't maintain it and I have so much to do in it (like typings &c) that I'm really not sure to maintain it. Hence, if you are still active here, I could refer your library in my README.md and join forces on good bases.
2 little issues I noticed:

The type Constructable<any> is not exposed. As I wish to create a function who calls generateJsonSchema on an argument, I had to c/p the definition in my .d.ts
It seems the type is not retrieved automatically :

	@Required()
	@Format('email')
	email!: string

will give the entry
    email: { type: 'null', format: 'email' },

PS: It behaves the same even without the !, with just email: string

Hi, thanks for checking out my project and for creating ts-json-schema-decorator, which inspired my library a lot as I'm also a fan of the new decorators! I'm still a bit active, as I use this library for a lot of my own projects. Bugs should get fixed, just not sure, if I'm going to be adding any big features.
As for the issues, I've quickly exported the Constructable interface and created a quick test in a new branch, but I can't reproduce the type issue. I guess you edited your tsconfig to include the experimental options, could you maybe create a tiny example project for me to fix your issue with?


Authorize user to MyGet & NuGet package endpoint

Is your feature request related to a problem? Please describe.
To publish packages, we have to authorize an user to the MyGet and NuGet sources.
Describe the solution you'd like

Use the arcus-automation user and create a Service Connection to MyGet and NuGet.
Create a new user and create a Service Connection to MyGet and NuGet.

Created!


PS: non-reachable non-core AS causes DDoS on cPSes

If a popular non-core AS is unreachable, its core ASes will be hammered by frequent requests for down-segments to the unreachable AS. This is because the path lookup mechanism is entirely polling-based, so there's no way for remote ISDs to know when new down-segments are available. They could use exponential backoff, but it doesn't help a lot, as the maximum backoff has to still be fairly small, otherwise the reachability outage will last a lot longer than the connectivity outage.
As the problem is the polling model, my proposal is that we add a pubsub model, at least for this case. Remote core ASes would subscribe to the unreachable AS's core to be notified when down-segments are available. That way they only need to send a small amount of traffic, and still get notified quickly when service returns.

Pub/Sub models are no longer on the table for the path construction process. The Go core PS in the remote ISD removes the need for multiple segment requests by replying with both segments and revocations. I assume this can be closed now?

This is mitigated by the new path lookup strategy with caching. We only get new segments every 5 minutes (configurable). It isn't optimal if an AS isn't reachable via a segment and then registers another, but this should be a rare case (and shouldn't be the case for a popular AS in the first place).


Examine Synchronization between PE Custom Resource and Pod deployed

During unofficial testing using Docker for Mac with Kubernetes option turned on and a single PE job running for over 10 hours I observed that there were several Pods for the pe running that were started through the night:
[bmwilli@bmwillimacbookpro metrics]$k get pods
NAME                                         READY   STATUS    RESTARTS   AGE
grafana-streams-8f6d9647d-vqc2z              1/1     Running   0          16h
headstails-0-387ar                           1/1     Running   0          6h38m
headstails-0-5yseq                           1/1     Running   0          56m
headstails-0-9gevd                           1/1     Running   0          8h
headstails-0-d29hx                           1/1     Running   0          10h
headstails-0-diijn                           1/1     Running   0          171m
headstails-0-idtk0                           1/1     Running   0          123m
headstails-0-jvm7z                           1/1     Running   0          10h
headstails-0-obxce                           1/1     Running   0          3h28m
headstails-0-oklhs                           1/1     Running   0          9h
headstails-0-p84im                           1/1     Running   0          13h
headstails-0-qmnul                           1/1     Running   0          5h12m
headstails-0-rpmvp                           1/1     Running   0          6h4m
headstails-0-thlus                           1/1     Running   0          7h27m
headstails-0-vz78n                           1/1     Running   0          12h
headstails-0-wvljz                           1/1     Running   0          63m
headstails-0-x0lud                           1/1     Running   0          11m
headstails-0-zlrmk                           1/1     Running   0          11h
prometheus-operator-84fbc56c9f-8hzvp         1/1     Running   0          16h
prometheus-streams-0                         3/3     Running   1          16h
streams-instance-operator-78977b7cb9-vx8l2   2/2     Running   0          13h

Pe Launch Count was at 2:
headstails-0   Full           2

Job state was submitted and generation 0
headstails   Submitted   0

I will do more testing and capturing of DEBUG or TRACE logs of the controller

multicopy.txt
I ran the test again on my mac over a 3 hour period.  Here is the log file.
This test resulted in
grafana-streams-8f6d9647d-vqc2z              1/1     Running   0          27h
headstails-0-q8b2q                           1/1     Running   0          129m
headstails-0-u2q8q                           1/1     Running   0          24m
headstails-0-uwbsn                           1/1     Running   0          76m
prometheus-operator-84fbc56c9f-8hzvp         1/1     Running   0          27h
prometheus-streams-0                         3/3     Running   1          27h
streams-instance-operator-78977b7cb9-l25kb   2/2     Running   0          130m

NAME         STATUS      GENERATION
headstails   Submitted   0

NAME           CONNECTIVITY   LAUNCH
headstails-0   Full           1

Looks like the WebSocket of the API watcher gets prematurely disconnected:
2021-02-20 00:18:25 DEBUG [tchConnectionManager:283 ] WebSocket close received. code: 1000, reason:

As a result, it reconnects to the API server and sends back previous events to the controllers. Some similar issues here:
https://github.com/fabric8io/kubernetes-client/issues/1602
I'll look into it.

I'm going to investigate moving away from the microbean controller. Fabric8 has added the controller pattern, it would be easier to remove one dependency and track fabric8 newer version.

Tracked here: #16, closing.


Search Only Returns Values for the First Job or School in User Profile

Steps

Go to user profile.
Click Employment
Create a First Employer
Create a uniquely named second Employer, for example, "Pizza Snack Bread Shack"
Search for "Pizza Snack Bread Shack" on the osf

Expected
You would find the person who worked at the Pizza Snack Bread Shack
Actual
You do not find the person who worked at the Pizza Snack Bread Shack

@brandonPurvis -- maybe you can look at this one in regards to search?

I remember working on both search and user jobs last year, and I can tell you that the problem here is specifically with the user doc portion of website/search/elastic_search.py.
Also, I remember that this was done purposefully, though I cannot remember why, but it also applies to contributor searches.
Finally, when someone fixes this, they will also need to fix it for schools, since it doesn't make sense to only be able to search previous jobs but not previous schools.

That's good information.  @XTech2K, do you remember someone else who might know the use case that searching all jobs and schools might cause a problem?  I can't think of what it might be.

I can work on this.
One reason it was done this way might have been that in search results, the employer the user ranks the highest is shown under the users name. Searching for an employer and getting results which show people who's displayed employer doesn't match the given query might be confusing.
Ensuring users who's highest ranked employer/school matches the query appear first in the results should avoid this problem.

:+1:

@brandonPurvis, that sounds like a good idea.  I like you weighting the search for the first matched job or school.  Smart.
@lbanner, Maybe I should file an issue for this other problem? (only first job shows in search results)  There is no reason to only show the first job as opposed to the matched search result.  To the user, there is no weight on which job they enter first.  They might be filling them out chronologically, oldest to newest.  Then on a search of Center for Open Science, it would still say I still worked at AOL.  :scream:


[rInput] Add basic support for scancodes

Currently raylib does not expose the scancode data for keyboard input received from the platform. This makes it VERY hard to build keyboard bindings that work with different keyboard mappings and localizations. They KeyboardKey enum is just the physical keys and does not take the keyboard mapping into account. For most game input this is fine, as you want the physical key, but there are use cases where you need local mapping of non-text keys.
GetCharPressed handles the mapping, but only for printable characters.
Any user that wants the 'logical' key that is provided by the keyboard mapping as no way to get this data.
The data was passed to the keyboard input functions of most platforms, but the raylib key system has no place to store it.
In SDL this scancode is the 'virtual key'
This PR adds GetKeyPressedPro that takes an optional scancode to fill out, allowing people to see the localized key for each event.
Platforms that don't provide a scancode set the code to -1.
I don't know if this should go into 5.5 or if we should discuss the API for the future. This is just the smallest possible change to raylib to expose the data that it's currently ignoring. I am just posting this so it doesn't get lost.

@JeffM2501 I see the issue but I want to review this change more carefully, waiting after 5.5 release for further discussion.

@JeffM2501 I see the issue but I want to review this change more carefully, waiting after 5.5 release for further discussion.

Absolutely understandable

Per our discussion on discord.
GLFW calls the KeyboardKey value "key" and the mapped value ScanCode
SDL calls the KeyboardKey value scancode, and the mapped value the  "SDL virtual keysym" https://wiki.libsdl.org/SDL2/SDL_Keysym
This is very confusing.
I think we should come up with our own names for these things and let the platform map as needed.

Yes, after good discussion and research, it has been shown that GLFW doesn't support a mapped value, so this entire PR is pointless while GLTF is the default backend. I am going to close it and open a discussion where we can talk about what we want raylib to expose and come up with use cases.

I think the pair struct is valuable. mappedcode seems awkward (and I wonder about the absence of camelCase).
For me, I think of it as scanCode versus keyTop. And of course, that would normally depend on a keyboard binding, with a QWERTY ANSI keyboard the default. So that's murky too, since shift-state is also reflected. On the other hand, it might be more helpful for people to understand at least the default situation. Not proposing anything, just musing about the awkwardness of this situation.

@JeffM2501
I await the Discussion to be opened.  Meanwhile, I keep obsessing about this complicated situation.  I think there are 2+ cases and tensions with an application's usability (UX) and internationalization (i18n).  In particular, dialogs that specify keypresses for actions (e.g., the famous WASD on US-ANSI keyboards and similar ones based on Roman alphabets).  Accessibility (a11y) might also factor in, along with IME.
I am tempted to suggest that "mapped code" should be "keyedChar" (depending on type, since might not be u8, maybe "keyedGlyph" but might be more accurate but not so understandable) that provides coordination with what an user sees themselves keying and what the application recognizes as keyed if reflected in a message and especially in an action.
Somehow, the default case should just work in alignment with the original impetus for raylib (namely BGI) and the idea of simplicity.
The question then becomes how to address some of these more-expanded use cases and computer configurations while being as simple as possible (but no simpler) in the main and in line with raylib as a learning instrument for graphical applications.

I have created a discussion topic here
https://github.com/raysan5/raylib/discussions/4595


Commit to encryption at rest externally

Our current privacy policy does not commit to encryption at rest. We need to update it (with help from Legal?) to contain language that commits to it.

Per conversation with @maniarathi, this is not required per our current use cases. Closing


upgrades package prevents hardhat compiler errors from reaching the console

Thanks for reporting!
I was able to reproduce this but only when the error is a "stack too deep" error. Otherwise compiler errors do get through, which is why we hadn't seen this before.

Fixed in latest.


Bones are disconnected

Hello, I really appreciate for the tool! It's really helpful.
However, I have an issue - the bones are disconnected if load from w2mesh, w2ent.
Only if I load w2rig I have an option to connect bones. But it's hard to say what rig the model is using. So, I usually load w2ent files and get bones disconnected.
Please help me

The bones are disconnected by design in w2mesh files. Only the w2rig has the hierarchy data.
If you use the "Import Character" button in the n-Panel you can load a character or monster .w2ent and it will attach the w2mesh to the w2rig automatically. You can also use "Add Constraints" to manually attach a mesh to be driven by a rig.
The character tab will also show what rigs are being used.

Alternatively you can just merge the both the mesh and rig together into a single armature.

For some reason I don't use n-panel. thank you :p


Additions of Financial Data (Results & Annual Reports)

Financial Tab -> Annual Reports :
https://www.bseindia.com/stock-share-price/tata-motors-ltd/tatamotors/500570/financials-annual-reports/
Financial Tab -> Results :
https://www.bseindia.com/stock-share-price/tata-motors-ltd/tatamotors/500570/financials-results/
Prior Period:
https://www.bseindia.com/corporates/Comp_Results.aspx?Code=500570

can you please assign me this issue

This feature is outside the scope of this library


style: 🛁 linting

Description
Linting
Type of change

[X] Style

How Has This Been Tested?

[X] Linting

Checklist:

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[X] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] Any dependent changes have been merged and published in downstream modules

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

Project coverage is 13.66%. Comparing base (35b2278) to head (934a1e2).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #99   +/-   ##
=======================================
  Coverage   13.66%   13.66%
=======================================
  Files           7        7
  Lines        1881     1881
=======================================
  Hits          257      257
  Misses       1624     1624

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


Vanilla blazor CSB (wasm)

A blazor project template for client-side blazor without bootstrap/other styling.
I would also think the default sample pages (Counter, FetchData etc) should be removed.

Draft: https://github.com/blazor-templates/VanillaWasm

Initial version: https://github.com/blazor-templates/blazor-templates/tree/main/templates/VanillaWasm


add mimetypes library #17

as I mentioned in previous comments, none of the python libraries I tried has full coverage over all the extensions and their mimetypes.
The identify_mimetype() function is now returning 'application/octet-stream' for the extensions these libraries doesn't cover.

@adtyanair Thanks for the PR, looks good to me. Good Job

closes #17


Install via Homebrew is not working again ?

Is there an existing issue for this?

[X] Yes, I have searched the existing issues
[X] Yes, I have checked troubleshooting page

The problem
First of all, the prompt is really great. Thanks to all for putting this together.
brew install spaceship does not work on my MacBook. I have a Pro with M1 and Monterey 12.2.1 and i use iTerm2.
Currently i installed spaceship by manual cloning the repo and adding the symlink as described in README.md. This works fine but it would be very nice if i can get updates just by running brew since i use it for nearly all other software packages.
I found that there already was in issue for this: #90
But also adding these two lines
autoload -U promptinit; promptinit
prompt spaceship

to my .zshrc file didn't worked for me.  When i restart my terminal it just stays at the default prompt.
Relevant Zsh configuration
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="spaceship"

What is version of Spaceship are you using?
v3.16.4
What is version of Zsh are you using?
zsh 5.8 (x86_64-apple-darwin21.0)
What operation system are you running?
macOS
Do you use any Zsh framework or plugin manager?
No response
Which terminal emulator do you use?
iTerm
Additional information
No response

Having the same issue. Also running macOS Monterey with an M1 processor and I'm using iTerm2. Manual repo works fine for me too, but I want to be able to install and update via brew for the sake of my dotfiles.

Found a workaround solution. Type out the path to the spaceship theme file in your .zshrc. In my case, it looks like this in mine:
autoload -U promptinit; promptinit
prompt /opt/homebrew/Cellar/spaceship/3.16.4/share/zsh/site-functions/prompt_spaceship_setup

You can find the path to your spaceship install through Homebrew by typing brew list spaceship and selecting the directory containing share/zsh/site-functions/prompt_spaceship_setup . Copy and paste that into your .zshrc file and reload your shell, and it should be set up correctly.

I found a more reliable solution here: https://github.com/spaceship-prompt/spaceship-prompt/issues/1057#issuecomment-981133419
Just add Homebrew's site functions to your fpath in zshrc: fpath=( "$HOMEBREW_PREFIX/share/zsh/site-functions" $fpath )

This should be resolved by 4.x. Please upgrade.


updated to nr1 nerdpack: clone

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


update FAQ with some basic how-to-use flatpak app

this pr adds some basic information on using the flatpak application

Merged. Thank you for your contribution @tssc7my0no7!