No response from RestInput on running custom actions

Rasa Core version:
0.12.3
Python version:
Python 3.6.5 :: Anaconda, Inc.
Operating system (windows, osx, ...):
MacOS
Issue:
I have made a basic bot with 5 intents and 2 custom actions. The bot runs perfectly fine while I run it on my cmdline and it is making the appropriate API calls through the custom actions as I want it to.
I am trying to use the RestInput channel to extend my bot's domain. I have followed the instructions in the documentation. I run the following command, I have also tried using different ports
python -m rasa_core.run -d models/dialogue -u models/nlu/current  --port 5002 --credentials credentials.yml

I also had my custom actions running with this command
python -m rasa_core_sdk.endpoint --actions actions

I also have my credentials file defined as described in the docs. I am using postman to POST user inputs and get a response back at the following address: http://localhost:5002/webhooks/rest/webhook
Now I am able to get a response back for the basic "greet" intent as I expect it to be. But when I follow that up with another input which is supposed to run a custom action for me, I just get a [ ] response back and an exception error, I tried that for both my custom actions. Just to remind you these custom actions work perfectly fine on the cmdline.
Here is the exception error I get, it is also followed by a 200
2018-12-26 22:59:20 ERROR    rasa_core.processor  - Encountered an exception while running action 'wolfram_alpha'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
<IP_ADDRESS> - - [2018-12-26 22:59:20] "POST /webhooks/rest/webhook HTTP/1.1" 200 110 0.026883

Am I missing something that needs to be done here? Or is this a bug? How else would you suggest doing it? Do I need to import something somewhere in my actions.py file or the main dialogue runner file? I would be happy to see an example which works, I just want to connect my very basic bot to a web UI but right now I am just trying to get responses back.
I don't think I need to post my files for this since I have cross checked it is working on the cmdline.

Hi @samarth12,
You are using an endpoint for your actions without specifying an endpoint config.  Try creating an endpoints.yml as in this part of the docs and passing it with the first command using --endpoints endpoints.yml

Hello @MetcalfeTom,
Thanks for pointing that out, I missed passing my action endpoints. But sadly it still doesn't solve the problem, it gives me a 404 while I run it using the following command and again it is working perfectly fine on the local cmdline.
python -m rasa_core.run -d models/dialogue -u models/nlu/default/current --port 5001 --credentials credentials.yml --endpoints endpoints.yml

Here is endpoints.yml
action_endpoint:
  url: "http://localhost:5055/webhook/"

I get a "POST /webhook/ HTTP/1.1" 404 342 0.000529" on my action endpoint server. Below is the error I get when I make a post call through POSTMAN which should technically make an API call to run the action.
2018-12-27 02:29:47 ERROR    rasa_core.actions.action  - Failed to run custom action 'action_weather'. Action server responded with a non 200 status code of 404. Make sure your action server properly runs actions and returns a 200 once the action is executed. Error: 404 Client Error: NOT FOUND for url: http://localhost:5055/webhook/
2018-12-27 02:29:47 ERROR    rasa_core.processor  - Encountered an exception while running action 'action_weather'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
<IP_ADDRESS> - - [2018-12-27 02:29:47] "POST /webhooks/rest/webhook HTTP/1.1" 200 110 0.209247

OK well we're one step closer!
Could you also try adding the --enable_api flag to the rasa_core.run command as in the docs here

Okay so I followed up and used the --enable_api flag. I tried using the same command with my endpoints as in the docs and then I also tried adding the flag to the command I have been using for the RestInput. Here are the two commands I used
python -m rasa_core.r-enable_api -d models/dialogue -u models/nlu/default/current -o out.log --endpoints endpoints.yml

python -m rasa_core.run -d models/dialogue -u models/nlu/default/current --port 5001 --credentials credentials.yml --endpoints endpoints.yml --enable_api

When I try a POST on  http://localhost:5002/webhooks/rest/webhook, I am again able to receive a response for the basic "greet" intent which doesn't use a custom action for the response. But I get the same error as before whenever it has to use a custom action. This is the same error I get for both the command above
2018-12-27 13:36:53 ERROR    rasa_core.actions.action  - Failed to run custom action 'wolfram_alpha'. Action server responded with a non 200 status code of 404. Make sure your action server properly runs actions and returns a 200 once the action is executed. Error: 404 Client Error: NOT FOUND for url: http://localhost:5055/webhook/
2018-12-27 13:36:53 ERROR    rasa_core.processor  - Encountered an exception while running action 'wolfram_alpha'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
<IP_ADDRESS> - - [2018-12-27 13:36:53] "POST /webhooks/rest/webhook HTTP/1.1" 200 142 0.061674

I am not sure why this is happening. Thank you @MetcalfeTom  for being so responsive!

Could you post your logs from the action server?  Since you are able to get responses then it narrows down the problem.  Are you importing from rasa_core_sdk in your actions.py and not from rasa_core?

Yes, I am importing from rasa_core_sdk. I will post my logs below with all the possible details I can provide you.
Actions SDK just returns a 404 error whenever the APIs need to be called, the thing I do not get is that works perfectly fine on the cmd line.
INFO:__main__:Starting action endpoint server...
INFO:rasa_core_sdk.executor:Registered function for 'action_weather'.
INFO:rasa_core_sdk.executor:Registered function for 'wolfram_alpha'.
INFO:__main__:Action endpoint is up and running. on ('<IP_ADDRESS>', 5055)
<IP_ADDRESS> - - [2019-01-01 12:00:27] "POST /webhook/ HTTP/1.1" 404 342 0.009915
<IP_ADDRESS> - - [2019-01-01 12:00:53] "POST /webhook/ HTTP/1.1" 404 342 0.001687

Here are my localhost logs
2019-01-01 12:00:27 ERROR    rasa_core.actions.action  - Failed to run custom action 'action_weather'. Action server responded with a non 200 status code of 404. Make sure your action server properly runs actions and returns a 200 once the action is executed. Error: 404 Client Error: NOT FOUND for url: http://localhost:5055/webhook/
2019-01-01 12:00:27 ERROR    rasa_core.processor  - Encountered an exception while running action 'action_weather'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
<IP_ADDRESS> - - [2019-01-01 12:00:27] "POST /webhooks/rest/webhook HTTP/1.1" 200 142 0.077290
2019-01-01 12:00:53 WARNING  py.warnings  - /anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.
  if diff:

2019-01-01 12:00:53 ERROR    rasa_core.actions.action  - Failed to run custom action 'wolfram_alpha'. Action server responded with a non 200 status code of 404. Make sure your action server properly runs actions and returns a 200 once the action is executed. Error: 404 Client Error: NOT FOUND for url: http://localhost:5055/webhook/
2019-01-01 12:00:53 ERROR    rasa_core.processor  - Encountered an exception while running action 'wolfram_alpha'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
<IP_ADDRESS> - - [2019-01-01 12:00:53] "POST /webhooks/rest/webhook HTTP/1.1" 200 142 0.073290

You can see I tried calling both the APIs and get the same error. Also if I didn’t mention before, everything other than API calls is returning a response on postman as it should.
Here are more detailed logs. My first input is: “Hello my name is Mark”. I get a response back, my next input is: “Who is the president of US?” where it should call the Wolfram API. The same thing happens with weather API if I change my input to: “What is the weather in London?”
2019-01-01 12:18:44 INFO     root  - Rasa Core server is up and running on http://localhost:5005
Bot loaded. Type a message and press enter (use '/stop' to exit):
2019-01-01 12:18:57 DEBUG    rasa_core.tracker_store  - Creating a new tracker for id 'Rasa'.
2019-01-01 12:18:57 WARNING  py.warnings  - /anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.
  if diff:

2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Received user message 'Hello my name is Mark' with intent '{'name': 'greet', 'confidence': 0.5992243649211548}' and entities '[{'start': 17, 'end': 21, 'value': 'mark', 'entity': 'PERSON', 'confidence': 0.6440988744205052, 'extractor': 'ner_crf'}]'
2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Logged UserUtterance - tracker now has 3 events
2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Current slot values:
	PERSON: mark
	location: None
2019-01-01 12:18:57 DEBUG    rasa_core.policies.memoization  - Current tracker state [None, None, None, {}, {'entity_PERSON': 1.0, 'prev_action_listen': 1.0, 'intent_greet': 1.0, 'slot_PERSON_0': 1.0}]
2019-01-01 12:18:57 DEBUG    rasa_core.policies.memoization  - There is no memorised next action
2019-01-01 12:18:57 DEBUG    rasa_core.policies.ensemble  - Predicted next action using policy_1_KerasPolicy
2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Predicted next action 'utter_greet' with prob 0.30.
2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Action 'utter_greet' ended with events '[]'
2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Bot utterance 'BotUttered(text: Hello mark! How can I help?, data: {
  "elements": null,
  "buttons": null,
  "attachment": null
})'
2019-01-01 12:18:57 DEBUG    rasa_core.policies.memoization  - Current tracker state [None, None, {}, {'entity_PERSON': 1.0, 'prev_action_listen': 1.0, 'intent_greet': 1.0, 'slot_PERSON_0': 1.0}, {'prev_utter_greet': 1.0, 'entity_PERSON': 1.0, 'intent_greet': 1.0, 'slot_PERSON_0': 1.0}]
2019-01-01 12:18:57 DEBUG    rasa_core.policies.memoization  - There is no memorised next action
2019-01-01 12:18:57 DEBUG    rasa_core.policies.ensemble  - Predicted next action using policy_1_KerasPolicy
2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Predicted next action 'action_listen' with prob 0.87.
2019-01-01 12:18:57 DEBUG    rasa_core.processor  - Action 'action_listen' ended with events '[]'
<IP_ADDRESS> - - [2019-01-01 12:18:57] "POST /webhooks/rest/webhook HTTP/1.1" 200 203 0.257879
2019-01-01 12:19:51 DEBUG    rasa_core.tracker_store  - Recreating tracker for id 'Rasa'
2019-01-01 12:19:52 WARNING  py.warnings  - /anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.
  if diff:

2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Received user message 'Who is the president of US' with intent '{'name': 'information', 'confidence': 0.6909834200535575}' and entities '[]'
2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Logged UserUtterance - tracker now has 7 events
2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Current slot values:
	PERSON: mark
	location: None
2019-01-01 12:19:52 DEBUG    rasa_core.policies.memoization  - Current tracker state [None, {}, {'entity_PERSON': 1.0, 'prev_action_listen': 1.0, 'intent_greet': 1.0, 'slot_PERSON_0': 1.0}, {'prev_utter_greet': 1.0, 'entity_PERSON': 1.0, 'intent_greet': 1.0, 'slot_PERSON_0': 1.0}, {'intent_information': 1.0, 'prev_action_listen': 1.0, 'slot_PERSON_0': 1.0}]
2019-01-01 12:19:52 DEBUG    rasa_core.policies.memoization  - There is no memorised next action
2019-01-01 12:19:52 DEBUG    rasa_core.policies.ensemble  - Predicted next action using policy_1_KerasPolicy
2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Predicted next action 'wolfram_alpha' with prob 0.70.
2019-01-01 12:19:52 DEBUG    rasa_core.actions.action  - Calling action endpoint to run action 'wolfram_alpha'.
2019-01-01 12:19:52 ERROR    rasa_core.actions.action  - Failed to run custom action 'wolfram_alpha'. Action server responded with a non 200 status code of 404. Make sure your action server properly runs actions and returns a 200 once the action is executed. Error: 404 Client Error: NOT FOUND for url: http://localhost:5055/webhook/
2019-01-01 12:19:52 ERROR    rasa_core.processor  - Encountered an exception while running action 'wolfram_alpha'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Failed to execute custom action.
Traceback (most recent call last):
  File "/anaconda3/lib/python3.6/site-packages/rasa_core/actions/action.py", line 338, in run
    response.raise_for_status()
  File "/anaconda3/lib/python3.6/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND for url: http://localhost:5055/webhook/

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/anaconda3/lib/python3.6/site-packages/rasa_core/processor.py", line 351, in _run_action
    events = action.run(dispatcher, tracker, self.domain)
  File "/anaconda3/lib/python3.6/site-packages/rasa_core/actions/action.py", line 358, in run
    raise Exception("Failed to execute custom action.")
Exception: Failed to execute custom action.
2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Action 'wolfram_alpha' ended with events '[]'
2019-01-01 12:19:52 DEBUG    rasa_core.policies.memoization  - Current tracker state [{}, {'entity_PERSON': 1.0, 'prev_action_listen': 1.0, 'intent_greet': 1.0, 'slot_PERSON_0': 1.0}, {'prev_utter_greet': 1.0, 'entity_PERSON': 1.0, 'intent_greet': 1.0, 'slot_PERSON_0': 1.0}, {'intent_information': 1.0, 'prev_action_listen': 1.0, 'slot_PERSON_0': 1.0}, {'intent_information': 1.0, 'prev_wolfram_alpha': 1.0, 'slot_PERSON_0': 1.0}]
2019-01-01 12:19:52 DEBUG    rasa_core.policies.memoization  - There is no memorised next action
2019-01-01 12:19:52 DEBUG    rasa_core.policies.ensemble  - Predicted next action using policy_1_KerasPolicy
2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Predicted next action 'action_listen' with prob 0.98.
2019-01-01 12:19:52 DEBUG    rasa_core.processor  - Action 'action_listen' ended with events '[]'
<IP_ADDRESS> - - [2019-01-01 12:19:52] "POST /webhooks/rest/webhook HTTP/1.1" 200 142 0.094410

And I will also attach my custom actions file, it just making two API calls.
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals

from rasa_core_sdk import Action
from rasa_core_sdk.events import SlotSet

class ActionWeather(Action):
	def name(self):
		return 'action_weather'

	def run(self, dispatcher, tracker, domain):
		from apixu.client import ApixuClient
		api_key = '166346e9c078430e8be180449183010' #your apixu key
		client = ApixuClient(api_key)

		loc = tracker.get_slot('location')
		current = client.getCurrentWeather(q=loc)

		country = current['location']['country']
		city = current['location']['name']
		condition = current['current']['condition']['text']
		temperature_c = current['current']['temp_c']
		humidity = current['current']['humidity']
		wind_mph = current['current']['wind_mph']

		response = """It is currently {} in {} at the moment. The temperature is {} degrees, the humidity is {}% and the wind speed is {} mph.""".format(condition, city, temperature_c, humidity, wind_mph)

		dispatcher.utter_message(response)
		return [SlotSet('location',loc)]

class Wolfram(Action):
	def name(self):
		return 'wolfram_alpha'

	def run(self, dispatcher, tracker, domain):
		import wolframalpha
		app_id = "GY456T-KJ5RKTA4W9"
		input = tracker.latest_message["text"]
		print(input)
		client = wolframalpha.Client(app_id)
		res = client.query(input)
		answer = next(res.results).text
		response = answer
		dispatcher.utter_message(response)
		return


eslint/typescript: more improvements

This PR adds some more ts related rules + some more typescript flags towards strictness.
I also found out that not all files were linted because path in package.json was not quoted.
It revealed few more lint issues which I have fixed in last commit.

I will work on unit tests for clusters.
That will also help me type it properly when I see the actual data it processes.


Add possibility to change display colors

Change the colors name in the script to more semantic names, i.e.:
C_BLUE: C_REPO
C_MAGENTA: C_BRANCH
C_YELLOW: C_NO_REMOTE
C_RED: C_NOT_SYNC
C_GREEN: C_CLEAN
C_CYAN: C_LOGS
C_WHITE: removed because unused
Also add the possibility to create a theme file (.theme.gws)
enabling to override colors (by assigning in bash the actual vars).
The theme file will then contain bash lines e.g.:
C_NO_REMOTE="\e[7m\e[91m"
Closes #23

Thanks :+1:


Gradio app subsequent gens don't redo the transcribing correctly

Checks

[X] This template is only for bug reports, usage problems go with 'Help Wanted'.
[X] I have thoroughly reviewed the project documentation but couldn't find information to solve my problem.
[X] I have searched for existing issues, including closed ones, and couldn't find a solution.
[X] I confirm that I am using English to submit this report in order to facilitate communication.

Environment Details
Win11
Steps to Reproduce
Latest git pull,
Use Gradio,
Try different voices (without transcription), get app to auto-transcribe,
App messes up transacriptions on new audio clips,
Have to refresh window in (chrome) in order for it to reset
✔ Expected Behavior
Should transcribe audio each new clip you put in, and clear the cache
❌ Actual Behavior
No response

as suggested by this template
any detailed info, e.g. screenshots?

My bad, I didn't realize I was adding the text to the wrong window.


[Feature] Display response data in HEX.

Motivation
I'm working with cbor encoded data. There is a feature to send cbor encoded payload in hex, but there is no option to view data in HEX. Having a functionality to display response messages in hex/plaintext/base64/json would really help.

Yes. This is exactly what I was looking for. I must have missed it.
Thanks.


Unable to Run the project

I have update the .bashrc and install the package. I am getting following error.
ERROR in ./src/index.js
Module build failed: ReferenceError: Unknown plugin "add-module-exports" specified in "/Users/webwerks/Documents/Darshana/LoomiClient/Workspace/loomitNeoGit/loomimarketingwebsite/.babelrc" at 0, attempted to resolve relative to "/Users/webwerks/Documents/Darshana/LoomiClient/Workspace/loomitNeoGit/loomimarketingwebsite"

Are you installing react-reveal via NPM? You should install it like so:
npm install react-reveal --save

and if you need Fade import it like this (from the docs)
import Fade from 'react-reveal/Fade';

It looks like what you're trying to do is to import it from source files which wouldn't work as you need the transpiled output.

Yes I am doing the same way. I shall try once again and update you.

Hmmm, if it's installed via npm then react-reveal errors should generally come from node_modules folder. I see that's not the case in here. Perhaps, you have some problem with your Babel configuration (say add-module-exports is missing) ?

Following thing where added for these changes :

.bablerc
{
"presets": [
"react",
"es2015",
"stage-2"
],
"plugins": [
"add-module-exports",
"transform-runtime"
]
}

webpack.config.js
loaders:[
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
},
]

npm install babel-plugin-transform-runtime babel-preset-es2015 babel-preset-stage-2 --save

npm i babel-plugin-add-module-exports babel-preset-es2015 babel-preset-stage-2 --save

Worked for me.
Cheers


[WPF] ComboBox SelectionChanged behavior

After upgrade to .NET Framework 4.7.2 I noticed a strange behavior of the ComboBox when it is into a DataGridTemplateColumn.CellEditingTemplate.
<DataGrid         IsReadOnly="False"         ItemsSource="{Binding Path=Items, Mode=OneWay}">         <DataGrid.Columns>             <DataGridTemplateColumn                 Header="Test"                 IsReadOnly="False"                 Width="70">                 <DataGridTemplateColumn.CellTemplate>                     <DataTemplate>                         <TextBlock                             VerticalAlignment="Center"                             TextAlignment="Left"                             Text="{Binding Path=Id, Mode=OneWay}" />                     </DataTemplate>                 </DataGridTemplateColumn.CellTemplate>                 <DataGridTemplateColumn.CellEditingTemplate>                     <DataTemplate>                         <ComboBox                             Name="cmbTest"                             DisplayMemberPath=""                             HorizontalAlignment="Stretch"                             IsEditable="True"                             IsEnabled="True"                             IsReadOnly="False"                             IsSynchronizedWithCurrentItem="False"                             ItemsSource="{Binding Path=Items2, Mode=OneWay}"                             Margin="0"                             SelectedItem="{x:Null}"                             SelectedValue="{x:Null}"                             SelectedValuePath=""                             Text=""                             VerticalAlignment="Center"                             Visibility="Visible"                             SelectionChanged="cmbTest_SelectionChanged">                         </ComboBox>                     </DataTemplate>                 </DataGridTemplateColumn.CellEditingTemplate>             </DataGridTemplateColumn>         </DataGrid.Columns>     </DataGrid>
Before upgrade, event "SelectionChanged" was raised only when I change the SelectedItem, but now (after 4.7.2. upgrade) "SelectionChanged" is raised (with "null" SelectedItem!) also when I exit by cell editing.

In case of two way binding, first value is set properly but during exiting cell editing, the combobox selected value set to null when ComboBox.ItemsSource is set to null. This make application behavior such that  that user never able to change the value from the combo box.
We have a lot of two-way bindings in the application which got impacted after this change. May some one suggest a work around?


Project: Movie Database App Add

Project file added with all info as requested
Project title added on tier 3 Advance on main Readme

Hope this looks good, Thanks!

@florinpop17 Btw, I had prettier on VSCode so guess it changed some of the spacing too

You have some conflicts. Could you resolve them? Also, make sure prettier doesn't change a lot of stuff!

@florinpop17 conflict resolved, Thanks will have head up on prettier

There are conflicts left. Could you fix them?

@florinpop17 This should be good to go now!

Merged! Thank you!


Replace yarn by NPM as a default Package Manager

Yarn does not support script that would be useful for the lib development (such as postinstall and prepublishOnly).

The tremendous amount of deletions and additions is due to the following factors :

yarn.locks in the root directory and example directory were replaced by package-lock.json
Typedoc was updated with reference to NPM instead of yarn


Add synthetic datasets

This is only one possible synthetic dataset. Following methods added + sample code:
import tensorflow as tf

# Create synthetic data:
## Generic make_synthetic wrapper routine
circles = tf.contrib.learn.datasets.make_synthetic(name='circles', n_samples=1000, noise=0.1)

Files modified/added:

/.gitignore: **/tools/git/gen is not necessary to commit (for dev only)
/tensorflow/contrib/learn/python/learn/datasets/__init__.py: Added the support for make_synthetic and split_data
/tensorflow/contrib/learn/python/learn/datasets/base.py: Added new method split_into_train_and_test
/tensorflow/contrib/learn/python/learn/datasets/synthetic.py: Created a file to hold all synthetic generators

Can one of the admins verify this patch?

Sorry about two commits -- should have rebased it before pushing

BTW, an unrelated question, what is TFs and Google's policy on rebasing the commits -- do I have to rebase to the current origin/HEAD before submitting a PR? Also, do I need to squash intermediate (minor) commits? Sorry, I am new to TF contributions, and don't know where to find these answers

Will fix the CL over the weekend

I have gone through the comments by @ilblackdragon and fixed most of them. The one I didn't touch is in the inline comments for the code.
I have also included some unittests

@ilblackdragon I have covered your reviews (all except one), also included a new routine -- spiral generation, and placed unittests.

Done with all changes
@ilblackdragon I have removed the train_test_split routine -- I don't think it is required for this PR as it is not used anywhere.

@ilblackdragon Can you please check it again, I submitted the CL

Oh snap! I am on it!

For some reason it passes all the tests on my machine -- going to rebase it to the HEAD, and see if anything new is breaking it. Is there any way I could get the Travis' logs to see what exactly fails?

It's a python3 error, and an easy fix. Look at the full log here:
https://ci.tensorflow.org/job/tensorflow-pull-requests-cpu-python3/2439/consoleFull
If you want to check locally, make sure to configure and run using python3.

@martinwicke Thanks for pointing out the Python 3 issue, it was a minor iteritems problem -- fixed it, hope Jenkins has six installed.
@martinwicke @ilblackdragon That actually raises a question -- is it possible to have tensorflow-devel compiled for both Py2 and Py3 in the same location? Or do I have to maintain two different locations on my machine if I want to test both? In my case I had it compiled for Py2 before, and had to reconfigure and rebuild for Py3 because bazel test --force_python=py3 --host_force_python=py3 --define PYTHON_BIN_PATH=/usr/local/bin/python3 //tensorflow/contrib/learn/python/learn/datasets:synthetic_test was throwing a *.so Symbol not found error. Now I am rebuilding it back to Py2 because all my other scripts are using Py2.

@tensorflow-jenkins Test this please

OK, I don't think this is something I can fix -- there is a problem with git fetch on the remote machine. Wild guess -- a problem with web-hook?

Restarted the failing build (only) at http://ci.tensorflow.org/job/tensorflow-pull-requests-gpu/2815/
@danmane, if that passes, it's fine to merge.

@danmane I think this once could be merged -- Thank you!

Thanks for this!

I got ImportError: cannot import name synthetic when start tensorboard, I'm using the latest code.


validator setup

Hi,
How to run a validator node in qtum-0.18.0?
can we run private network in qtum-0.18.0?

If you have experience launching a blockchain from block 0, it is possible. For example if you have launched a bitcoin fork many times. But Qtum has differences, such as switching from PoW to PoS at block 5,001. But why would you do that with an old version of the code?


Convert to TF Lite: GAN model to cartoonize photos

This model is implemented in TF 1 and can convert photos to cartoon. It looks quite visually impressive!
https://github.com/SystemErrorWang/White-box-Cartoonization

@sayakpaul
Would you be able to try converting this model to TF Lite?

Thank you for bringing this to my notice, @khanhlvg. I have self-assigned this and will start working on it. I will keep you posted about the progress here in this thread.

Hey @khanhlvg I have started working on it. I have been able to extract a SavedModel out of the pre-trained checkpoints but I am running into issues during the TF Lite conversion step:
--------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-99e790548508> in <module>()
      1 converter = tf.lite.TFLiteConverter.from_saved_model('saved_model_dir')
      2 converter.optimizations = [tf.lite.Optimize.DEFAULT]
----> 3 tflite_model = converter.convert()
      4
      5 tflite_model_size = open(int_tflite_path, 'wb').write('whitebox_cartoon_gan.tflite')

/usr/local/lib/python3.6/dist-packages/tensorflow/lite/python/lite.py in convert(self)
    481               "None is only supported in the 1st dimension. Tensor '{0}' has "
    482               "invalid shape '{1}'.".format(
--> 483                   _get_tensor_name(tensor), shape_list))
    484         elif shape_list and shape_list[0] is None:
    485           # Set the batch size to 1 if undefined.

ValueError: None is only supported in the 1st dimension. Tensor 'generator/Conv_9/BiasAdd' has invalid shape '[1, None, None, 3]'.

Here's the Colab Notebook.

The stylized image looks really cool!
Could you try converting with tf-nightly? The model has a dynamic shape input and it's only supported since TF 2.3.

Ah bummer. How could I miss out on that part?  😖
I just tried it out and guess what? The TF Lite model (6.4 KB) is converted 😄
Now, what's needed is the pre-trained weights for the generator network. I have filed an issue already in their repository. As soon as I have an update, I will keep this thread posted. Here's the Colab Notebook made so far.

Wow 6.4KB doesn't sound very right. I suspect that some weights might have been left out when converting to TF Lite. Could you try running inference with the TF Lite model?

@khanhlvg yes, I suspected that one too. I tried replicating the original inference pipeline with the converted TFLite model and the output is coming to be spurious.
Here's the Colab Notebook. Let me know if I am missing out on something.

The issue came from your saved model export code. You use an intermediate output (network_out ) of the GAN model as one of the model input, so that TFLiteConverter get confused and removed the whole GAN network from the TF Lite model. You can retry with this code.
tf.saved_model.simple_save(
      sess,
      '/content/saved_model_dir',
      inputs={input_photo.name: input_photo},
      outputs={final_out.name: final_out}
)

However I'm still facing an issue that the color of the output is off. I think there's an issue with pre/post-processing code but I haven't been able to pin point the issue. Can you take a look?

I was able to make it working! Here is the notebook
The weird color issue is because the model use cv2 for preprocessing and post-processing, which use BGR. However in your notebook, visualization is done with PIL which use RGB. Therefore, a small swap was needed.
I run benchmark of the model on my Pixel 3 and it is incredibly fast! I think we can do live video cartoonization with this :)
Inference timings in microsecond: Init: 7584, First inference: 4910, Warmup (avg): 364.436, Inference (avg): 364.822

Not sure if this is a coincidence again. I was just able to inform you about this @khanhlvg

What next steps would you suggest @khanhlvg for the conversion?

@sayakpaul
Would you be able to:

Create several variations of the model:

float16 with fixed input shape (e.g. 224 x 224) to run on GPU
full integer quantized model

Add metadata to make it easy to integrate to Android

Besides, I made a mistake with benchmarking. I forgot to set the shape for the input image. The model is actually quite slow. For example, an 224 x 224 input on int8 model on Pixel 3 takes 729 seconds.
Inference timings in us: Init: 8059, First inference: 805819, Warmup (avg): 805819, Inference (avg): 726875

Yes, even on a Colab CPU the model takes quite a while to spit out the results.

Add metadata to make it easy to integrate to Android

Sure. Could you mention which Metadata example I would refer to for this?

Prepare for uploading to TF Hub

The model might not be very fast. Would we still want to do this? Now, of course, it's still a very cool example to create a mobile app with this kind of capability.
@khanhlvg

Yes, even on a Colab CPU the model takes quite a while to spit out the results.

It's because TF Lite runtime is not optimized to run quantized model on Linux. If you use float model, then it'll be using XNNPACK and it's blazingly fast. The quantized model runs faster on mobile devices vs. on Colab.

Sure. Could you mention which Metadata example I would refer to for this?

Please use the selfie2anime metadata format. It's the same concept: image in -> image out.

The model might not be very fast. Would we still want to do this? Now, of course, it's still a very cool example to create a mobile app with this kind of capability.

Inference time below 1s on CPU is still very good for still images. And the quantized model is just a little larger than 1MB so definitely it's very useful on mobile :)

It's because TF Lite runtime is not optimized to run quantized model on Linux. If you use float model, then it'll be using XNNPACK and it's blazingly fast. The quantized model runs faster on mobile devices vs. on Colab.

Yes, I am aware of this. Just wanted to bring the topic up so that you know.
I will proceed with the next steps and post the updates here.
Thanks!

@khanhlvg a couple of updates.
I converted four different variants: float16, dynamic-range, int8 and full int8. All of the models (metadata is yet to be added) reside here: gs://cartoon_gan (public). I did not export the float16 model to support dynamic shape as we had discussed.
Here is the Colab Notebook that demonstrates the conversion and the inference processes.
Observations:

When I used cv2.cvtColor(image, cv2.COLOR_BGR2RGB) just after reading the image from disk using cv2.imread() and then ran inference I got different results as you can see below:

After exporting the int8 and full int8 models the "index" of the model inputs is getting set to 156 as can be seen below:
[{'dtype': numpy.float32,
'index': 156,
'name': 'input_photo',
'quantization': (0.0, 0),
'quantization_parameters': {'quantized_dimension': 0,
'scales': array([], dtype=float32),
'zero_points': array([], dtype=int32)},
'shape': array([1, 1, 1, 3], dtype=int32),
'shape_signature': array([ 1, -1, -1,  3], dtype=int32),
'sparsity_parameters': {}}]

Is this expected?

The int8 and the full int8 models introduce artifacts in the final image (cv2.cvtColor() was applied before running inference):

That's all for now. I will get back to you after adding metadata.

@khanhlvg metadata has been added to the models and they live here: gs://cartoon_gan/model_with_metadata.
Here's the Colab Notebook.

Thanks Sayak!

When I used cv2.cvtColor(image, cv2.COLOR_BGR2RGB) just after reading the image from disk using cv2.imread() and then ran inference I got different results as you can see below:

The model is trained with BGR images so if you feed it an image in RGB, the output cartoonized image won't look as good as if you feed it an BGR images.

After exporting the int8 and full int8 models the "index" of the model inputs is getting set to 156 as can be seen below:

Tensor index doesn't have any special meaning, just an id so feel free to ignore the actual number.

The int8 and the full int8 models introduce artifacts in the final image (cv2.cvtColor() was applied before running inference):

It's because the model cv2 loads images as BGR. Therefore if you load your input image using cv2, then you should do the
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) after inference.
I also tried running the fp16 model on GPU but faced a couple of issues. I'll ask the GPU delegate team to investigate.
ERROR: Following operations are not supported by GPU delegate:
DEPTHWISE_CONV_2D: Expected 1 runtime input tensor(s), but node has 0 runtime input(s).
DEQUANTIZE:
102 operations will run on the GPU, and the remaining 4 operations will run on the CPU.
ERROR: TfLiteGpuDelegate Init: MUL: Node 43 is already a consumer of the value 0
ERROR: TfLiteGpuDelegate Init: MUL: Node 1 is already a consumer of the value 7
INFO: Created 0 GPU delegate kernels.
ERROR: TfLiteGpuDelegate Prepare: delegate is not initialized
ERROR: Node number 106 (TfLiteGpuDelegateV2) failed to prepare.

ERROR: tensorflow/lite/kernels/depthwise_conv.cc:128 filter->type == data_type || data_type == kTfLiteInt16 was not true.
ERROR: Node number 2 (DEPTHWISE_CONV_2D) failed to prepare.

Btw I'm taking days off until the end of this week so please expect some delays in my reply. Thanks :)

Fair points, @khanhlvg. I will update the notebook accordingly.
Could you verify if the metadata has been populated correctly when you get a moment?
Upon your go-ahead I will proceed to TF Hub publication (which I know will be done after we are done with the GPU delegate issue).
Also, enjoy your days off!

@sayakpaul I should verify the tflite model with metadata with the Android app.
Please place the tflite models with/without metadata under a ml folder here: https://github.com/margaretmz/CartoonGAN-e2e-tflite-tutorial/tree/master. Or update the README with links pointing to the models. It's difficult to hunt them down from the discussion thread here.

I did not realize you created a repository @margaretmz as I was planning to have the notebook hosted from here. And once @khanhlvg and I were done publishing the models on TF Hub we the plan was to directly download them from TF Hub.
You can retrieve the models (with metadata from here) :

Dynamic-range quantized: https://storage.googleapis.com/cartoon_gan/model_with_metadata/whitebox_cartoon_gan_dr.tflite
FP16: https://storage.googleapis.com/cartoon_gan/model_with_metadata/whitebox_cartoon_gan_fp16.tflite
Full int8: https://storage.googleapis.com/cartoon_gan/model_with_metadata/whitebox_cartoon_gan_full_int8.tflite

@margaretmz FYI I went ahead and created a card for CartoonGAN Android App and I also created an issue from the card: https://github.com/ml-gde/e2e-tflite-tutorials/issues/11.

@khanhlvg the outputs with the int8 models still remain the same after I ran a BGR image through them and applied cv2.cvtColor() after running the inference.
Here's the updated Colab Notebook.

I did not realize you created a repository @margaretmz as I was planning to have the notebook hosted from here. And once @khanhlvg and I were done publishing the models on TF Hub we the plan was to directly download them from TF Hub.
You can retrieve the models (with metadata from here) :

Dynamic-range quantized: https://storage.googleapis.com/cartoon_gan/model_with_metadata/whitebox_cartoon_gan_dr.tflite
FP16: https://storage.googleapis.com/cartoon_gan/model_with_metadata/whitebox_cartoon_gan_fp16.tflite
Full int8: https://storage.googleapis.com/cartoon_gan/model_with_metadata/whitebox_cartoon_gan_full_int8.tflite

@sayakpaul -
Project repo - each tutorial will be a separate project repo. I only created the project repos for the ones that I'm working on: selfie2anime, esrgan, CartoonGAN, segmentation + style transfer. I expect other project teams to create their own repos and add the links to the E2E TFLite Tutorials repo.
Where to host tflite models - either on your GitHub or TFHub would be fine; however, the best way to validate a tflite model with metadata before publishing on TFHub, is to actually import the model to an Android App via ML Model Binding, and use the generated class in Android code.
Thanks for the links, I will try the tflite models with metadata in an Android app.

Thanks, makes sense. I think we could work on a short document to enlist these different steps to let the interested contributors know about how we generally go about doing things here.
Let me know your thoughts.

Sounds good. How about use the wiki:https://github.com/ml-gde/e2e-tflite-tutorials/wiki/How-to-contribute-to-the-E2E-TFLite-Tutorials%3F?
Although I felt some of the info is already covered in README. Perhaps we just need to update README? Which would you prefer?
Either way, we should try out the documented workflow to make sure it works, before communicating widely to the broader community. Thanks.

@margaretmz I think having it on README would work as well.

Either way, we should try out the documented workflow to make sure it works, before communicating widely to the broader community. Thanks.

I am in 100% agreement.

@khanhlvg I was able to fix the issue with int8 models. The problem was I was passing randomly created data of (1, 224, 224, 3) shape and this is probably why the calibrations weren't being done properly. Also, there was no way the system could understand the order of the channels from a randomly created images.
So, here's what I did:
IMG_SIZE = 224
images_list = os.listdir('/content/source-frames')

# int8 quantization requires a representative dataset generator
def representative_dataset_gen():
    for image_path in images_list:
        image = cv2.imread(os.path.join('/content/source-frames', image_path))
        image = cv2.resize(image, (IMG_SIZE, IMG_SIZE))
        image = image.astype(np.float32)/127.5 - 1
        image = np.expand_dims(image, axis=0)
        yield [image]

model = tf.saved_model.load('saved_model_dir')
concrete_func = model.signatures[
    tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]

converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_model = converter.convert()

open('whitebox_cartoon_gan_int8.tflite', 'wb').write(tflite_model)

The output is now coming as expected:

The Colab Notebook is also updated with these changes.
@margaretmz I have updated these models with Metadata as well but the links I earlier mentioned in this comment will still remain the same. Looking forward to this exciting project :)

Thanks @sayakpaul. I will add Android code to [the project repo](https://github.com/margaretmz/CartoonGAN-e2e-tflite-tutorial soon. So far I'm encountering errors running inference with the tflite models:

DR quantized & full int8: For I got error "Cannot copy from a TensorFlowLite tensor (final_output) with 192 bytes to a Java Buffer with 12 bytes"
FP16: output bitmap is black.

@khanhlvg - do we also need to add OpenCV library to Android in order to have the image as BGR?

@margaretmz are you using the tf-nightly interpreter? I converted the models using tf-nightly. Sorry, I should have mentioned it.
FYI the output image also needs a bit of processing as you'd see in the Colab Notebook. If I missed out on that in the while populating metadata (Colab Notebook), please let me know.
Also, were you able to import the models via Model Binding?

DR quantized & full int8: For I got error "Cannot copy from a TensorFlowLite tensor (final_output) with 192 bytes to a Java Buffer with 12 bytes"

I think this is because the ML Model Binding doesn't support resizing the input shape yet. Let me file a bug to the Android Studio team. Thanks for surfacing the issue!
Meanwhile, @margaretmz @sayakpaul do you think we should create fixed shape model to proceed, or wait for Android Studio team to support dynamic shape model?

@khanhlvg - do we also need to add OpenCV library to Android in order to have the image as BGR?

As model interface generated by ML Model Binding takes Bitmap as the input, it needs to support models with BGR input first. Let me file another feature request to the Android Studio team.
As Android Studio has long release cycle, I think it may take months before the before went into beta. Shall we start building the demo directly with TF Lite interface (e.g. using TF Lite Interpreter and Support Library for pre-processing)?

Meanwhile, @margaretmz @sayakpaul do you think we should create fixed shape model to proceed, or wait for Android Studio team to support dynamic shape model?

I think this would be a win-win. We already have the dynamic-shape supporting models with us. If we decide to go down this path what shape would y'all suggest we keep?

Shall we start building the demo directly with TF Lite interface (e.g. using TF Lite Interpreter and Support Library for pre-processing)?

Might be a better choice.

If we decide to go down this path what shape would y'all suggest we keep?

If we create a fixed shape model, then (512, 512) is probably good enough.

Fair enough. Once we all decide the next steps from here I can go ahead and create separate models with fixed-shaped inputs and populate them with metadata.

@margaretmz are you using the tf-nightly interpreter? I converted the models using tf-nightly. Sorry, I should have mentioned it.
Yes I'm using tf-nightly interpreter

FYI, the output image also needs a bit of processing as you'd see in the Colab Notebook. If I missed out on that in the while populating metadata (Colab Notebook), please let me know.
If the metadata is set properly the post processing should be taken care of by the generated class.

FYI, I had created a separate issue thread for the Android application demonstrating this model.
I will try to track the issues under the project repo to that's it's easier to find. Let's try to use the issues in this repo for assigning project resources and then track details under each project repos.

Also, were you able to import the models via Model Binding?
Yes, I'm able to import all 3 models.

Meanwhile, @margaretmz @sayakpaul do you think we should create fixed shape model to proceed, or wait for Android Studio team to support dynamic shape model?
I think this would be a win-win. We already have the dynamic-shape supporting models with us. If we decide to go down this path what shape would y'all suggest we keep?
Fixed shape model to proceed sounds good to me.

Shall we start building the demo directly with TF Lite interface (e.g. using TF Lite Interpreter and Support Library for pre-processing)?
It will take more time but I will give it a try.

Thanks, @margaretmz. I will proceed with converting the models with fixed shaped (520, 520) inputs.

I will try to track the issues under the project repo to that's it's easier to find. Let's try to use the issues in this repo for assigning project resources and then track details under each project repos.

I am in agreement.
I am going to close this issue, and let's shift all of our communication here.
Cc: @khanhlvg

@khanhlvg and @margaretmz models published on TF Hub: https://tfhub.dev/sayakpaul/lite-model/cartoongan/dr/1


Renew or Replace auto-generated TLS certificates using the CLI

This is a request for a CLI command to easily renew / replace auto-generated Dapr TLS certificates.
dapr upgrade --renew-certificates
dapr upgrade -k --renew-certificates
This would generate new certificates and:

Update the Dapr Trust Bundle Secret
Restart the Dapr Sentry Service
Restart the rest of the Dapr Control Plane

Additionally, there needs to be an option to specify a private key / root password to be used for certificate generation.
dapr upgrade --renew-certificates --certificate-password-file myprivatekey.pass
The contents of this private key file would need to be used to sign the new auto-generated TLS certificates.

/assign

For kubrenetes, we will have below 3 options -
1. dapr upgrade -k --renew-certificates
2. dapr upgrade -k --renew-certificates --certificate-password-file myprivatekey.pass
3. dapr upgrade -k --certificate-authority-root-certificate <ca.crt> --issuer-private-key<issuer.key> --issuer-public-certificate<issuer.crt>

@berndverst @mukundansundar

I think it would be better to use subcommand for renew certificate. It will be easier to organize code this way.
~ ❯ ./dist/linux_amd64/release/dapr upgrade renew-certificate -h
Rotates Dapr root certificate of your kubernetes cluster

Usage:
  dapr upgrade renew-certificate [flags]

Examples:

# Generates new root and issuer certificates for kubernetest cluster
dapr upgrade renew-certificate -k

# Uses existing private root.key to generate new root and issuer certificates for kubernetest cluster
dapr upgrade renew-certificate -k --certificate-password-file myprivatekey.key

# Rotates certificate of your kubernetes cluster with provided ca.cert, issuer.crt and issuer.key file path
dapr upgrade renew-certificate -k --ca-root-certificate <ca.crt> --issuer-private-key<issuer.key> --issuer-public-certificate<issuer.crt>

# See more at: https://docs.dapr.io/getting-started/

Flags:
  -h, --help         help for renew-certificate
  -k, --kubernetes   Upgrades/Renews root certificate of Dapr in a Kubernetes cluster

Global Flags:
      --log-as-json   Log output in JSON format

@pravinpushkar I agree, a subcommand is better to a flag in this scenario.
I can see both pros and cons with this subcommand being under the upgrade command. We already have a mtls why not use that?
I can see the point that with it being in the upgrade command it provides a consistent user experience during upgrade process. At the same time the command being part of dapr mtls will provide a single command which deals with all mtls related issues. There is also a related issue of #891 where this approach might be useful.
My question here is should Cert renewal be combined with upgrade scenario? Wouldn't it be better to renew certificates independent of whether the Dapr version is upgrade or not ? In that scenario I think this would be better under the dapr mtls command.
Also one other question, does the renew-certificate automatically rotate the certificate too? Should it only generate the cert and then a later command is issued to rotate it?
Also will there be a flag to set the not-after (validity) field to a custom value as desired by the user?

@mukundansundar
My thoughts on few of the items above  -

Wouldn't it be better to renew certificates independent of whether the Dapr version is upgrade or not ?

Agree. renew-certificate is going to be independent of version upgrade. We will maintain same configurations (mtls, ha, version etc) and only certificates will updated.

Also one other question, does the renew-certificate automatically rotate the certificate too? Should it only generate the cert and then a later command is issued to rotate it?

I think there are 3 things to do here -

Update the certificate in kubernetes secret
Restart the dapr system services
Display an information to user to restart the application deployments

Also will there be a flag to set the not-after (validity) field to a custom value as desired by the user?

Agree. I think it will be a good addition.

Proposed command  - renew-certificate
Flags:
      --ca-root-certificate string         The root certificate file
      --certificate-password-file string   The root.key file which is used to generate root certificate
  -h, --help                               help for renew-certificate
      --issuer-private-key string          The issuer certificate private key
      --issuer-public-certificate string   The issuer certificate
  -k, --kubernetes                         Renews root certificate of Dapr in a Kubernetes cluster
      --restart                            Restart Dapr control plane services
      --timeout uint                       The timeout for the certificate renewal (default 300)
      --valid-until uint                   Max days before certificate expires (default 365)

Subcommand to ? dapr mtls or dapr upgrade or standalone
The below discussion assumes it to be a subcommand to mtls
To provide support for these commands we can take one of the below approches -
Approach 1 - Using Helm ( Current PR uses this approach):

dapr mtls renew-cert -k:
a) This command will generate fresh root and issuer certificates.
b) Use helm.NewUpgrade(...) to create a new upgradeClient with provided certificates and all existing configurations.
c) Depending on the restart flag, restart control plane services.

dapr mtls renew-cert -k --certificate-password-file myprivatekey.key:
a) This command will behave similar to above except it is will use provided private root key file to generate the certificates.

dapr mtls renew-cert -k --ca-root-certificate <ca.crt> --issuer-private-key<issuer.key> --issuer-public-certificate<issuer.crt>
a) This command will use the provided certificate files.
b) Use helm.NewUpgrade(...) to create a new upgradeClient with provided certificates and all existing configurations.
c) Depending on the restart flag, restart control plane services.

Pros:
a) Unified approach for all 3 commands
b) More control w.r.t different flags like `validity` for new certificate

Cons:
a) Certificate generation logic has to be included
b) dependent on helm

Approach 2 - Modifying the trust-bundle directly (This approach is not verified yet)

dapr mtls renew-cert -k:
a) Accept an input file similar to this - click here
b) Let sentry handle the certificate creation
c) Depending on the restart flag, restart control plane services.

dapr mtls renew-cert -k --certificate-password-file myprivatekey.key
a) For this we again need to have the certificate generation logic as described in approach 1.
b) Parse the current trust-bundle and replace the certificates values in base64 encoded format.
c) Restart sentry and other control plane services.

dapr mtls renew-cert -k --ca-root-certificate <ca.crt> --issuer-private-key<issuer.key> --issuer-public-certificate<issuer.crt>
a) This command will behave similar to above one except that it will use the provided certificates.

Pros:
a) Not dependent on helm
b) Might behave faster than helm approach

Cons:
a) No control over validity of new certificates

cc @yaron2 @mukundansundar

Manual verification steps taken for above implementation (Both on windows and linux)-
Without apps running -

Run dapr init -k -> initialize dapr with default certificates
Run dapr status -k ->  Check for no certificate expiring warning
Run dapr mtls renew-certificate -k --valid-until 15 --restart
Repeat step 2. Notice there will be certificate expiry warning printed.
Run dapr mtls renew-certificate -k --private-key "file_path_of_cur_deployed_cert" --valid-until 5
Run kubectl logs --selector=app=dapr-sentry --namespace dapr-system.  Confirm that sentry is able to read the current certificate with expiry of 5 days.
Run  dapr mtls renew-certificate -k --ca-root-certificate <> --issuer-private-key <> --issuer-public-certificate <> --restart
Repeat step 2 and 6 and verify the certificate has been updated.

With apps running

Run dapr init -k -> initialize dapr with default certificates
Run dapr status -k ->  Check for no certificate expiring warning
Use hello-kubernetes app from quickstarts repository.
Run dapr mtls renew-certificate -k --valid-until 0 --restart  - Simulating expired certificate behavior
Run kubectl logs --selector=app=dapr-sentry --namespace dapr-system.  Confirm that sentry is able to read the current certificate with expiry of 0 days.
Restart app deployments to pick up new cert immediately- check pods unhealthy and check daprd log to confirm it has picked up expired cert
Update new cert with some validity using same private key, don't restart -  verify sentry logs that certificate expiry is updated.
Restart app deployments to pick new certs.
Verify app pods healthy and daprd logs with no error about certificate expiry.


Parser

Check:

Elements which are defined by a capital letter can only be declared once in the scene.
Each type of element can be set in any order in the file.

[ ] it is necessary to verify when the there is not the existence of one of the objects A, L, C.
[ ] Elements which are defined by a capital letter can only be declared once in the scene.
[ ] Each type of element can be set in any order in the file.


Add More Information Section with Eth link

Added a "More Information" section and provided link to how smart contracts work in the Ethereum Blockchain.

[x ] I have read freeCodeCamp's contribution guidelines.
[ x] My pull request has a descriptive title (not a vague title like Update index.md)
[x ] My pull request targets the master branch of freeCodeCamp.
[x ] None of my changes are plagiarized from another source without proper attribution.
[ x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Hi @ClarkTravis, thank you for the PR! However, we do not accept PRs that only add links.
I'm going to close this PR, but feel free to open a new one with more content. Happy coding!


Documentation / Tutorial Request

I'm working on a project where I need to authenticate and authorize users so that they have access to numerous MVC applications and APIs.
I was planning to use Oauth, however I'm running into a wall trying to figure out how to implement it.  The solution is internal and can not use 3rd party Oauth providers.
I need to create a simple Oauth Server that validates user credentials using Microsoft.AspNet.Identity.  I've already implemented Identity successfully within the context of a single MVC application (it needs to be ported to the Authentication Server).
Each MVC Application will redirect to the Authentication Server for login.  I have this 'working', although I have no idea if I'm doing it correct.
However the response from a valid login never does what I need.  It needs to return the appropriate response so that the MVC Application can now make requests to the API on behalf of the user with their specific access token.
Please point me in the direction of documentation or samples?
Thanks!

I need to create a simple Oauth Server that validates user credentials using Microsoft.AspNet.Identity. I've already implemented Identity successfully within the context of a single MVC application (it needs to be ported to the Authentication Server).

Unlike OWIN/Katana, ASP.NET 5 offers no native authorization server (you can take a look at http://stackoverflow.com/questions/29055477/oauth-authorization-service-in-asp-net-mvc-6/29144031#29144031 for more information).
You basically have 2 ways to achieve what you're looking for:

You can roll your own authorization server. Of course, it's not the recommended approach, but some people like this option: https://github.com/aspnet/Security/issues/359#issuecomment-124450989.

You can use a third-party authorization server. There are a few servers for ASP.NET:

The most popular one is probably IdentityServer3 (https://github.com/IdentityServer/IdentityServer3). It's not based on ASP.NET 5 but there's an adapter you can use to add it to your ASP.NET 5 app (it won't work on CoreCLR, though). It's the server you need if you're looking for a turnkey solution.

Another one is ASOS (https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server). It has been specifically designed for ASP.NET 5 and works on both DNX451 and DNXCORE50. Unlike IdentityServer, it offers a low-level/protocol-first approach. Go with ASOS if you need full flexibility (e.g custom authorization pages). Since I'm the main developer behind ASOS, you can ping me for more information :smile:

The most recent one is OpenIddict (https://github.com/openiddict/core): it's an experimental zero-friction server that uses ASOS and ASP.NET Identity 3 internally and is supposed to provide the easiest way to add token support to your application.

Does ASOS allow me to plug in my implementation of Microsoft.AspNet.Identity?

Sure, it's absolutely not tied to any membership implementation (it's even up to you to implement that part :smile:)

In your sample project Mvc.Server it appears all AuthenticationController endpoints use a 3rd party provider?  Is there an example of in-house signin validation?

Since you're using Identity, I'd suggest using the (horrible :smile:) AccountController that comes with the default template. it will handle local/external authentication for you (this is exactly how the Mvc.Server sample in OpenIddict works: https://github.com/openiddict/core/tree/dev/samples/Mvc.Server).

User makes request to MVC App
MVC App redirects to Oauth Server /login
Oauth Server returns /login View
Oauth Server validates POST
Oauth Server creates token
??  This is where I get lost.  I can't get the Oauth Server to correctly respond to the original MVC App.  I can redirect back to it, but it has no authentication information.

Well, the flow is a bit more complicated:

The client app initiates the OAuth2/OIDC request and redirects the user agent to the authorization server.

The authorization endpoint (AuthorizationController.Authorize in the default sample) detects you're not logged in and returns a 401 response, which is caught and replaced by a 302 redirect to the login controller (AccountController in your case).

Once the user is fully authenticated, he/she's redirected back to the authorization endpoint (AuthorizationController.Authorize), with the OIDC parameters of the original request.

Depending on how your authorization page is implemented, the user might have to accept the authorization request. When the request is accepted, the authorization controller calls ASP.NET 5's native SignInAsync method, which triggers the token creation and causes a 302 redirect (or a 200 response with an auto-post form) that redirects the user agent to the client app.

The client application validates the tokens and can use the access token to query the API.

@PinpointTownes I was hoping you could help me out.
I've create a example solution and posted it on GitHub - https://github.com/Fosol/Example.OauthServer
This of course doesn't work yet.  Essentially I want to have a MVC client application redirect logins to the MVC server application which will use our custom Identity implementation to login and provide tokens.
My experience with Oauth is on the side of client software.  I understand the general process but I'm used to manually handling all the requests and responses within a literal client application (not a web MVC client).
I don't understand how to respond to the client after successfully signing in.  I don't understand how the MVC Client application will continue to remember the users authentication token so that all subsequent requests contain it (thus giving access to Resource applications).
Any feedback is appreciated.

@Fosol I took a look at your solution and TBH, I can't understand what you're trying to do.
If you don't feel comfortable with the protocol, why rolling your own OAuth2 server instead of using a ready-to-use solution?

Good question.  Sometimes it's not so much about comfort and more about requirements.
There is a lot of configuration in the Startup that I can't find any documentation or tutorials on to fully understand.  I'm spending a lot of time stepping through the code (which is fine, but time consuming).
I was reviewing some of the examples you have provided.  I found the code useful but I didn't see how they would work in my situation.  I'm probably just not understanding them well enough.
I need the web browser to make a request to the MVC Client application which will send them to login into the MVC Oauth Server application.  It will then allow the MVC Client application to make requests to the Resource applications (really just common oauth implementation).
Can you confirm that your framework (https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server) does this?  If so, great!  I'll probably have more specific questions as I dig deeper into it.

I need the web browser to make a request to the MVC Client application which will send them to login into the MVC Oauth Server application. It will then allow the MVC Client application to make requests to the Resource applications (really just common oauth implementation).

Can you confirm that your framework (https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server) does this? If so, great! I'll probably have more specific questions as I dig deeper into it.

Yes. Btw, that's exactly how the default Mvc.Server/Mvc.Client samples work. Don't hesitate to give them a try to see how they work :smile:

@PinpointTownes When I open up the example solution it displays tons of errors.  I think they're all to do with DNX Core 5.0.

Is there a way to disable DNX Core 5.0 temporarily?
Is there a way to possibly resolve all the errors VS is displaying?

Lots of errors are saying they don't support Core 5.0.

@PinpointTownes Will your example solution work in beta8?

@PinpointTownes When I open up the example solution it displays tons of errors. I think they're all to do with DNX Core 5.0.

@Fosol you need the latest DNX runtime to open ASOS (RC2). Which version are you currently using?

@PinpointTownes Will your example solution work in beta8?

The samples coming with the main project require the latest runtime/packages. They won't work with beta8. That said, you can clone the samples and use the official release for beta8: https://www.nuget.org/packages/AspNet.Security.OpenIdConnect.Server/1.0.0-beta3. It will probably need some tweaking to fix the breaking changes between beta8 and RC2.
FYI, future samples will be posted to https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Samples and will probably use fixed versions (likely ASP.NET 5 RC1). @DovydasNavickas is currently working on a SignalR sample :smile:

@PinpointTownes Regrettable all I get is a lot of red underlining in your code.  Not sure if there is a quick bit of advice that might help me actually step through your code.

@PinpointTownes Regrettably I can only get red lines under nearly every file.
I've installed DNVM 1.0.0-rc1-final.

You need the latest DNX RC2 nightly build (from https://www.myget.org/gallery/aspnetvnext) :smile:
Just run dnvm upgrade -u -r clr and it will install that for you.

@PinpointTownes I hate to be a constant bother, but dependency issues with the new DNX structure have been a constant nagging problem over here.  I'm sure lots of these issues are the direct result of a unreleased product that is constantly change.  I however haven't figured out how to resolve many of them consistently.
I've installed DNVM 1.0.0-rc2-16177 clr x86.
I've run dnu restore.
I get a lot of warnings - (i.e. "Warning: FindPackageById: Microsoft.Extensions.Primitives Response status code does not indicate success: 404 (Not Found)).
I get a lot of errors - (i.e. "Error: FindPackagesById: Microsoft.AspNet.Hosting.Abstractions Response status code does not indicate success: 404 (Not Found)).
All I'm sure of is that the issues are the result of dependencies since there are over 800 errors.  This is a common headache.

These errors are often transient. Have you tried running dnu restore again?

@PinpointTownes I was finally able to get everything up and running.
Is there an example of how to turn on NTML?

@Fosol nope, sorry.
That said, it shouldn't be really different from adding any other external provider. I'm sure @Tratcher has a sample demonstrating how to use Windows authentication :smile:

If I turn on "Enable Windows Authentication" on the project property wizard page the program crashes.  When I leave it off the program runs.

@Tratcher is definitely the right person to ask :smile:
I guess you're using the RC1 tooling?

@PinpointTownes I've posted a new Github repository with a running version of AspNet.Security.OpenIdConnect.Server.
GitHub - https://github.com/Fosol/Example.Oauth
In the AuthenticationController I've added a way to Login using the default implementation of Microsoft.AspNet.Identity.
What I don't understand is how ASP.NET 5 is expecting to submit the appropriate oauth token and return it to the original client requests.  Any information would be helpful.
I'm think it needs to do something with a ChallengeResult, but I'm not certain in this particular use case.

What I don't understand is how ASP.NET 5 is expecting to submit the appropriate oauth token and return it to the original client requests. Any information would be helpful.

The authorization response (with the access token) is applied when calling SignInAsync: https://github.com/Fosol/Example.Oauth/blob/master/src/Example.Oauth.Server/Controllers/AuthorizationController.cs#L172-L174
FYI, cloning the repository and using it as-is is strongly discouraged. Instead, you should reference the official beta4 release (for ASP.NET 5 RC1): https://www.nuget.org/packages/AspNet.Security.OpenIdConnect.Server/1.0.0-beta4

I'm trying to step through the code to understand it all, that's the reason I've copied the code into the project.  I also needed it to run in RC1, all I had reference to was your earlier post on GitHub which was using the most recent nightly builds.

@PinpointTownes Is there any documentation on the following;

How ChallengeResult works?
How to implement custom login form?

I'm having a hard time understanding the technical flow within ASP.NET 5.

var request = HttpContext.GetOpenIdConnectRequest();

The request after a custom login form always null since all the original request information containing client_id and other details is no longer in scope.  I'm not sure how to ensure this gets reattached after the post with the users credentials.

@PinpointTownes Is there any documentation on the following;

How ChallengeResult works?
How to implement custom login form?

I'm not sure the documentation for these 2 things is ready yet. (/cc @Rick-Anderson)

The request after a custom login form always null since all the original request information containing client_id and other details is no longer in scope. I'm not sure how to ensure this gets reattached after the post with the users credentials.

The best approach is to flow the OIDC request parameters directly in the request form. If your authentication process is too complex for that, consider using unique_id to retrieve the OIDC request from the distributed cache: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/issues/134

@PinpointTownes Any example on how to use retrieve the OIDC request parameters with the unique_id?
In your sample it's at this point that I lose the OIDC since it redirects to my custom login page: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/blob/vNext/samples/Mvc/Mvc.Server/Controllers/AuthorizationController.cs#L53
My custom login controller now needs to get the OIDC requests parameters but I haven't figured out how to get the information.

        [HttpGet, Route("~/account/login")]
        public ActionResult Login(string returnUrl = null)
        {
            var request = HttpContext.GetOpenIdConnectRequest();
            ...
        }

@PinpointTownes I've been able to get an example working, which is great.  Thanks to all the work in your example.
Question - How do I support a resource server on a different domain?

@PinpointTownes Any example on how to use retrieve the OIDC request parameters with the unique_id?

It's transparent: simply call GetOpenIdConnectRequest() and it will return the request from the cache (assuming the current request path corresponds to the authorization endpoint, of course).

@PinpointTownes I've been able to get an example working, which is great. Thanks to all the work in your example.

Fantastic. Glad you sorted it out! :clap:

Question - How do I support a resource server on a different domain?

In the current version, simply create a new app and add the JWT bearer middleware to your pipeline. In the next version, we'll stop using JWT access tokens and go back to opaque tokens: you'll thus be encouraged to use the new introspection middleware for this scenario: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/issues/185

@PinpointTownes I've attempted to pull down the NuGet package you referenced here (https://www.nuget.org/packages/AspNet.Security.OpenIdConnect.Server/1.0.0-beta4) into a project I want to now test with.  There however appears to be an extension method missing "AddOpenIdConnectServer".
Is it no longer needed?

Hum, not sure where you've seen this extension, as it has never existed :smile:
Just ensure that both the authentication and the caching services (services.AddAuthentication() + services.AddCaching()) are added and it should work.

Thanks!

@PinpointTownes I'm not sure what I changed to break the resource request, but now it only returns a 500 when I attempt to get /api/message.  Is there a way to debug the issue on the server side?  I can't seem to find a spot to place a breakpoint.

It's related to the AuthorizeAttribute because if I remove it the endpoint can be hit successfully.

Try enabling logging to determine the exception causing the 500 response.

@PinpointTownes I'm having difficulty signing off after I introduced my custom Identity implementation.  I was wondering if you could point me in the right direction.  I suspect it has something to cookie or authentication schema names.
Using Fiddler to watch the traffic I get the following;

After successful login form
Response Cookies

Set-Cookie: LIS.Cookie...

Redirects back to Client Application
Response Cookies

Set-Cookie: .AspNet.OpenIdConnect.Nonce...

Set-Cookie: .AspNet.OpenIdConnect.State...

Set-Cookie: Cookies=chunks:2; path=/; httponly

Set-Cookie: CookiesC1...

Set-Cookie: CookiesC2...

After logout on Client Application
Response Cookies

Set-Cookie: Cookies=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/

Set-Cookie: CookiesC1=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/

Set-Cookie: CookiesC2=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/

Then it redirects to the OAuth Server and includes a cookie
Request Cookies

LIS.Cookie...

The OAuth Server then automatically signs me back in.

@PinpointTownes Another question for you regarding tokens and claims.
After I login through the Oauth server I can confirm that my Identity implementation has added the appropriate claims to the user.  However once it gets back to the client it no longer contains the claims associated with my Identity implementation.
I've tried to include my Identity library in both the client and the server application to no avail.  It only appears to work on the server.
Is there something that needs to be configured so that the oauth server returns the identity claims?

Are you specifying a destination for your claims?
See http://stackoverflow.com/a/32299781/542757 for more information.

@PinpointTownes does this mean I need to edit the AuthorizationController.Accept method to include the claims with the new identity?

Yes. You can see the MVC server sample for an example.

I noticed the claims from my Identity implementation are issued by "LOCAL AUTHORITY".  Where is this value set?  I've scanned the source code and can't find that value anywhere.

It's ClaimsIdentity's default issuer when you don't set it. But it's not really important as the issuer is not used by the OIDC server.

Le 11 déc. 2015 à 17:29, Jeremy Foster<EMAIL_ADDRESS>a écrit :
I noticed the claims from my Identity implementation are issued by "LOCAL AUTHORITY". Where is this value set? I've scanned the source code and can't find that value anywhere.
—
Reply to this email directly or view it on GitHub.


Added a new section of articles to KB - Common Scams

-Added Common Scams section to KB. Automatically sorts to the bottom of the support.mycrypto.com index. This details some common scams that users will run into in the cryptospace.
-Added some images to be used by this section.
Not entirely complete yet, but this is a good baseline release.
I will continue to improve and add to this over the coming weeks and months.

Nice!
LGTM!


Add insert test and docs

Codecov Report

Merging #9 into master will increase coverage by 0.54%.
The diff coverage is 20%.

@@            Coverage Diff             @@
##           master       #9      +/-   ##
==========================================
+ Coverage   83.72%   84.26%   +0.54%
==========================================
  Files          11       11
  Lines          86       89       +3
  Branches       16       17       +1
==========================================
+ Hits           72       75       +3
+ Misses         11       10       -1
- Partials        3        4       +1

Impacted Files
Coverage Δ

lib/insert.js
52.94% <20%> (+10.08%)
:arrow_up:

Continue to review full report at Codecov.

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


Make graceful shutdown work at request rather than connection granularity

The graceful shutdown logic currently waits until all Services have dropped (i.e. all connections have closed). However, with keep-alive this is overconservative - what we'd really like is to wait until pending requests have finished.
This can't be correctly modeled with the current API, however. The last point in a request/response pair that user code is aware of is when it sends the last bit of the response body through the body channel. It will still take some amount of time for that bit to be written out over the network, so we can't immediately shut down after that's done.

@seanmonstar pointed out that a simple way of doing this is to add a method to disable keep-alive on Connections. Then, Service::drop-based tracking will be accurate.


os/gtime: issue title gf build add goversioninfo

Description
https://github.com/josephspurrier/goversioninfo
Additional
No response

Interesting.


The Output window & C# log always shown whenever opening a .net core C# project

Environment data
VS Code version: 1.63.2, 1.64.2
C# Extension version: 1.24.0
Each time, whenever a .net core C# project is opened, it always open up the Output window & show C# log on it, as shown below. The previous versions don't have this behaviour which is quite annoying.

This is a duplicate of https://github.com/OmniSharp/omnisharp-vscode/issues/5032 which was fixed in https://github.com/OmniSharp/omnisharp-vscode/pull/5041


General: Startup validations

Changes

added startup validations to start.py
currently FFmpeg and OpenImageIO executables are checked which raise RuntimeError if are not available

oiio tools are checked only for windows and linux

this happens before arguments are handled (in boot function)

Question

should we show a message window if are not detected (we would have to check for headless)?

Task linked: PYPE-1316 Validation on OpenPype start

Could we add some more logging to _determine_mongodb? That could be helpful for Deadline installations (without OPENPYPE_MONGO it could explode in a weird way.)

Could we add some more logging to _determine_mongodb? That could be helpful for Deadline installations (without OPENPYPE_MONGO it could explode in a weird way.)

That's not quite issue of this PR + IDK where it crashes. If you know do a PR.

Can we also remove the ffmpeg publish validator at the same time please?

That's already done (is there any other than validate ffmpeg installed?).

That's already done (is there any other than validate ffmpeg installed?).

my bad, you are right.

That's not quite issue of this PR + IDK where it crashes. If you know do a PR.

agreed. we should keep this one clean, to just what it's doing


add StringUtils.substringBeforeLast(String, int)

Hello,
This method with int param is missing :)

Codecov Report

Merging #967 (731f99b) into master (ff733d9) will decrease coverage by 0.02%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master     #967      +/-   ##
============================================
- Coverage     91.99%   91.96%   -0.03%
- Complexity     7432     7433       +1
============================================
  Files           189      189
  Lines         15664    15670       +6
  Branches       2907     2908       +1
============================================
+ Hits          14410    14411       +1
- Misses          677      683       +6
+ Partials        577      576       -1

Impacted Files
Coverage Δ

...ain/java/org/apache/commons/lang3/StringUtils.java
98.45% <0.00%> (-0.36%)
:arrow_down:

...apache/commons/lang3/reflect/ConstructorUtils.java
86.00% <0.00%> (+2.00%)
:arrow_up:

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

HI @mmariotti
Thank you for your PR. Can you add test cases that cover all the possible path?
TY

@mmariotti Don't you mind if I take it and finish with tests?

I don't think this is needed or that we should cover every combination of before/after/char/int/any/not and so on.


Release 1.0.0

I have done my first successful release of https://github.com/raix/vscode-perl-debug
Using semantic-release ^10.0.1 and semantic-release-vsce ^0.1.4
cc. @felixfbecker

Nice!


XRayQuery fix detector height and width metadata

Description

I noticed that it was possible the the detector height and width to come out of the query as negative values. This doesn't make any sense so here is a small fix and some tests. I'll make the change in the docs example when I merge this w/ develop.

Type of change

[x] Bug fix~~
[ ] New feature
[ ] Documentation update
[ ] Other

How Has This Been Tested?

added new tests. built and ran on rztopaz all tests pass.
Checklist:

[x] I have followed the style guidelines of this project.~~
[x] I have performed a self-review of my own code.~~
[x] I have commented my code where applicable.~~
[ ] I have updated the release notes. - no release notes update since this bug was added very recently and was never out in the wild.
[ ] I have made corresponding changes to the documentation.
[ ] I have added debugging support to my changes.
[x] I have added tests that prove my fix is effective or that my feature works.~~
[x] I have confirmed new and existing unit tests pass locally with my changes.~~
[ ] I have added new baselines for any new tests to the repo.
[x] I have NOT made any changes to protocol or public interfaces in an RC branch.~~
[x] I have assigned reviewers (see VisIt's PR procedures for more information).~~

merge w/ develop in #18332


[Bug]: Recyclebin filename can be too long for the filesystem

Describe the Bug
I'm on btrfs which, like many linux filesystems, has a max filename length of 255 bytes.  When trying to save torrents with long names to the recyclebin, it often fails opening the file with "Filename too long"
Config
recyclebin:
  enabled: true
  empty_after_x_days: 60
  save_torrents: true
  split_by_category: false

Logs
https://gist.github.com/m-wynn/1cd66a98564f9f54fc083b676461a7dc
Screenshots
No response
Installation
Docker
Version Number
4.1.7
What branch are you on?
master

@bobokun would it be possible to get an except block or something in to take care of this? This is particularly problematic with anime.

This should be fixed now. Please test on develop branch


Generate offline map with overrides fixes (.NET MAUI)

Description
Bug fixes:

Unhandled exception: user cancels job before configure page has a change to load
Unhandled exception: user cancels job after configuring overrides
Configure page does not fit in landscape mode on certain mobile devices

Code style:

Less verbose grid XAML
Use var with constructor

UI:

Cleaner configure page
Button float style
Darker transparent background for increased progress status legibility

Type of change

Bug fix
Other enhancement

Platforms tested on

[x] MAUI WinUI
[x] MAUI Android
[x] MAUI iOS
[x] MAUI MacCatalyst

Checklist

[x] Self-review of changes
[x] All changes work as expected on all affected platforms
[x] There are no warnings related to changes
[x] Code is commented and follows .NET conventions and standards
[x] Codemaid and XAML styler extensions have been run on every changed file
[x] No unrelated changes have been made to any other code or project files
[x] Screenshots are correct size and display in description tab (800 x 600 on Windows, MAUI mobile platforms use the MAUI Windows screenshot)

cc: @cgutierrez-gis


Rich text editor not compatible with Internet Explorer 11

Laravel Version: 5.5
Voyager Version: 1.0
PHP Version:7.0

Rich text editor not visible in Internet Explorer
http://prntscr.com/ikrkjq

Duplicate of #2858


Check entity ai behaviour: minecraft:behavior.controlled_by_player

Check if the ai behaviour: minecraft:behavior.controlled_by_player is update to date

I checked and this component seems complete compared with bedrock.dev and official docs.

Thanks!


Options constructor

Fixes #91
Major Changes for mysql, sqlite and postgres ( Changes constructor api ), is not breaking change old API will work along with the standard api used by mongo and redis

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

25 of 29 (86.21%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.5%) to 97.849%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

packages/postgres/src/index.js
8
10
80.0%

packages/sqlite/src/index.js
8
10
80.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.5%

Covered Lines:
1235

Relevant Lines:
1253

💛  - Coveralls

@pricecomstock does this fix your issue :)

awesome, thanks!


Multi-master issue with master services

From #6572
@rrati said

If you have multiple apiservers running in a load balanced setup they fight against what the endpoint address should be for the kubernetes[-or] services. Each apiserver is expecting the endpoint address to be its ip, and you can't use the existing settings (when I first looked, haven't looked at the refactoring) because they are used other places to actually perform a bind. Without a way to set a constant address for the endpoing the apiservers will continually duel. Additionally when you are running multiple apiserver you probably want to redirect all traffic to those services are load-balanced like other apiserver requests.

I said

The real fix is to make the master services actually hold both/all master IPs

@rrati said

It depends on what that ip is. It could be the ip of a specific master or it could be the ip of a proxy that load balances the requests to all masters in the system. The simplest route to take to allow multiple apiservers in the system for load-balancing/ha seems to be having a proxy (haproxy) actually handing the work distribution. You could point everything at the proxy, including the cluster service endpoints, and let it distribute to the apiservers/masters.

We could decide on a more complicated ha scheme at some point where we make sure all apiservers know about each other etc. That would be a more impactful change. This should allow us to start heading down the load-balancing/ha path.
I said

Who runs this haproxy?  Is it a pod or some other external thing?  It's a plausible answer, but it needs some design

@abhgupta , @danmcp , @smarterclayton ^
We were going the baby-step approach for HA.  Simply load balancing the api-server seems like a modest thing to do as a 1st step.    How exactly one load balances the api-server is slightly orthogonal.   (HAProxy, Some GCE or AWS load balancer ... )
The rest of the master daemons are a different story and we would likely create a quorum of standby daemons, but I believe that was well outside the scope of rob's initial change.

We have an HAProxy that is programmable to endpoints, but does not yet program its output based on services.  If we need to add that, I'd prefer to make what we have already more generic, rather than have to reinvent the other wheel (since it solves a wider range of problems, like being able to reuse the same code for different proxy types).

Please copy me on all HA master PRs.

Me too. :)

cc: quinton-hoole

Per discussion on wed, we'll attach do a HA.md proposal PR by tomorrow.

Please close this one, and we'll rally on #6995


Request for the descriptions for each image

Hi,
In addition to the original Caltech-UCSD Birds-200-2011 Dataset, you mentioned in the paper that you also collected 10 description sentences for each images with MTurk. May I ask if the descriptions data is available for public use and may I have the download link if possible? Thanks!

You can find that data in this release: https://github.com/nicolalandro/ntsnet-cub200/releases/tag/0.3

Thanks!


Switch from centos-8 to almalinux-8

Signed-off-by: Tim Smith<EMAIL_ADDRESS>

Less broken than before


LUN-xx: Add lodash

This pull request belongs to an issue on our bugtracker.
You can find it there by looking for an issue with the key which is mentioned in the title of this pull request.
It starts with the keyword LUN.

This PR fixes the deploy pipeline.


Black Screen On XFCE Startup

Please paste the output of the following command here: sudo startxfce4

Entering /mnt/stateful_partition/crouton/chroots/precise...
/usr/bin/startxfce4: Starting X server
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
X.Org X Server 1.15.1
Release Date: 2014-04-13
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.42-75-generic x86_64 Ubuntu
Current Operating System: Linux localhost 3.10.18 #1 SMP Thu Dec 1 21:55:19 PST 2016 x86_64
Kernel command line: cros_secure console= loglevel=7 init=/sbin/init cros_secure oops=panic panic=-1 root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 dm="1 vroot none ro 1,0 2539520 verity payload=PARTUUID=597c006a-89d7-bb42-a45d-d1ef9d3cfe03/PARTNROFF=1 hashtree=PARTUUID=597c006a-89d7-bb42-a45d-d1ef9d3cfe03/PARTNROFF=1 hashstart=2539520 alg=sha1 root_hexdigest=f275e92521c42221b24926cbb06446e01be1ec1b salt=c65bec8bed83c4f775c721df083454cfd30d003306ab86e3af041a6b0c5769ed" noinitrd vt.global_cursor_default=0 kern_guid=597c006a-89d7-bb42-a45d-d1ef9d3cfe03 add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic
Build Date: 12 February 2015  03:37:52PM
xorg-server 2:1.15.1-0ubuntu2~precise5 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.30.2
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/tmp/Xorg.crouton.3.log", Time: Sun Dec 11 01:56:50 2016
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
setversion 1.4 failed: Permission denied
Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension SECURITY
Initializing built-in extension XINERAMA
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension COMPOSITE
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension XFree86-VidModeExtension
Initializing built-in extension XFree86-DGA
Initializing built-in extension XFree86-DRI
Initializing built-in extension DRI2
Loading extension GLX
xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
setversion 1.4 failed: Permission denied
crouton: version 1-20161129162558~master:5f2f11f9
release: precise
architecture: amd64
xmethod: xorg
targets: xfce
host: version 9000.15.0 (Official Build) dev-channel gnawty
kernel: Linux localhost 3.10.18 #1 SMP Thu Dec 1 21:55:19 PST 2016 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Another instance of croutontriggerd running, waiting...
/etc/xdg/xfce4/xinitrc: 1: /etc/xdg/xfce4/xinitrc: ssh-agent: not found
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
(xfsettingsd:8942): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",
xfdesktop[8936]: starting up
(xfce4-session:8924): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",
(xfwm4:8930): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",
(xfdesktop:8936): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",
(polkit-gnome-authentication-agent-1:8940): GLib-CRITICAL **: g_variant_new_string: assertion `string != NULL' failed
(polkit-gnome-authentication-agent-1:8940): polkit-gnome-1-WARNING **: Failed to register client: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
(migrate:8951): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",
(xfce4-settings-helper:8952): xfce4-settings-helper-WARNING **: Failed to get the _NET_NUMBER_OF_DESKTOPS property.
Please describe your issue:
Whenever I try to start up xfce on my Acer Chromebook C11, it always ends up with a completely black screen.
If known, describe the steps to reproduce the issue:

This seems to be pretty much the same as this issue: https://github.com/dnschneid/crouton/issues/2934
Please track it there.


circle.yml: Build and test with and without ocaml

First build and test (which assumes that ocaml is not present in the base
circle image) then install opam etc and do it again with ocaml enabled.
Signed-off-by: Ian Campbell<EMAIL_ADDRESS>

circle failed the opam init --yes test step with curl: (6) Could not resolve host: opam.ocaml.org, but then went on to build and test without ocaml. It did at least fail things overall though. Since this is unrelated I'll hit retry.

LGTM


'NoneType' object has no attribute 'nodeValue'

Code I attempted to run:
import upnpy

upnp = upnpy.UPnP()

devices = upnp.discover()
print(devices)

Stacktrace
  File "main.py", line 8, in <module>
    devices = upnp.discover()
  File ".../upnpy/upnp/UPnP.py", line 33, in discover
    for device in self.ssdp.m_search(discover_delay=delay, st='upnp:rootdevice', **headers):
  File ".../upnpy/ssdp/SSDPRequest.py", line 50, in m_search
    devices = self._send_request(self._get_raw_request())
  File ".../upnpy/ssdp/SSDPRequest.py", line 100, in _send_request
    device = SSDPDevice(addr, response.decode())
  File ".../upnpy/ssdp/SSDPDevice.py", line 84, in __init__
    self._get_base_url_request()
  File ".../upnpy/ssdp/SSDPDevice.py", line 21, in wrapper
    return func(device, *args, **kwargs)
  File ".../upnpy/ssdp/SSDPDevice.py", line 138, in _get_base_url_request
    parsed_url = urlparse(root.getElementsByTagName('URLBase')[0].firstChild.nodeValue)
AttributeError: 'NoneType' object has no attribute 'nodeValue'```

Same here

miniupnpc is not the same library..

Hi, thank you for your issue. Does 3a7320a fix this issue?


Add type.name

Codecov Report

Merging #882 into master will increase coverage by 0.09%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #882      +/-   ##
==========================================
+ Coverage   63.62%   63.71%   +0.09%
==========================================
  Files          88       88
  Lines       14775    14765      -10
  Branches     3285     3270      -15
==========================================
+ Hits         9401     9408       +7
+ Misses       3216     3214       -2
+ Partials     2158     2143      -15

Impacted Files
Coverage Δ

vm/src/obj/objtype.rs
73.3% <100%> (+0.32%)
:arrow_up:

vm/src/obj/objlist.rs
74.01% <0%> (-0.16%)
:arrow_down:

wasm/lib/src/convert.rs
0% <0%> (ø)
:arrow_up:

vm/src/obj/objtuple.rs
66.84% <0%> (ø)
:arrow_up:

vm/src/obj/objstr.rs
71.84% <0%> (+0.16%)
:arrow_up:

vm/src/builtins.rs
67.04% <0%> (+0.38%)
:arrow_up:

vm/src/obj/objdict.rs
72.98% <0%> (+0.4%)
:arrow_up:

vm/src/obj/objset.rs
73.45% <0%> (+1.62%)
:arrow_up:

Continue to review full report at Codecov.

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


Consolidate Components imports in app.jsx

https://www.loom.com/share/c59b05a00a2548afa4054a0a30afcfcd?sid=0f0a933b-6892-458f-891b-813fde82377e
This task should be done after this task has been completed first.
An example of consolidation looks like:
From this:
import Homepage from './pages/Homepage' // other imports
to this:
import { Homepage, AboutPage, LoginPage, MyMooJournalPage, NewJournalEntryPage, SignUpPage } from './pages';

Completed the import consolidation


CI: Split workflows

Pull Request Test Coverage Report for Build<PHONE_NUMBER>3
Details

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

Totals

Change from base Build<PHONE_NUMBER>1:
0.0%

Covered Lines:
1108

Relevant Lines:
1113

💛  - Coveralls


Include transitive dependencies to interop imports

Purpose
This change will include transitive dependencies to interop imports so that gradle build for stdlibs that now uses interop do not fail.
Fixes #20102
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[ ] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

windows build is failing due to cmd too long issue. will check on it.


support force_exit

Syntax:	force_exit exit_time;
Default:	—
Context:	mail
force a worker to exit after exit_time

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.希瓦 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.