Training rasa and domain files on 3.0 RC1

I'm porting an old rasa project to the 3.0 rc1. At some point, I got the domain.yml working, so I hit rasa interactive to train.
> python -m rasa interactive

/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Loading domain from 'domain.yml' failed. Using empty domain. Error: 'You need to specify a value for the key 'value' in the slot mapping of type 'from_intent' for slot 'vegetarian'. Please see https://rasa.com/docs/rasa/domain#slots for more information.'
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'goodbye' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'bot_challenge' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'buy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'buy_fancy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'greet' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'mood_great' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'mood_unhappy' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'affirm' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'deny' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'buy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'goodbye' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'buy_fancy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'stop' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'bot_challenge' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Loading domain from 'domain.yml' failed. Using empty domain. Error: 'You need to specify a value for the key 'value' in the slot mapping of type 'from_intent' for slot 'vegetarian'. Please see https://rasa.com/docs/rasa/domain#slots for more information.'
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'goodbye' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'bot_challenge' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'buy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/rules.yml':
Found intent 'buy_fancy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'greet' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'mood_great' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'mood_unhappy' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'affirm' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'deny' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'buy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'goodbye' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'buy_fancy_pizza' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'stop' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Issue found in 'data/stories.yml':
Found intent 'bot_challenge' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
Core training was skipped because no valid domain file was found. Only an NLU-model was created. Please specify a valid domain using the '--domain' argument or check if the provided domain file exists.
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/engine/recipes/recipe.py:35: FutureWarning: From Rasa Open Source 4.0.0 onwards it will be required to specify a recipe in your model configuration. Defaulting to recipe 'default.v1'. (will be removed in 3.0.0)
  "From Rasa Open Source 4.0.0 onwards it will be required to specify "
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Found data for training policies but no policy was configured.
  More info at https://rasa.com/docs/rasa/policies
2021-11-08 14:05:42 INFO     rasa.engine.training.hooks  - Restored component 'CountVectorsFeaturizer' from cache.
2021-11-08 14:05:42 INFO     rasa.engine.training.hooks  - Restored component 'CountVectorsFeaturizer' from cache.
2021-11-08 14:05:42 INFO     rasa.engine.training.hooks  - Restored component 'DIETClassifier' from cache.
2021-11-08 14:05:42 INFO     rasa.engine.training.hooks  - Restored component 'LexicalSyntacticFeaturizer' from cache.
2021-11-08 14:05:43 INFO     rasa.engine.training.hooks  - Restored component 'RegexFeaturizer' from cache.
Your Rasa model is trained and saved at 'models/nlu-20211108-140541-agile-data.tar.gz'.
Can not run interactive learning on an NLU-only model.

There's a bunch of warnings, but the core model did not train. Looking at the warnings I figured this was due to the domain.yml file, but that's a bit strange.
version: '2.0'
config:
  store_entities_as_slots: true
session_config:
  session_expiration_time: 60
  carry_over_slots_to_new_session: true
intents:
- goodbye:
    use_entities: true
- affirm:
    use_entities: true
- greet:
    use_entities: true
- buy_pizza:
    use_entities: true
- stop:
    use_entities: true
- bot_challenge:
    use_entities: true
- inform:
    use_entities: true
- buy_fancy_pizza:
    use_entities: true
- deny:
    use_entities: true
- mood_great:
    use_entities: true
- mood_unhappy:
    use_entities: true
- request_fancy_form:
    use_entities: true
- request_pizza_form:
    use_entities: true
entities:
- pizza_size
- pizza_type
- vegetarian
slots:
  pizza_size:
    type: text
    influence_conversation: true
    mappings:
    - type: from_entity
      entity: pizza_size
  pizza_type:
    type: text
    influence_conversation: true
    mappings:
    - type: from_entity
      entity: pizza_type
  vegetarian:
    type: bool
    influence_conversation: true
    mappings:
    - type: from_intent
      intent: [affirm, deny]
responses:
  utter_greet:
  - text: Hey! How are you?
  utter_cheer_up:
  - image: https://i.imgur.com/nGF1K8f.jpg
    text: 'Here is something to cheer you up:'
  utter_did_that_help:
  - text: Did that help you?
  utter_happy:
  - text: Great, carry on!
  utter_goodbye:
  - text: Bye
  utter_iamabot:
  - text: I am a bot, powered by Rasa.
  utter_submit:
  - text: I will now order a pizza for you!
  utter_pizza_slots:
  - text: I will order a {pizza_size} {pizza_type} pizza.
  utter_ask_continue:
  - text: Are you sure you want to stop the form?
  utter_ask_pizza_size:
  - text: What size would you like your pizza to be?
  utter_ask_pizza_type:
  - text: What kind of pizza would you like to buy?
actions:
- action_ask_vegetarian
- action_ask_pizza_type
- utter_ask_continue
- utter_goodbye
- utter_greet
- utter_iamabot
- utter_pizza_slots
- utter_submit
- validate_fancy_pizza_form
- validate_simple_pizza_form
forms:
  simple_pizza_form:
    required_slots:
      - pizza_size
      - pizza_type
  fancy_pizza_form:
    required_slots:
      - pizza_size
      - pizza_type
      - vegetarian
e2e_actions: []

The warnings mention that mood_great is not in my domain.yml file while it is.

Found it.
It seems I needed to add a value to the mappings for the vegetarian slot. There was a user warning for it:
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Loading domain from 'domain.yml' failed. Using empty domain. Error: 'You need to specify a value for the key 'value' in the slot mapping of type 'from_intent' for slot 'vegetarian'. Please see https://rasa.com/docs/rasa/domain#slots for more information.'

But every warning for the intents was false and, if I'm honest, distracted me from the real solution.

There may be a secondary concern here too. The project contains a form from Rasa 2.x that used custom actions for a boolean slot to generate a form dynamically.
class AskForPizzaTypeAction(Action):
    def name(self) -> Text:
        return "action_ask_pizza_type"

    def run(
        self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict
    ) -> List[EventType]:
        if tracker.get_slot("vegetarian"):
            dispatcher.utter_message(text=f"What kind of pizza do you want?",
                                     buttons=[{"title": p, "payload": p} for p in VEGETARIAN_PIZZAS])
        else:
            dispatcher.utter_message(text=f"What kind of pizza do you want?",
                                     buttons=[{"title": p, "payload": p} for p in MEAT_PIZZAS])
        return []

class ValidateFancyPizzaForm(FormValidationAction):
    def name(self) -> Text:
        return "validate_fancy_pizza_form"

    def validate_vegetarian(
            self,
            slot_value: Any,
            dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: DomainDict,
    ) -> Dict[Text, Any]:
        """Validate `pizza_size` value."""
        if tracker.get_intent_of_latest_message() == "affirm":
            dispatcher.utter_message(text="I'll remember you prefer vegetarian.")
            return {"vegetarian": True}
        if tracker.get_intent_of_latest_message() == "deny":
            dispatcher.utter_message(text="I'll remember that you don't want a vegetarian pizza.")
            return {"vegetarian": False}
        dispatcher.utter_message(text="I didn't get that.")
        return {"vegetarian": None}

How should this be configured in Rasa 3.x. I could do something like this;
  vegetarian:
    type: bool
    influence_conversation: true
    mappings:
    - type: from_intent
      value: foobar
      intent: [affirm, deny]

But the value that I put in here is a bit theoretical. It is either true or false depending on the intent and this is handled by the validate_vegetarian validator. Should I just fill in a random value here?

It seems something is up with slots here. I'm using the aforementioned slots setting in the domain file. Here's what I see just before I select vegetarian.
 #    Bot                                                                You
────────────────────────────────────────────────────────────────────────────────────
 1    action_listen
────────────────────────────────────────────────────────────────────────────────────
 2                                                                         hi there
                                                                 intent: greet 1.00
────────────────────────────────────────────────────────────────────────────────────
 3    utter_greet 1.00
      Hey!
      Buttons:
      1: yes (/affirm)
      2: no (/deny)
      Type out your own message...

Current slots:
        pizza_size: None, pizza_type: None, vegetarian: None, requested_slot: vegetarian, session_started_metadata: None

------
? The bot wants to run 'action_listen', correct? Yes
? Would you like to order a vegetarian pizza? (Use arrow keys)
 » 1: yes (/affirm)
   2: no (/deny)
   Type out your own message...

Somehow, after selection the affirm intent I get this:
 #    Bot                                                                You
────────────────────────────────────────────────────────────────────────────────────
 1    action_listen
────────────────────────────────────────────────────────────────────────────────────
 2                                                                         hi there
                                                                 intent: greet 1.00
────────────────────────────────────────────────────────────────────────────────────
 3    utter_greet 1.00
      Hey!
      Buttons:
      1: yes (/affirm)
      2: no (/deny)
      Type out your own message...
      action_listen 1.00
────────────────────────────────────────────────────────────────────────────────────
 6                                                                          /affirm
                                                                intent: affirm 1.00

Current slots:
        pizza_size: None, pizza_type: None, vegetarian: None, requested_slot: vegetarian, session_started_metadata: None

------
? The bot wants to run 'utter_happy', correct? (Y/n)

I think this is caused by my stories;
- story: happy path
  steps:
  - intent: greet
  - action: utter_greet
  - intent: mood_great
  - action: utter_happy

- story: sad path 1
  steps:
  - intent: greet
  - action: utter_greet
  - intent: mood_unhappy
  - action: utter_cheer_up
  - action: utter_did_that_help
  - intent: affirm
  - action: utter_happy

In Rasa 2.x I'd have a custom action completely be able to take over. But it seems in 3.x the stories.yml can interfere with my forms here.

Found it.
It seems I needed to add a value to the mappings for the vegetarian slot. There was a user warning for it:
/home/vincent/Development/how-to-rasa/venv/lib/python3.7/site-packages/rasa/shared/utils/io.py:99: UserWarning: Loading domain from 'domain.yml' failed. Using empty domain. Error: 'You need to specify a value for the key 'value' in the slot mapping of type 'from_intent' for slot 'vegetarian'. Please see https://rasa.com/docs/rasa/domain#slots for more information.'

But every warning for the intents was false and, if I'm honest, distracted me from the real solution.

There's nothing new changed here actually - the from_intent slot mapping always required value parameter as part of its validation, see here on 2.8.x. And about the other intents warnings, again nothing new changed here, it's a consequence of initialising an empty domain caused by that initial error. I don't know if it's desirable to silence these or how would you do that.

Is this pattern still possible in Rasa 3.x or should I use something like below now?

Yup, both patterns should be possible, there's also a test case about dynamic forms in our QA plan.

it seems in 3.x the stories.yml can interfere with my forms here.

I don't know very well how rasa interactive works with the action server to better understand where the issue is coming from. In 2.x,  FormValidationAction worked fine with rasa interactive in this specific example, by that I mean you didn't see any interference? Because no changes were made to stories or rasa interactive 🤔

I'll turn the issue into a repo that you can clone. That said, it seems there are two tasks.

[ ] figure out if the custom actions trick still works
[ ] fix the intent error messages so that the user isn't confused anymore when they forget to fill in a value in the domain.yml file.

I have made a 3.x-issue-branch-branch on this repo that should allow folks to reproduce the issue. The project in question is in the 09-video-2-custom-forms folder.

I think I have found the custom actions issue. It's certainly worth a deeper discussion with the research team but it's out of scope here. I'll change the title of this issue to reflect that this issue is more about the debug information that we share with users.

Thanks @koaning Would be great if you could give more details about the issue you found, unless you've created a new follow-up issue to this one?


When two tribes go to war... uMatrix & uBo updates [hosts+lists]

♫ ♩ When two tribes go to war... ♬ ♪
This has taken me a couple of hours to troubleshoot (but in the process I cleaned out about 60 dead prefs in my prefs.js, so yay for me!)

 It added it, but completely blank.
Then I noticed I had lists (and hosts) not updated. When I tried manually (using the Update now button), an icon with a mouse-over tooltip displaying A network error prevented the resource from being updated would appear next to each subscribed list.
Fired up FF54 from 7 days ago, it all updated fine. My profile hasn't changed. So I thought maybe it's 55 and something like FPI or one of the new prefs.
So off to a nilla FF. Added uBo. Lists updated fine. Added my exact same user.js from my live 55, restarted, purged the lists, and they updated fine. Hmmm, not the user.js
Did a compare of the 55-NILLA prefs.js (with my user.js applied) to my 55-LIVE version's (which also has the user.js applied, doh!) - nothing do with any manual pref changes or something silly I did

ignored all the extensions.* and timestamps etc
cleaned about 60 dead prefs not cleaned up by mozilla (my profile is like 4 years old - stuff in there set by mozilla and never removed, I tell ya)

I exported all my uBo bits and bobs and reset uBo. Updates still failed.
Eventually I turned off uMatrix and voila - uBo was all good.

 I am not sure if either of them updated recently. I have only been on 55 for 7 days. I did do some cleaning out of "My Rules" in uBo. Just the usual per domain tweaks in either extension. I do not know how or why this happened.
I have never had to have uMatrix allow XHR behind-the-scenes, and uBo always updated lists etc fine. I do not think I screwed anything up in uBo (because it updated when uM was disabled, and it failed when reset?), and I'm almost certain I didn't change anything in uMatrix, especially in a global context.
Not sure if I can test default uBo in NILLA (which I already have set up), and add uM to it, because I do not think uM default is hard-mode.
Ideas? PS: I took some piccies if you want me to post them

using

uMatrix 1.0 which has been out since April
uBlock Origin v1.13.8 which was released July 18, 2017

I must have done something? I'm baffled (I can rule out corruption I think)

On my config with uMatrix blocking everything except image & css by default and uBlock in hard mode i don't have the problem to update the 3rd-party filters:

OK, I think it is corruption. Someone else had a similar issue (in ghacks article comments). I think it has been caused by an improperly configured rule. I manually added the rules a few days ago. Someone else has had Vivaldi and Chrome and FF all do this. He just restored his 2 day old ublock0.sqlite
I will remove the uM rule, reset uM, replace the sqlite, and re-import all my shizzle .. and retest
Can I ask how you added BarbBlock. My doesn;t say BarbBlock, it says "https://ssl.bblck.me/blacklists/ublock-origin.txt"

By clicking this link.

Yeah, I already worked it out. When you click on the link a confirmation dialog opens like this
Block₀: Add the following URL to your custom filter lists?

Title: "BarbBlock"
URL: https://ssl.bblck.me/blacklists/ublock-origin.txt

See the Title part? In uBo if you restore a backup, you lose the titles for custom lists - hence why mine said the file. Sucks to be me

Just unsubscribe and re-add them, if there aren't to much?

OK, am getting annoyed. Its not corruption of any sort. I did all this

I will remove the uM rule, reset uM, replace the sqlite, and re-import all my shizzle .. and retest

No dice. It poked without the uM rule. I will set up a nilla 55 (no user,js stuff) with nilla uM and uBo - damnit.

Just unsubscribe and re-add them, if there aren't to much?

Not sure what you mean. I purged em all in early tests. I have added and removed Barb a few times. I have removed and imported and backed up and restored a dozen things a dozen times.

Just to regain the title, nothing more.

What uM rules do you have for behind the scenes and for xhr?

Take a look here.

You probably removed some of the default rules in uMatrix

The default rules on a uMatrix install would be:

https-strict: behind-the-scene false
matrix-off: about-scheme true
matrix-off: behind-the-scene true
matrix-off: chrome-extension-scheme true
matrix-off: chrome-scheme true
matrix-off: localhost true
matrix-off: opera-scheme true
referrer-spoof: behind-the-scene false
ua-spoof: behind-the-scene false

block

css allow

frame block

image allow

1st-party * allow
1st-party frame allow

matrix-off: behind-the-scene true <- this fucker - it was missing. I guess I removed it.
I loaded my old 54, exported matrix rules, did the same with current 55 and that fukker there stood out like a donkey's testicles

Yep take a look at the uMatrix Wiki here and the Issues here.

I can search anything in uMatrix issues - its all shutout due to the number of silly issues

PS: Mine is almost identical to yours @Forsaked  - I am only missing * * xhr block - how many sites do you need to ok that on? If its only a few sites for posting, then I'll follow suit - and I don't block media

Nearly everything with a login page needs XHR, so i have many sites on my whitelist for XHR.

I am now officially a "human bug" award winner :)


make travis generate the keys

This could fix the travis build.

This did make Travis set the application key, but didn't fix the build.


zero allocation  generic lexer still instantiates strings

generic lexer still uses string concat to create tokens.
found a way to eliminate them as much as possible.
this has conequence on the fsm lexer that may or may not be tedious to address.

[ ] remove NodeAction on fsm lexer nodes
[ ] String delimiters escaping : use callback instead of actions
[ ] rework ConsumeComment
branch https://github.com/b3b00/csly/commits/technical/%23123


[DEBUG] fix compatibility with python 3.8

This should fix #14

This has been integrated into Olympe 1.2.1


Implement navigation according to the best practice

Implement navigation according to: https://kenticocloud.com/blog/managing-navigation-menus-in-kentico-cloud
Blocked by: missing sample content in the reference project (975bf280-fd91-488c-994c-2f04416e5ee3)

we have a working sample here: https://github.com/Kentico/cloud-articles-examples/tree/master/cloud-example-navigation
there's no added value in implementing this here


add: github-cli-git

Add go to deps list

It's already there:
pacdeps=("go-bin")

Seems to be a bug with pacdeps in the develop branch, gonna manually test on master.

@saenai255 issue with go-bin

@WRM-42 Can you test by running the following commands, then screenshotting:
pacstall -U Henryws fix-pacdeps-again
pacstall -I $your_scripts
# screenshot them, upload them here
pacstall -U pacstall master # if you want to go back to the master branch

Pacdep now works correctly, looks like an issue with Go

I guess the go issue has to do with the fact that the root has to be changed as an env variable which is done by the pacstall script but you also need to source/update the current environment to have the change be applied which doesn't obviously happen in this case causing it to break.

So what should we do?

Maybe perhaps instead use distribution's golang-go: https://packages.ubuntu.com/jammy/golang-go


Font-rs: stop using hashmap_core

Return to vanilla font-rs, now that we're in userspace and have a heap.
This might need a PR to font-rs to expose a font's max_ascent and max_descent

I keep forgetting Hashmap uses a random seed 🤦


Fix CRC16 Hashslot Calculation

This PR addresses the hash slot calculation issue #395 by ensuring that key strings without both left and right brackets (e.g., "Hm{W\x13\x1c") are used in their entirety within the CRC16 hash function.
I also added more tests and separated CRC16 hashlot implementation into its own folder.

Not directly related to the PR but thought this would be good place to ask 😄
Why was CRC16 chosen as the key slot hash function? There's much more effort spent in industry to optimize CRC32 variants. We have CRC32C available as intrinsic and there's a lot of even faster tricks with SIMD (The intrinsic would probably win against the SIMD for the smaller data). Any background on this?

Not directly related to the PR but thought this would be good place to ask 😄
Any background on why was CRC16 chosen as the key slot hash function? There's much more effort spent in industry to optimize CRC32 variants. We have CRC32C available as intrinsic and there's a lot of even faster tricks with SIMD. The intrinsic would probably win against the SIMD for the smaller data and very likely against the current LUT approach which will incur L1-L2 misses (would have to measure this).
cc @badrishc

Not directly related to the PR but thought this would be good place to ask 😄
Any background on why was CRC16 chosen as the key slot hash function? There's much more effort spent in industry to optimize CRC32 variants. We have CRC32C available as intrinsic and there's a lot of even faster tricks with SIMD. The intrinsic would probably win against the SIMD for the smaller data and very likely against the current LUT approach which will incur L1-L2 misses (would have to measure this).
cc @badrishc

I believe it is done as precaution since people expect it to be crc16 like what Redis is using.
If there is no reason for the consumers of Garnet to expect CRC16 mapping, we can use whatever hash function (even non crc based one.
I didn't know that people expect it to be explicitly CRC16 until an issue was opened, which actually relates to a problem with how we extract the substring with the hashtags and not the hash function itself.

I believe it is done as precaution since people expect it to be crc16 like what Redis is using. If there is no reason for the consumers of Garnet to expect CRC16 mapping, we can use whatever hash function (even non crc based one. I didn't know that people expect it to be explicitly CRC16 until an issue was opened, which actually relates to a problem with how we extract the substring with the hashtags and not the hash function itself.

Ah right, I didn't know it was specced out to Redis. Looking at it now it makes sense as there's 16384 hash slots. Disregard my message 😄

Not directly related to the PR but thought this would be good place to ask 😄
Any background on why was CRC16 chosen as the key slot hash function? There's much more effort spent in industry to optimize CRC32 variants. We have CRC32C available as intrinsic and there's a lot of even faster tricks with SIMD. The intrinsic would probably win against the SIMD for the smaller data and very likely against the current LUT approach which will incur L1-L2 misses (would have to measure this).
cc @badrishc

Hi Paulus, can you confirm that the changes you made to CRC logic do not change the hash computation compared to what was there before, so that we return the compatibility with what Redis uses?

There was no behaviour change in that minor optimization.
CRC16 Loop body (https://github.com/microsoft/garnet/pull/198)
Before
;  V01 arg1         [V01,T04] (  3,  3   )     int  ->  rdx         single-def
;  V02 loc0         [V02,T02] (  5, 14   )  ushort  ->  rsi
;  V03 loc1         [V03,T03] (  3,  6   )    long  ->  rdi         single-def
;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;  V05 tmp1         [V05,T00] (  3, 24   )    long  ->  rbx         "impSpillLclRefs"
;  V07 cse1         [V07,T05] (  2,  4.25)    long  ->  rax         hoist "CSE #02: aggressive"

; ushort result = 0;
       xor      esi, esi
; byte* end = data + len;
       movsxd   rdi, edx
       add      rdi, rbx
; while (data < end)
       cmp      rbx, rdi
       jae      SHORT LOOP_EXIT
; ...
       mov      LUT_PTR, 0x7FFC59808C18    ; LUT_PTR = 0x7FFC59808C18;
LOOP_ENTRY:
       lea      rcx, [rbx+0x01]            ; rcx = rbx + 1;
       mov      rbp, rcx                   ; rbp = rcx;

; tmp = (((result >> 8) ^ *data++) & 0xff)
       mov      rcx, qword ptr [LUT_PTR]   ; rcx = [LUT_PTR];
       mov      edx, esi                   ; edx = esi;
       sar      edx, 8                     ; edx >>= 8;
       movzx    r8, byte  ptr [rbx]        ; r8 = [rbx]; Load byte from address in rbx into r8
       xor      edx, r8d                   ; edx = edx ^ r8d;
       movzx    rdx, dl                    ; rdx = dl;

; result = (ushort)(*(crc_table_ptr + tmp) ^ (result << 8));
       movzx    rcx, word  ptr [rcx+2*rdx] ; rcx = [rcx + 2*rdx];
       shl      esi, 8                     ; esi <<= 8;
       xor      ecx, esi                   ; ecx = ecx ^ esi;
       movzx    rsi, cx                    ; rsi = cx;

       cmp      rbp, rdi
       mov      rbx, rbp
       jb       SHORT LOOP_ENTRY
LOOP_EXIT:
; ...

After
; arg1  int     ->  rdx         single-def
; loc0  ushort  ->  rax
; loc1  long    ->  rdx         single-def
; loc2  long    ->  rcx
; tmp1  long    ->  rcx         "impSpillLclRefs"
; cse0  long    ->   r8         hoist "CSE #01: aggressive"

; ushort result = 0;
       xor      eax, eax
; byte* end = data + len;
       movsxd   rdx, edx
       add      rdx, rcx
; while (data < end)
       cmp      rcx, rdx
       jae      SHORT EXIT

       mov      LUT_PTR, 0x2195CA42EB0      ; LUT_PTR = 0x2195CA42EB0;
LOOP_ENTRY:  ;; offset=0x0017
; tmp = data++
       lea      r10, [rcx+0x01]

; nuint index = (nuint)(uint)((result >> 8) ^ *(data + 1)) & 0xff;
       mov      r9d, eax                    ; r9d = eax;
       sar      r9d, 8                      ; r9d >>= 8
       movzx    rcx, byte  ptr [rcx]        ; rcx = [rcx]
       xor      ecx, r9d                    ; ecx = ecx ^ r9d
       movzx    rcx, cl                     ; zero extend

; result = (ushort)(Unsafe.Add(LUT_PTR, rcx) ^ (result << 8));
       movzx    rcx, word  ptr [LUT_PTR+2*rcx] ; rcx = [LUT_PTR + 2*rcx];
       shl      eax, 8                         ; eax <<= 8;
       xor      eax, ecx                       ; eax = eax ^ ecx;
       movzx    rax, ax                        ; rax = ax;

       cmp      r10, rdx
       mov      rcx, r10
       jb       SHORT LOOP_ENTRY
EXIT:
; ...

The intrinsic would probably win against the SIMD for the smaller data and very likely against the current LUT approach which will incur L1-L2 misses (would have to measure this).

The cluster spec requires us to map keys to the 16384 hash slot space. This is a very common server side operation and has measurable perf, so if there is an opportunity to speed it up that would be good.
But I think existing clients expect the specific CRC mapping chosen by Redis as they might use this to route keys? (@mgravell can confirm).

Unrelated, speaking of hash code logic, our server side key hash logic is here: https://github.com/microsoft/garnet/blob/main/libs/storage/Tsavorite/cs/src/core/Utilities/Utility.cs#L179
Any way to improve its speed, while maintaining (or improving) the good hash distribution/spread property, would be interesting as well.

The intrinsic would probably win against the SIMD for the smaller data and very likely against the current LUT approach which will incur L1-L2 misses (would have to measure this).

The cluster spec requires us to map keys to the 16384 hash slot space. This is a very common server-side operation and has measurable perf impact, so if there is an opportunity to speed it up that would be good.
a
But I think existing clients expect the specific CRC mapping chosen by Redis as they might use this to route keys? (@mgravell can confirm).

I guess the issue is that when routing requests, the client sees only the key and it has to perform the hashslot calculation to figure out which shard is responsible for that key.
We can use a different hash function but the client needs to be aware of it to perform the correct hashslot calculation and route the request appropriately.
I am wondering if there is a way in C# to provide a string code snippet and execute it at runtime. Could be a solution for the client to acquire the HashSlot  calculation implementation. Though it sounds risky from security perspective.

Have you verified that clients are doing this CRC computation, or as they just querying some server and using the redirect to determine the mapping?

Have you verified that clients are doing this CRC computation, or are they just querying some server and using the redirect to determine and cache the mapping?

I did not check this at first, just assumed this is how they would be doing it. However, I quick search reveals that SERedis is doing something like what I said above because I can see they have their own CRC16 implementation
https://github.com/StackExchange/StackExchange.Redis/blob/61c13c21844ff3e92eb077523dc876688878ba25/src/StackExchange.Redis/ServerSelectionStrategy.cs#L63

I can 100% confirm that cluster-aware clients try to perform the hash
locally for routing. The alternatives are:

perform dumb routing and blindly respond to -MOVED (or issue the
command that returns the slot) - adds latency, makes a mess of ordering
use a cluster-aware proxy, which just kicks the can up a step to the
proxy, since the proxy still has to route somehow

The client must know the hashing algorithm to route efficiently. At the
moment only the predefined crc16 with the specified seed data is
supported. Could another algorithm be negotiated? I mean, maybe, if it is
demonstrably faster, but asking client libraries to support it would be
painfully slow - it basically blocks all clients until they choose to
implement that hash (if they ever do), plus we'd need to come up with a
mechanism to even convey that difference.
On Sat, 18 May 2024, 20:50 vazois, @.***> wrote:

Have you verified that clients are doing this CRC computation, or are they
just querying some server and using the redirect to determine and cache the
mapping?
I did not check this at first, just assumed this is how they would be
doing it. However, I quick search reveals that SERedis is doing something
like what I said above because I can see they have their own CRC16
implementation
https://github.com/StackExchange/StackExchange.Redis/blob/61c13c21844ff3e92eb077523dc876688878ba25/src/StackExchange.Redis/ServerSelectionStrategy.cs#L63
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/garnet/pull/399#issuecomment-2118988332,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAEHMCDT3NHXAWKLLBC4RDZC6WJTAVCNFSM6AAAAABH5D2B2OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJYHE4DQMZTGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

I think cost of switching the hash function greatly outweights any benefits of slightly faster, given it's apparently not a implementation detail. Also I think naive CRC16 lookup table loop is doing just good enough here given the inputs are small.

Unrelated, speaking of hash code logic, our server side key hash logic is here: https://github.com/microsoft/garnet/blob/main/libs/storage/Tsavorite/cs/src/core/Utilities/Utility.cs#L179
Any way to improve its speed, while maintaining (or improving) the good hash distribution/spread property, would be interesting as well.

This on the other hand probably could be improved but with good benchmark/profiling data as proof of course.


get choices for completion

In order to get the enums for completion in the interactive shell, I have to be able to get the choices from the command arguments

@oakeyc,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@oakeyc would you take a look at the Travis CI failure?


feat: switch fallback to aws lambda compatible deterministic zip library

#55  👈
main

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

Join @pevisscher and the rest of your teammates on  Graphite


RangeError: Maximum call stack size exceeded.

Bug exists only if input is placed inside bootstrap's modal. Error occurs if you change hour/minute.

Reproduction Link
https://jsfiddle.net/rz6kLqqq/
Your Environment

flatpickr version used: 2.4.4
Browser name and version: Chrome 56
OS and version: Windows 10

Possible duplicate of #642

any solution? i have same problem with Materializecss modal

@thallysondias please open a new issue, including a link to reproduce the issue. this issue refers to a really old version and it might not be the same problem

Inside your config, set static: true. Like so:
data(){     return {       config: { static: true }     } }

just need to remove tabindex="-1" on your modal div. the problem will gone

If using React-bootstrap, use enforceFocus={false} on Modal tag.

just need to remove tabindex="-1" on your modal div. the problem will gone

its working
Thanks

just need to remove tabindex="-1" on your modal div. the problem will gone

its working. But Why?


Install failure

I haven't dug into this at all but will when I find some time.  Meanwhile, error info below...
Installing<EMAIL_ADDRESS>failed.Hide output…

<EMAIL_ADDRESS>install /private/var/folders/3d/vjvbzxq963b_x2bjh2lqbl2h0000gn/T/apm-install-dir-116725-2271-7s44lf/node_modules/atom-clang
node-gyp rebuild

/bin/sh: llvm-config: command not found
gyp: Call to 'llvm-config --includedir' returned exit status 127. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: gyp failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/Applications/Atom.app/Contents/Resources/app/apm/node_modules/npm/node_modules/node-gyp/lib/configure.js:357:16)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:820:12)
gyp ERR! System Darwin 15.6.0
gyp ERR! command "node" "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /private/var/folders/3d/vjvbzxq963b_x2bjh2lqbl2h0000gn/T/apm-install-dir-116725-2271-7s44lf/node_modules/atom-clang
gyp ERR! node -v v0.10.40
gyp ERR! node-gyp -v v2.0.2
gyp ERR! not ok
npm ERR! Darwin 15.6.0
npm ERR! argv "/Applications/Atom.app/Contents/Resources/app/apm/bin/node" "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/npm/bin/npm-cli.js" "--globalconfig" "/Users/jgriffith/.atom/.apm/.apmrc" "--userconfig" "/Users/jgriffith/.atom/.apmrc" "install" "/private/var/folders/3d/vjvbzxq963b_x2bjh2lqbl2h0000gn/T/d-116725-2271-16b1pt3/package.tgz" "--target=0.37.8" "--arch=x64"
npm ERR! node v0.10.40
npm ERR! npm  v2.13.3
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>install: node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the atom-clang package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls atom-clang
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /private/var/folders/3d/vjvbzxq963b_x2bjh2lqbl2h0000gn/T/apm-install-dir-116725-2271-7s44lf/npm-debug.log

you need to have clang-3.8 or greater installed. See README.md 🎱


Load all the fixtures all the time.

Make all the fixtures globally accessible without the need to call fixtures method in each spec.
It achieves that by setting config.global_fixtures = :all inside the rspec config

@DamirSvrtan  I've run the tests on Travis more than 5 times, and they are constantly green

This makes sense to me. Few questions if you happen to know:

does this mean that all the fixtures are loaded and inserted before every test? is that the difference between these approachs?
are the specs running considerably slower now?

does this mean that all the fixtures are loaded and inserted before every test? is that the difference between these approachs?

Fixtures are always inserted before tests run (all of them), Rails is doing that with one fast batch insert, that makes them faster than the factories. I took a quick look at the rspec-rails codebase and it looks like they just use include ActiveRecord::TestFixtures, so both approaches are doing the same thing and that is to insert predefined data set before tests run. Not sure what was rspec-rails intention to specify fixtures in each test.

are the specs running considerably slower now?

I've benchmarked this, and no they run with the same speed, under the hood they are always inserted before test suite runs...all of them (wether we use global option or not)

Thanks for the clarification @dixpac!


Using periodic events disables iOS Location Background Mode

I want to periodically send location updates in the background using two methods:

Utilizing onStart() with Timer.periodic(...)
Utilizing onRepeatEvent()

In both cases, it works as expected on Android. However, on iOS, the background mode is briefly displayed before closing after approximately 3 seconds.
I tested this with both the Geolocator and FlLocation packages.

This is a background limitation on the iOS platform. The README provides an explanation about this.
* If you force close an app in recent apps, the task will be destroyed immediately.
* The task cannot be started automatically on boot like Android OS.
* The task runs in the background for approximately 30 seconds every 15 minutes. This may take longer than 15 minutes due to iOS limitations.

The execution time may vary depending on the iOS version and the device's personalized security settings.

@manuelriedi I think foreground is mainly Android feature, not iOS. On iOS, it's just a mimic, using different techniques.
I successfully implemented the same feature in iOS with gps package only, geolocator or fl_location.

Config iOS side for background of gps (using Xcode)
Ask a stream for location updates from the gps package. Keep this stream but do not use result from this. This is used to keep the app alive in background.
Setup a timer to get a one time gps periodically.

I use the foreground service technique on Android, but not on iOS, to get the same result.
@all Correct me if I'm wrong.


async and get always end up as asyncget during onSave lint using StandardJS

What version of this package are you using?
"standard": "^14.3.1",
What operating system, Node.js, and npm version?
Win10, Node v12.2.0, npm v6.9.0
What happened?
Within VSCode, which has configured onSave to lint using StandardJS based on package.json (non-global), for the code below it always concatenates async and get as asyncget
export const actions = {
   async get({
    commit,
    state
  }, id) {
    const response = {}
    try {
      response.result = await this.$axios.$get(`/api/room/get?id=${id}`)
    } catch (err) {
      handleError(err, commit)
      response.hasError = true
    }
    return response
  },
}

turns into:
export const actions = {
   asyncget({
    commit,
    state
  }, id) {
    const response = {}
    try {
      response.result = await this.$axios.$get(`/api/room/get?id=${id}`)
    } catch (err) {
      handleError(err, commit)
      response.hasError = true
    }
    return response
  },
}

This only happens for combination async and get. If the method is called Get or any other name, this weird concatenation doesn't happen
What did you expect to happen?
It should not concatenate thos two keywords.
Are you willing to submit a pull request to fix this bug?
Not sure how to fix this

@gjovanov thank you for the report.
Could you please check something for me?
I'd like to ask you to try and see whether standard --fix results in the same malformed code.

Another thing for us to test: does updating to the latest eslint (within standard) fix the issue?

Hi @mightyiam and @feross ,
standard --fix doesn't produce this issue.
eslint was already to it latest version.
Here is the .eslintrc.js file:
module.exports = {
  root: true,
  env: {
    browser: true,
    node: true
  },
  parserOptions: {
    parser: 'babel-eslint'
  },
  plugins: ['import', 'standard'],
  extends: ['@nuxtjs', 'plugin:nuxt/recommended', 'standard'],
  // add your custom rules here
  rules: {
    'nuxt/no-cjs-in-config': 'off',
    'no-console': 'off'
  }
}

Here is the VS workspace config I'm using (wspace.conde-workspace):
{
	"folders": [
		{
			"path": "."
		}
	],
	"settings": {
    "files.eol": "\n",
    "editor.formatOnPaste": false,
    "javascript.validate.enable": false,
    "eslint.validate": [{
        "language": "vue",
        "autoFix": true
      },
      {
        "language": "html",
        "autoFix": true
      },
      {
        "language": "javascript",
        "autoFix": true
      }
    ],
    "files.autoSave": "off",
    "standard.autoFixOnSave": true,
    "terminal.integrated.windowsEnableConpty": false,
    "standard.usePackageJson": true,
    "standard.run": "onSave"
  }
}

And here are the package.json versions:
{
  ...
  "standard": {
    "env": [
      "browser",
      "node"
    ],
    "ignore": [
      "ui/lib/**/*.js"
    ]
  },
  "devDependencies": {
    ...
    "@babel/core": "^7.6.0",
    "@babel/preset-env": "^7.6.0",
    "@babel/register": "^7.6.0",
    "@nuxtjs/eslint-config": "^1.1.2",
    "@nuxtjs/eslint-module": "^1.0.0",
    "babel-eslint": "^10.0.3",
    "babel-plugin-istanbul": "^5.2.0",
    "eslint": "^6.5.1",
    "eslint-config-standard": "^14.1.0",
    "eslint-plugin-import": "^2.18.2",
    "eslint-plugin-node": ">=10.0.0",
    "eslint-plugin-nuxt": ">=0.4.3",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-standard": ">=4.0.1",
    "eslint-plugin-vue": "^5.2.3",
    "standard": "^14.3.1"
    ...
  }
}

Maybe you see something that I'm doing wrong?
Thanks.

@gjovanov thank you for the input. Could you please try to run npx eslint --fix that-file.js on a file that has that async get that gets wrongly autofixed in VSCode? I'd like to know whether the wrong auto-fix would be applied. If it did get applied, could you try again after having removed 'standard' from the extends of the ESLint config?

Hey everyone, I tried that but it didn't produce reported issue. This made me suspect that the issue is not related to StandardJS/ESLint.
Basically, I had many VSCode extensions installed (with formatting options) and started to clean them up one by one. And disabled default JS/TS formatter
At the end, it seems that when I removed ESList extension, the issue wasn't happening, but neither formatting was happening. After enabling ESLint extension (with default JS/TS formatter being disabled), the issue has disappeared.
So a lot of smoke for nothing.
Sorry about that. And thanks for your responsiveness!
Closing...

Thank you for following through, @gjovanov.

i had the same problem, and as @ymc-stewart-ridgway said the responsible was "JS-CSS-HTML Formatter"


Smoketesting storybook [question]

Are there any mechanism provided, either at build-time or runtime to check that each story renders without errors? As part of our CI, we build storybook on Travis and then deploy to Github pages—if a story breaks somehow (easily done) then we end up deploying a broken storybook application.
Currently, we are running the storybook app on Travis and then using webdriver.io (Selenium) to navigate to each story and check for errors. However, due to the way storybook renders the menu, it's really hard to parse for "links" (there are none, just divs) to stories when using "nested" stories.
The closest thing I can see is using storyshots to render each story—is there anything else?

There is a --smoke-test option for start-storybook in 3.3.0-alpha, but looks like it doesn't serve your needs: it just checks that compilation is successful
I'll look into how menu items are rendered and probably will add some data attributes

@Hypnosphi Awesome, that would be really helpful 👍

By the way, you can obtain the stories tree in runtime:
import {getStorybook} from '@storybook/react`;

const stories = getStorybook();

And then form the links using ?selectedKind=<kind>&selectedStory=<story> pattern

add some data attributes
In fact they are already present, it's data-name

@hamishtaplin I wonder what in storyshots made you look for something else.
Storyshots will assure you all stories render exactly as before. If anything changes, it will fail.
Sounds like that's what you wanted?

You can use storyshots to do exactly this, with the renderOnly test body.


merging overlapping/touching IP-blocks

[ ]               Please open an issue on merging overlapping/touching IP-blocks. It can improve results here. E.g., replacing <IP_ADDRESS>/16,<IP_ADDRESS>/16 with <IP_ADDRESS>/15
Originally posted by @zivnevo in https://github.com/np-guard/vpc-network-config-analyzer/pull/95#discussion_r1254196729

[ ] grouping of ip-blocks should be always applied

[ ] ip-blocks grouped output should be in resolution of nodes slice or a single node, depending on the output format (drawio requires single node per ip-block).

2nd item solved by #119

3rd item solved by #132


TEST - Future request: List of Coaching volunteers

[ ] #263 Future request: text entry box for name and contact info, specialty, fee?

###_Severity (1):
###_Priority (1):
###_Synopsis - Possible list of people interested in coaching, tutoring, interview practice, etc. to logged-in members
###_Expected Behavior - List names and contact info and what they would be available for, and if they have cost or not.

[ ] create form for user input: name, contact info, specialty, fee charged?

[ ] design the page that will list the volunteers


DescribeCommand - use our Differ wrapper class, not external one directly

Like we do on 2.2 line.

ah, accidentally already merged into 2.11, not 2.10. fixing the milestone.
good idea Julien, I was just too fast :(
in the end, no big deal, 2.10 is not LTS and gonna be dropped soon

Actually, I couldn't use 2.10. as 2.10 is using diff 1.2 and only master is using 1.3, so master was only possible choice :D

But the UnifiedDiffer class already exists on 2.10, so it should be possible anyway, as the diff dependency is wrapped in this class, no?

ha, good point ;)

but it had different implementation, so 2.10 would be a BC break ;)

we don't have BC promise on txt output of any command.


feat: Add IconPrefix and IconSuffix components

Summary
Related Issues or PRs
closes #1235
How To Test

In your app, import InputPrefix or InputSuffix. It must be inside an element that has the usa-input-group class, as well as adjacent to a TextInput to render properly. The children are also not optional - you should see ts errors when the components are used like so: <InputSuffix></InputSuffix>.
    <div className="usa-input-group">
      <TextInput ... />
      <InputSuffix>lbs.</InputSuffix>
    </div>

Both InputSuffix and InputPrefix will render text or icons.

Screenshots (optional)

Screenshots

@jenbutongit Not sure if you have permissions to merge into this branch, or if a maintainer has to do it. Feel free to if you can. Otherwise I will, if that will still allow it to count for Hacktoberfest. Please let me know 😄

Done! @jenbutongit, please let me know if this worked alright for you!

@brandonlenz yep - well, I think so. It's showing up as in progress on the hacktoberfest app (they get refreshed every few days) 🙂. I've replied on #1692 - but if you want to tag me on a small feature I'm happy to take a look there as well 👻🎃.


window.WEBVIEW_SERVER_URL is inaccurate for cordova android 10 and causing problems with convertFileSrc

The window.WEBVIEW_SERVER_URL global variable used by convertFileSrc is no longer accurate when using cordova android 10, because cordova android 10 changed the app protocol to https. The window.WEBVIEW_SERVER_URL still has a value of http://localhost, but it should be https://localhost to match cordova android 10.
For now my workaround is to put
window.WEBVIEW_SERVER_URL = window.origin;

at the beginning of my deviceReady handler.

Closing this as I can see the scheme preference in the docs. Maybe it's worth updating the default value to https as more and more devs upgrade to cordova android 10.


Can't create unique fulltext index.

Hi,
it is possible to create a LUCENE index and an unique index on a property?
Use case: I want the power of lucene to search for my vertexes but I also want the restriction that no other vertex has the same property value.
My morkaround is: CREATE INDEX users.Id unique and then use the sql LIKE keyword.

We removed this option because OrientDB indexes were much more efficient on this.

I believe this was also reported here #3354 (which, aparently, it's not considered a bug anymore).
I don't understand why the index is not triggered if I explicitly write LUCENE.


Deploying Conductor with HA and DR in mind

Hi, I'm trying to wrap my head around how one should deploy Conductor.
I would like to deploy the Conductor as active-active across 3 k8s clusters. That is, I would like to have the same amount of all workers in 3 different k8s clusters.
My 2 goals are:

Have the workload distributed as much as possible across 3 AZs
Be able to recover from an AZ failing. Not just restarting, but completely going down for an unknown amount of time.

From my understanding, I should deploy 3 Dynomite nodes in each of those 3 k8s clusters (total of 9) and one Conductor node in each k8s cluster with the conductor's EC2_AVAILABILITY_ZONE setting set to that zone's name (3 total). Using a Dynomite config similar to this.
I also have a microservice similar to Schellar (mentioned in RELATED.md) which will either need to be active-passive or active-active (and implement workload sharding) depending on whether workflow.dyno.queue.sharding.strategy is roundRobin or localOnly. I prefer roundRobin but also fine with localOnly as long as my 2 main goals are reached.
Assuming  workflow.dyno.queue.sharding.strategy is roundRobin:
I have read #1246 and #1278 and faced the same issues where only 1/3 of the tasks are pulled. I have read @apanicker-nflx answer here and here and don't seem to understand what the structure should be. Are you saying that I should deploy Dynomite, Conductor, all the workers and scheduling microservice, say in us-east-1c, then along with Dynomite in us-east-1d and us-east-1e I should have one Conductor node and then have the workers in us-east-1c poll from the Conductor in us-east-1c, us-east-1d, and us-east-1e?
Why not deploy an equal amount of workers across all 3 AZs and make the scheduling microservice active-pasive-pasive? (Goal 1)
Assuming I can deploy all the workers equally across 3 AZs and deploy the scheduling microservice as active-passive-passive, how, if at all, can I continiue executions if one AZ goes completly down (not just restarts)? (Still assuming workflow.dyno.queue.sharding.strategy is roundRobin) An important point is that my workflows don't take very long to run and I am completly fine letting them time out, after all, an entire AZ has just failed, but the next time my scheduling microservice schedules them (which it won't untill they time out thanks to WorkflowStatusListener) I'll want the system to work properly, perhaps a little overloaded, but still work. (Goal 2).
Now if I can't do that, we'll assume workflow.dyno.queue.sharding.strategy is localOnly.
If I shard my workloads properly, could I deploy basically everything as stated above except my scheduling microservice is now active-active-active?
I'll also need to detect AZ failiures and reassign tokens for workload sharding to my scheduling microservice to achieve goal 2. Am I breaking anything or should I expect any problems with Conductor, Dynomite, or dyno-queues when doing that?
Thanks to anyone in advance who helps me here.
Notes:

I won't actually be using aws.
I am not using dynomite-manager, I will implement my own with similar functionallity.
If a Dynomite node fails and restarts (crashed, evicted by k8s, etc...) it will come back up with the same tokem configured as well as the same host name / same k8s load balancer host and port . It'll then warm up from another node with the same token from another AZ. If all other racks can't be reached (assuming they are down and the network is fine) the node will try to restore from a backup. If that fails. It'll assume this is the first ever node with this token in the system.
If an entire AZ fails and restart, each one of the Dynomite nodes will preform 3.

P.S.
Is there a way to not use the AWS naming scheme? What are all the relevant settings names (the equivalent of EC2_AVAILABILITY_ZONE for example)?

Are you saying that I should deploy Dynomite, Conductor, all the workers and scheduling microservice, say in us-east-1c, then along with Dynomite in us-east-1d and us-east-1e I should have one Conductor node and then have the workers in us-east-1c poll from the Conductor in us-east-1c, us-east-1d, and us-east-1e?

Because of the limitation imposed by dyno-queues, you would need to install dynomite in 3 AZs alongwith the Conductor server in 3 AZs. However your workers and the scheduling microservice(I assume you use this to start workflows) need not be in all of the AZs as long as the interaction between Conductor and your workers/scheduling service is done using a DNS resolver and not using instance IPs.

@apanicker-nflx assuming my scheduling microservice shards my workload properly, could I set the dyno queues to localOnly and basically have each AZ do 1/3 of the work? (Each AZ has it's own set of workers that'll be polling only from the local to them conductor, what I've explained above)

Hey @TwoUnderscorez
We have recently been investigating HA deployment of conductor + dynomite too.
Long story short, we have decided to move away from dynomite as a primary database in favor of RDBMS  (MySQL or PSQL).
The deployment difficulties and operational aspects of dynomite were just not worth it (also considering it is no longer actively maintained).
Comparing performance of Dynomite vs PSQL in a workflow specific to us, we have measured following throughput:

single dynomite, single conductor with 4 workers  ==  684 WFs per minute
single psql node, single conductor with 4 workers  ==  564 WFs per minute

So the performance hit of using PSQL was lower than expected, considering there is extensive locking going on in PSQL. And overall, the functionality and performance when using PSQL seemed totally OK.
Regarding MySQL vs PSQL: Even though the implementation in conductor is almost identical, we have found that the performance of PSQL was superior (with default configuration for MySQL and PSQL). Also, there are superior tools to deploy and manage PSQL clusters in kubernetes (https://github.com/zalando/patroni, postgres-operator) when compared to MySQL.
Right now we are developing a deployment including PSQL in kubernetes:

PSQL : 1 active node, 2+ standby nodes (patroni managing the cluster and performing failover)
Conductor: N active nodes, all connected to the active PSQL node
Workers: N workers, can talk to Conductor nodes round robin

Note: We have used this patch in conductor when testing PSQL performance: https://github.com/Netflix/conductor/pull/1940
Note2: The nice thing about using RDBMS is that you should be able to use a database provided and managed by your cloud provider (which is not possible with dynomite).

@marosmars thanks for sharing!
I'll definitely check out patroni and RDBMS persistence.
By the way, according to #1763 dynomite is still being maintained.

@TwoUnderscorez thanks for sharing info regarding dynomite. But the activity in dynomite seems very low (just 3 PRs merged during 2020). And also, I believe netflix is no longer using dynomite as the backend for conductor ... at least not for the queues.


Arel::Visitors::MySQL doesn't parenthesize UNION ALL chains properly

shouldn't #58 apply to UNION ALL as well?

Per #523, Arel development is moving to rails/rails.
If this issue is still relevant, please consider reopening it over there. (Note that the Rails repository does not accept feature request issues, and requires reproduction steps that rely on Active Record's documented API.)

Fix has been applied to Rails

rails/rails@63dd8d8e12edb25d8d5bac324aacb1caf05bbe22


[jsoncons] Update to version 0.162.0

Describe the pull request
Update jsoncons to version 0.162.0

What does your PR fix? Fixes #

#279
#280
#284
#285
#306
Includes change to CMakeFiles.txt that hopefully addresses vcpkg build issue.

Which triplets are supported/not supported? Have you updated the CI baseline?

All are supported. CI baseline has been updated.

Does your PR follow the maintainer guide?

Yes

you need to run
./vcpkg x-add-version jsoncons

and commit the modifications to the baseline to fix also x86-windows regression

you need to run
./vcpkg x-add-version jsoncons

and commit the modifications to the baseline to fix also x86-windows regression

Thanks! now done.

can you also prefix PR linked in the opening message with your own repo? Otherwise, it's linking to vcpkg issues which are completely unrelated...

can you also prefix PR linked in the opening message with your own repo?

Fixed

Thanks for the update!

@danielaparker
the new update fails on me because of:
[3/106] /usr/bin/c++  -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/include -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/tests -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/third_party -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/third_party/catch -fPIC -g -Werror -Wall -Wextra -Wcast-align -Wcast-qual -Wimplicit-fallthrough -pedantic -MD -MT tests/CMakeFiles/unit_tests.dir/bson/src/bson_cursor_tests.cpp.o -MF tests/CMakeFiles/unit_tests.dir/bson/src/bson_cursor_tests.cpp.o.d -o tests/CMakeFiles/unit_tests.dir/bson/src/bson_cursor_tests.cpp.o -c /mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/tests/bson/src/bson_cursor_tests.cpp
FAILED: tests/CMakeFiles/unit_tests.dir/bson/src/bson_cursor_tests.cpp.o
/usr/bin/c++  -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/include -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/tests -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/third_party -I/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/third_party/catch -fPIC -g -Werror -Wall -Wextra -Wcast-align -Wcast-qual -Wimplicit-fallthrough -pedantic -MD -MT tests/CMakeFiles/unit_tests.dir/bson/src/bson_cursor_tests.cpp.o -MF tests/CMakeFiles/unit_tests.dir/bson/src/bson_cursor_tests.cpp.o.d -o tests/CMakeFiles/unit_tests.dir/bson/src/bson_cursor_tests.cpp.o -c /mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/tests/bson/src/bson_cursor_tests.cpp
In file included from /mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/include/jsoncons_ext/bson/bson.hpp:17,
                 from /mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/tests/bson/src/bson_cursor_tests.cpp:10:
/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/include/jsoncons_ext/bson/bson_encoder.hpp: In instantiation of ‘bool jsoncons::bson::basic_bson_encoder<Sink, Allocator>::visit_uint64(uint64_t, jsoncons::semantic_tag, const jsoncons::ser_context&, std::error_code&) [with Sink = jsoncons::bytes_sink<std::vector<unsigned char> >; Allocator = std::allocator<char>; uint64_t = long unsigned int]’:
/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/include/jsoncons_ext/bson/bson_encoder.hpp:396:10:   required from here
/mnt/vcpkg/buildtrees/jsoncons/src/a2ab3dead7-a018935420.clean/include/jsoncons_ext/bson/bson_encoder.hpp:434:25: error: comparison of integer expressions of different signedness: ‘uint64_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
  434 |                 if (val <= (std::numeric_limits<int32_t>::max)())
      |                     ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors

gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

@cenit
Can you post an issue at https://github.com/danielaparker/jsoncons/issues? Thanks!


Change project member REST API

Change project member REST API, remove the previous API
Change UI to call new project member REST API

Coverage increased (+3.2%) to 67.465% when pulling 1c4f49ddb51ed81d580aaa9bf7d14ab42c380967 on stonezdj:change_rest_api_pm into e0ac6708d7e802e19385577587de23708542aee0 on vmware:master.


Provide a command to launch a new VSCode window in a matching docker container as CI for a given cross-build scenario

See https://github.com/microsoft/vscode-remote-release/issues/5171 for some breadcrumbs on how to implement this


Switch cmsis-nn and ethos-u to using OPTIMIZED_KERNEL_DIR.

This change started as a switch cmsis-nn and ethos-u to using OPTIMIZED_KERNEL_DIR. However, supporting both OPTIMIZED_KERNEL_DIR=cmsis-nn and TAGS=cmsis-nn required a lot of workarounds.
As a result, it was decided to also remove the deprecated TAGS functionality.
This change also adds a new CO_PROCESSOR command line parameter to the TFLM makefile.
Specifying CO_PROCESSOR=<c> and OPTIMIZED_KERNEL_DIR=<o> will result in the following:

tools/make/ext_libs/<o>.inc and tools/make/ext_libs/<c>.inc will be included from the Makefile
kernel sources will be specialized from both kernels/<o>.inc and kernels/<c>.inc (in that order).
the specialization order is important because it means that if the same kernel in implemented in both optimized_kernel_dir and the co_processor, then the co_processor implementation will be used.

Tested the following commands locally:
Build for cortex-m55 + reference kernels + ethos-u kernel:
make -f tensorflow/lite/micro/tools/make/Makefile -j8 TARGET=cortex_m_generic TARGET_ARCH=cortex-m55 CO_PROCESSOR=ethos-u microlite

Build for cortex-m55 + cmsis-nn kernels (as available) + ethos-u kernel:
make -f tensorflow/lite/micro/tools/make/Makefile -j8 TARGET=cortex_m_generic TARGET_ARCH=cortex-m55 OPTIMIZED_KERNEL_DIR=cmsis-nn CO_PROCESSOR=ethos-u microlite

See the discussion on https://github.com/tensorflow/tensorflow/pull/46352 for some more context.

@mansnils @njeffrie: I wasn't planning on merging this PR yet but because it had all the approvals it did get merged.
We can roll back or fix forward as needed.
I will make a PR that changes the directory names to underscores first thing tomorrow.
And I certainly wanted to chat with @njeffrie about my last change where I decided that removing support for TAGS was the way to go.
Note that I rebased and amended do that there was only a single commit from this PR to make it easier for anyone to locally roll back if needed since I am breaking backwards compatibility.

@mansnils @njeffrie: I wasn't planning on merging this PR yet but because it had all the approvals it did get merged.
We can roll back or fix forward as needed.
I will make a PR that changes the directory names to underscores first thing tomorrow.
And I certainly wanted to chat with @njeffrie about my last change where I decided that removing support for TAGS was the way to go.
Note that I rebased and amended do that there was only a single commit from this PR to make it easier for anyone to locally roll back if needed since I am breaking backwards compatibility.

@advaitjain Ok, let's get the last PR merged tomorrow.

@advaitjain Ok, let's get the last PR merged tomorrow.

rename complete with https://github.com/tensorflow/tensorflow/pull/46584

rename complete with https://github.com/tensorflow/tensorflow/pull/46584

This change started as a switch cmsis-nn and ethos-u to using OPTIMIZED_KERNEL_DIR. However, supporting both OPTIMIZED_KERNEL_DIR=cmsis-nn and TAGS=cmsis-nn required a lot of workarounds.
As a result, it was decided to also remove the deprecated TAGS functionality.

@dzakhar @JaccovG: With this PR we are no longer supporting the use of TAGS as part of the top-level TFLM Makefile. The optimized kernel implementation can be selected with OPTIMIZED_KERNEL_DIR= and for anything else the specific target / optimized kernel makefile can add additional command line options.
The diff for the Makefile in this PR will give you some more info on what has changed: https://github.com/tensorflow/tensorflow/pull/46473/files?file-filters[]=No+extension#diff-84c8d7e242143d674d6e26ab56443970ed8e1f3db0fcb1d0e8e127eaebbe1a1a
I'd be happy to help you figure out a path forward to getting the ARC platform support up and running.

This change started as a switch cmsis-nn and ethos-u to using OPTIMIZED_KERNEL_DIR. However, supporting both OPTIMIZED_KERNEL_DIR=cmsis-nn and TAGS=cmsis-nn required a lot of workarounds.
As a result, it was decided to also remove the deprecated TAGS functionality.

@dzakhar @JaccovG: With this PR we are no longer supporting the use of TAGS as part of the top-level TFLM Makefile. The optimized kernel implementation can be selected with OPTIMIZED_KERNEL_DIR= and for anything else the specific target / optimized kernel makefile can add additional command line options.
The diff for the Makefile in this PR will give you some more info on what has changed: https://github.com/tensorflow/tensorflow/pull/46473/files?file-filters[]=No+extension#diff-84c8d7e242143d674d6e26ab56443970ed8e1f3db0fcb1d0e8e127eaebbe1a1a
I'd be happy to help you figure out a path forward to getting the ARC platform support up and running.


Member Page: add active filter

Summary
As a DHO user I would like to be able to filter by active / inactive members
AC

[ ] add dropdown to filter with "active members" = members that have an active role assignment or active badge assignment in the organization
[ ] update link from homepage (xx active members) to be preselected with filter "active" on members page

@leonieherma1 Instead of sort dropdown, I guess it makes more sense to be via toggle so when you toggle its showing active? or it can be show all toggle, so then its on its showing all when off its showing only active ?

Note: Decide what the categories for "active" are:
Create Circle
- [ ] Create Subcircles
- [ ] Roles / Badges in Circles
- [ ] Members in Circles?


Enable gpu error

I install cuda and environment set,
nvidia-smi
Wed Dec  6 13:53:24 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.81                 Driver Version: 384.81                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  Off  | 00000000:2F:00.0 Off |                    0 |
| N/A   33C    P0    31W / 250W |  15553MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P100-PCIE...  Off  | 00000000:86:00.0 Off |                    0 |
| N/A   36C    P0    31W / 250W |  15479MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

pip install nervananeon

env | grep PATH
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:/usr/lib/python2.7/site-packages/mklml_lnx_2<IP_ADDRESS>71007/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs
PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

python  mnist.py -b gpu
python : error: argument -b/--backend: invalid choice: 'gpu' (choose from 'cpu', 'mkl')

I don't understand why CPU and GPU install the same package,It should be used when the GPU package is installed by TensorFlow.
pip install tensorflow-gpu

@yangyang-zhang Thanks for the feedback. We will look into this.

@yangyang-zhang   You may install the gpu requirements if you want to run on gpu backend.
https://github.com/NervanaSystems/neon/blob/master/gpu_requirements.txt
pip install pycuda, scikit-cuda, pytools

@baojun-nervana I am getting the same error even after installing all pre-req:
: error: argument -b/--backend: invalid choice: 'gpu' (choose from 'cpu', 'mkl')

@armando-fandango Can you try to install the gpu dependencies?
pip install pycuda, scikit-cuda, pytool

@baojun-nervana yes all the gpu dependencies are installed and I think my message above said that "even after installing all pre-req"

I see that in makefile you are doing this : nvcc neon/backends/util/check_gpu.c > /dev/null 2>&1 && ./a.out && rm a.out && echo true
This is always returning an empty HAS_GPU string no matter what. I compiled the check_gpu.c outside of the makefile and it compiles.
Is something fishy in above code ?

It seems you don't have nvcc compiler installed or it is not set in the PATH.
make sure "which nvcc" return right path first.

this command works and produces the a.out : nvcc neon/backends/util/check_gpu.c

It sounds it should work. Is the PATH set up right too?
export PATH="/usr/local/cuda/bin:"$PATH
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda/lib:/usr/local/lib:"$LD_LIBRARY_PATH

After reinstalling CUDA and Neon, now I am getting this error:
python3 examples/mnist_mlp.py -b gpu
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/pycuda/tools.py", line 426, in context_dependent_memoize
return ctx_dict[cur_ctx][args]
KeyError: <pycuda._driver.Context object at 0x7f7aa4360500>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "examples/mnist_mlp.py", line 88, in
num_epochs=args.epochs, cost=cost, callbacks=callbacks)
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/models/model.py", line 183, in fit
self._epoch_fit(dataset, callbacks)
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/models/model.py", line 205, in epoch_fit
x = self.fprop(x)
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/models/model.py", line 236, in fprop
res = self.layers.fprop(x, inference)
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/layers/container.py", line 395, in fprop
x = l.fprop(x, inference=inference)
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/layers/layer.py", line 1288, in fprop
bsum=self.batch_sum)
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/nervanagpu.py", line 1585, in compound_dot
kernel = kernel_specs.get_kernel("".join((clss, op, size)), vec_opt)
File "", line 2, in get_kernel
File "/usr/local/lib/python3.5/dist-packages/pycuda/tools.py", line 430, in context_dependent_memoize
result = func(*args)
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernel_specs.py", line 849, in get_kernel
run_command(maxas_i + [sass_file, cubin_file])
File "/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernel_specs.py", line 785, in run_command
raise RuntimeError("Error(%d):\n%s\n%s" % (proc.returncode, cmd, err))
RuntimeError: Error(13):
PERL5LIB=/usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernels/maxas /usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernels/maxas/maxas.pl -i -w -k sgemm_nn_32x128_vec -Dvec 1 /usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernels/sass/sgemm_nn_32x128.sass /home/armando/.cache/neon/kernels/cubin/sgemm_nn_32x128_vec.cubin
b'Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/ { <-- HERE (?5)?,?(?4)?,?(?3)?,?(?2)?,?(?1)?,?(?0)?}/ at /usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernels/maxas/MaxAs/MaxAsGrammar.pm line 239.\nUnescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^(?^:\@(?\!)?P(?[0-6]) )?DEPBAR(?^: { <-- HERE (?5)?,?(?4)?,?(?3)?,?(?2)?,?(?1)?,?(?0)?});/ at /usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernels/maxas/MaxAs/MaxAsGrammar.pm line 275.\nError: could not open /home/armando/.cache/neon/kernels/cubin/sgemm_nn_32x128_vec.cubin for writing: Permission denied at /usr/local/lib/python3.5/dist-packages/nervananeon-2.4.0-py3.5.egg/neon/backends/kernels/maxas/MaxAs/Cubin.pm line 640.\n'

Thank you, I've already solved it.


feat: ✨ Do not delete all folder without asking with -s option

Is your feature request related to a problem? Please describe.
The -s <path> option delete all the target <path> without show a prompt to validate the action.
It could be a problem when you set . as path, it will delete all the project and as it will not prompt to confirm the deletion you can't abord the operation 😅.
Describe the solution you'd like
A simple prompt asking to confirm what will be deleted.
Describe alternatives you've considered
N/A
Additional context
N/A

Will be fix in the next release

Thanks for the report and idea